How to automatically download Sentinel data from PEPS collaborative ground segment

=>

peps_download

This is a simple piece of code to automatically download the products provided by the French Sentinel collaborative ground segment named PEPS : https://peps.cnes.fr. PEPS is mirroring all the Sentinel data provided by ESA, and is providing a simplified access.

This code was written thanks to the precious help of one my colleagues at CNES Jérôme Gasperi who developed the "rocket" interface which is used by Peps.

This code relies on python 2.7 and on the curl utility. Because of that, I guess it only works with linux.

The tool is available on my github repository : https://github.com/olivierhagolle/peps_download

Examples

This software is still quite basic, but if you have an account at PEPS, you may download products using command lines like

  • python ./peps_download.py -c S2 -l 'Toulouse' -a peps.txt -d 2015-11-01 -f 2015-12-01 which downloads the Sentinel-2 products above Toulouse, acquired in November 2015.
  • python ./peps_download.py -c S2 --lon 1 --lat 43.5 -a peps.txt -d 2015-11-01 -f 2015-12-01 which downloads the Sentinel-2 products above --lon 1 --lat 43.5 (~Toulouse), acquired in November 2015.
  • python ./peps_download.py -c S1 --lonmin 1 --lonmax 2 --latmin 43 --latmax 44 -a peps.txt -d 2015-11-01 -f 2015-12-01 which downloads the Sentinel-1 products in latitude, longitude box around Toulouse, acquired in November 2015.

Authentification

The file peps.txt must contain your email address and your password on the same line, such as follows :your.email@address.fr top_secret

To get an account : https://peps.cnes.fr/rocket/#/register

 

Télécharger sans clics les données Sentinel depuis PEPS

=>

peps_download

C'est une petite routine pour télécharger automatiquement les données fournies par PEPS, le segment sol collaboratif Français pour les projets Sentinel: https://peps.cnes.fr. PEPS redistribue en miroir tous les produits Sentinel fournies par Scihub.

 

Ce code a été écrit grâce à l'aide d'un de mes collègues du CNES,  Jérôme Gasperi qui a développé l'interface Rocket qui permet de distribuer les données PEPS. Il est écrit en python 2.7 et se base sur l'utilitaire CURL Pour cette raison, il ne fonctionne que sous linux, je pense.


L'outil est disponible sur mon dépôt Github : https://github.com/olivierhagolle/peps_download

Exemples

La routine est assez basique, mais si vous avez un compte sur PEPS, vous pouvez télécharger des données avec des lignes de commande du genre :

  • python ./peps_download.py -c S2 -l 'Toulouse' -a peps.txt -d 2015-11-01 -f 2015-12-01qui télécharge les données Sentinel-2 acquises sur Toulouse, en Novembre 2015.
  • python ./peps_download.py -c S2 --lon 1 --lat 43.5 -a peps.txt -d 2015-11-01 -f 2015-12-01qui télécharge les données Sentinel-2 acquises aux coordonnées --lon 1 --lat 43.5 (~Toulouse), en Novembre 2015.
  • python ./peps_download.py -c S1 --lonmin 1 --lonmax 2 --latmin 43 --latmax 44 -a peps.txt -d 2015-11-01 -f 2015-12-01qui télécharge les données Sentinel-1 qui intersectent un rectangle en latitude, longitude autour de Toulouse, en November 2015.

Authentification

le fichier peps.txt doit contenir votre adresse email et votre mot de passe, comme ceci :

your.email@address.fr top_secret

Pour obtenir un compte : https://peps.cnes.fr/rocket/#/register

SPOT (Take5) and Theia products can now be downloaded without a click

=>

Since THEIA new Single Sign On authentication went on-line, last summer, it was not possible anymore to use a program to automatically download the products from the Take5 and Theia servers. But after insisting a little bit ( I have good insistance skills ), and with the arrival of a new version, Jerôme Gasperi invented a clever solution, easy and acceptable by CNES security.

 

Thanks to a few examples provided by Jerôme, I coded two little routines to allow you to search and download your products without any click. To use them, you will need an account and password delivered by Theia or Take5 servers, a linux system, python 2.7, the curl utility, and my little codes.

 


Take5 download tool is here and it comes with a couple of examples. To specify a location, you have to know the site same. If you do not know the exact name, you can find it here or here

python take5_download.py -s 'ToulouseFrance' -a auth_theia.txt -c SPOT5

python take5_download.py -s 'ToulouseFrance' -a auth_theia.txt -c SPOT5 -d 2015-04-01 -f 2015-05-01 -l LEVEL2A

 

Theia download tool is here. It allows to access the L2A LANDSAT data over France, and the SpotWorldHeritage L1C products. It may be used in many ways. For instance, the region to download can be specified by a town name (beware of homonyms), by the lat, lon coordinates, or by a latitude, longitude rectangle.

python theia_download.py -l 'Toulouse' -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py --lon 1 --lat 43.5 -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py --lonmin 1 --lonmax 2 --latmin 43 --latmax 44 -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py -l 'Toulouse' -a auth_theia.txt -c SpotWorldHeritage -p SPOT4 -d 2005-11-01 -f 2006-12-01

 

All these examples are explained on the github server. And you may even enhance the codes and allow any one to benefit from your enhancements.

Les produits de Theia et de Take5 peuvent être téléchargés sans clics

=>

Depuis que THEIA a introduit son système d'authentification unique au début de l'été, il n'était plus possible de se connecter par programme aux serveurs Take5 et Theia et les téléchargements automatiques n'étaient donc plus possibles. Mais à force d'insister (c'est une chose que je sais bien faire), et avec l'arrivée de la nouvelle version du serveur, cette demande a été prise en compte, et Jérôme Gaspéri, du CNES, a inventé une belle solution, à la fois pratique et acceptable par la sécurité informatique du CNES.

 

Avec l'aide d'exemples fournis par Jérôme, j'ai donc codé deux petits outils en Python pour vous permettre de reprendre des téléchargements automatiques. Pour les faire tourner, il vous faudra un login et mot de passe acquis depuis les serveurs Theia ou Take5, une machine linux, python 2.7, l'utilitaire Curl (généralement présent par défaut), et mes petits programmes.

 


L'outil pour Take5 est ici et en prime, voici quelques exemples d'utilisation. La recherche du lieu ne peut se faire que par le nom du site qu'on peut aller chercher sur le serveur Take5..

python take5_download.py -s 'ToulouseFrance' -a auth_theia.txt -c SPOT5

python take5_download.py -s 'ToulouseFrance' -a auth_theia.txt -c SPOT5 -d 2015-04-01 -f 2015-05-01 -l LEVEL2A

 

Pour Theia, l'outil est ici. Il permet d'accéder aux données LANDSAT de niveau 2A, et aux données SpotWorldHeritage, de niveau 1C,  et il peut s'utiliser de nombreuses manières. Le site peut être désigné par le nom d'une ville située dans le site (attention aux homonymes !), par ses coordonnées lat,lon, pour par la définition d'un rectangle en longitude et latitude.

python theia_download.py -l 'Toulouse' -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py --lon 1 --lat 43.5 -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py --lonmin 1 --lonmax 2 --latmin 43 --latmax 44 -a auth_theia.txt -d 2015-11-01 -f 2015-12-01

python theia_download.py -l 'Toulouse' -a auth_theia.txt -c SpotWorldHeritage -p SPOT4 -d 2005-11-01 -f 2006-12-01

 

Tous ces exemples, et la manière de s'authentifier sont expliques sur le serveur github. Et vous avez même la possibilité de les améliorer et de faire profiter tout le monde de vos améliorations.

Un programme en Python pour télécharger les données Sentinel

=>

Note : L'interface APIHUB/SCIHUB présente de nombreuses restrictions d'accès, comme par exemple le fait de n'accepter que des comptes créés avant le 21 décembre 2015. La plateforme PEPS, du CNES, fournit un accès beaucoup plus facile. J'ai créé un petit programme similaire à celui ci-dessous, pour télécharger des données sans cliquer.

 

L'interface du serveur Scihub pour les données Sentinel vous permet de faire des recherches dans le catalogue ou de télécharger les données par de simples requêtes HTTPS. Par exemple, pour rechercher les produits de S2 présents dans le catalogue, essayez simplement les exemples ci-dessous :

 

La routine Python, accessible par le lien à la fin de cet article, permet de récupérer sans un clic les données de Sentinel-1 et Sentinel-2 (et probablement bientôt Sentinel-3), depuis le site de distribution  Scihub. Vous me connaissez, je l'ai surtout testé avec Sentinel-2.

La routine Sentinel_download.py fonctionne sous linux et s'appuie sur l'utilitairede tléchargement wget. Il pourrait marcher sous windows, mais peobablemenent moyennant quelques adaptations, et je ne connais pas windows. Si quelqu'un veut le faire, le dépot de l'outil sous githuib est ouvert. L'outil similaire Landsat-download a ainsi reçu de nombreuses contributions.

 

Comme l'outil fait des recherches sur le catalogue Sentinel, ivous pouvez sélectionner les donnes par date, type, par coordonnées géographiques et même, pour Sentinel-2, par le taux de couverture nuageuse (en faisant confiance au pourcentage fourni dans les produits de niveau 1C). Le Readme file sur le depot Github donne de nombreux exemples, ici, je n'en fournis qu'un :

python  Sentinel_download.py -s S2 --latmin 43 --latmax 46 --lonmin -1 --lonmax 2 -a apihub.txt -o 94 -m 25 -d 20151206

 

Et voici ce que signifient les options :

  • -s définit le satellite (S2, S2A, S2B, S1, S1B)
  • --latmin 43 --latmax 46 --lonmin -1 --lonmax 2 definit un rectangle en degrés décimaux avec lequel les produits doivent avoir une intersection (vous pouvez aussi demander un point avec les options --lat et --lon)
  • - a apihub.txt fournit le compte et mot de passe d'authentification (guest guest ne fonctionne que pour les consultations du catalogue)

  • -o est le numéro de trace (si vous n'en voulez qu'une)

  • -m 25 est le pourcentage maximal de nuages accepté (25%)

  • -d 20151206 est le début de la période (le 6 décembre), et le téléchargement des données va jusqu'à la date courante, à moins que vous n'utilisiez l'option -f pour définir la date finale avec l'option -f

 

Donc, pour utiliser cet outil, allez le cloner sur le dépôt github de sentinel-download.

 

A python module for batch download of Sentinel data from ESA

=> 

Note : the apihub is only accessible for those of you who submitted an account before the 21st of December. As a result, it is much easier to download the Sentinel- products at CNES PEPS facility. To access the data within PEPS, I have written a similar program to the one described below .

 

The Sentinel Scihub interface lets you search the catalog or download Sentinel data through a simple https request. For instance, to search all the S2 products within the catalog, just try the following URLs :

 

To select all the products which contain Toulouse :

  • you may login with your own Scihub account or with "guest", "guest"
  • All you need to know are your site  Lat, Lon (in this order) coordinates.

To select all the products which contain Toulouse ingested in the catalog after the first of December :

 

The Python routine, provided via the link at the end of this post, enables batch downloads of Sentinel-1 and Sentinel-2 (and probably soon Sentinel-3), from ESA distribution website. You know me, I have mostly tested it with Sentinel-2.

Sentinel_download runs on linux and it relies on the wget download utility. It might work on windows, probably with adaptations, but I do not know windows. If someone is willing to contribute, the software repository on github is open. That's what happened with the Landsat-download tool.

 

As the tool performs catalog searches, you can select the data by date, type, location, and even, for Sentinel-2, cloud percentage (if you trust ESA L1C cloud percentage). The readme file shows several examples, here, I'll only provide one :

 

python  Sentinel_download.py -s S2 --latmin 43 --latmax 46 --lonmin -1 --lonmax 2 -a apihub.txt -o 94 -m 25 -d 20151206

Here is the meaning of the options :

  • -s defines the satellite (S2, S2A, S2B, S1, S1, S1B)
  • --latmin 43 --latmax 46 --lonmin -1 --lonmax 2 define the bounding box in degrees (you can also only specify a point with --lat and --lon options)
  • - a apihub.txt provide the authentification to the website (guest guest still works)

  • -o is the path number (if you only want that one)

  • -m 25 is the maximum accepted cloud percentage to download (25%)

 

  • -d 20151206 is the start date of the period, and the download goes until now, unless you specify the final date (with -f option)

So, if you want to use this tool, get it from the github repository of sentinel-download.

 

Les coefficients SMAC pour la correction atmosphérique de Sentinel-2A sont disponibles

=>

Les coefficients SMAC pour la correction atmosphérique des images Sentinel-2A ont été calculés et ajoutés à la collection du CESBIO. Cette fois, les coefficients ont été calculés par le service Physique de la Mesure Optique du CNES. Si vous les utilisez, n'oubliez donc pas de remercier le CNES et le CESBIO.

 

Comme je l'ai dit dans un ancien article :

Le Simplifié Modèle d'Atmosphérique Correction (SMAC) est parfaitement adapté à l'implémentation rapide et moyennement précise de corrections atmosphériques. Il utilise des fonctions analytiques dérivées du modèle 5S. Les 49 coefficients de ce modèle sont ajustés à partir de simulations de transfert radiatif obtenues avec le modèle 6S (l'ancienne version, pas la récente version vectorielle). SMAC n'est pas un modèle très précis (beaucoup moins que MACCS), et il faut lui fournir des données auxiliaires pour l'épaisseur optique des aérosols ou pour les contenus atmosphériques en ozone et vapeur d'eau. Quand ces données sont précisément connues, la précision des simulations est en général meilleure que deux à trois pour cent, sauf parfois pour les grands angles (au dessus de 70°) ou dans de fortes bandes d'absorption et si on ne prend pas en compte les effets d'environnement et les effets de pente.

 

Nous mettons aussi à disposition un code en python qui utilise ces coefficients. Ce code est décrit et distribué ici.


References

[1] Rahman, H., & Dedieu, G. (1994). SMAC: a simplified method for the atmospheric correction of satellite measurements in the solar spectrum. REMOTE SENSING, 15(1), 123-143.
"[2]"Tanré, D., Deroo, C., Duhaut, P., Herman, M., Morcrette, J. J., Perbos, J., & Deschamps, P. Y. (1990). Technical note Description of a computer code to simulate the satellite signal in the solar spectrum: the 5S code. International Journal of Remote Sensing, 11(4), 659-668.
"[3]"Vermote, E. F., Tanré, D., Deuze, J. L., Herman, M., & Morcette, J. J. (1997). Second simulation of the satellite signal in the solar spectrum, 6S: An overview. Geoscience and Remote Sensing, IEEE Transactions on, 35(3), 675-686.>
"[4]"Kotchenova, S. Y., Vermote, E. F., Matarrese, R., & Klemm Jr, F. J. (2006). Validation of a vector version of the 6S radiative transfer code for atmospheric correction of satellite data. Part I: Path radiance. Applied Optics, 45(26), 6762-6774.
"[5]"Kotchenova, S. Y., & Vermote, E. F. (2007). Validation of a vector version of the 6S radiative transfer code for atmospheric correction of satellite data. Part II. Homogeneous Lambertian and anisotropic surfaces. Applied Optics, 46(20), 4455-4464.