Je souhaite pouvoir automatiser ou télécharger par lots les données Sentinel (en particulier S2).
J'essaie d'utiliser le protocole OData tel que décrit dans le guide de l'utilisateur de Sentinels Scientific Data Hub sur les API et les scripts par lots . Par exemple, j'essaie de télécharger un produit complet en utilisant wget:
wget --no-check-certificate --user=username --password=usrpass "https://scihub.copernicus.eu/apihub/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"
(Avec un nom d'utilisateur et un mot de passe enregistrés) mais je viens de recevoir le fichier index.html:
<?xml version='1.0' encoding='utf-8'?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="https://scihub.copernicus.eu/dhus/odata/v1/"><id>https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')</id><title type="text">S1A_IW_SLC__1SDV_20141023T172123_20141023T172150_002960_0035D1_9743</title><updated>2014-12-07T17:06:00.324Z</updated><category term="DHuS.Product" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')" rel="edit" title="Product"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value" rel="edit-media" type="application/octet-stream"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/Products" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products" title="Products" type="application/atom+xml;type=feed"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/Nodes" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Nodes" title="Nodes" type="application/atom+xml;type=feed"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/Attributes" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Attributes" title="Attributes" type="application/atom+xml;type=feed"/><link href="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/Class" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Class" title="Class" type="application/atom+xml;type=entry"/><content type="application/octet-stream" src="Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"/><m:properties><d:Id>18f7993d-eae1-4f7f-9d81-d7cf19c18378</d:Id><d:Name>S1A_IW_SLC__1SDV_20141023T172123_20141023T172150_002960_0035D1_9743</d:Name><d:ContentType>application/octet-stream</d:ContentType><d:ContentLength>8544532822</d:ContentLength><d:ChildrenNumber>2</d:ChildrenNumber><d:Value m:null="true"/><d:CreationDate>2014-12-07T17:06:00.324</d:CreationDate><d:IngestionDate>2014-12-07T17:06:00.324</d:IngestionDate><d:EvictionDate m:null="true"/><d:ContentDate m:type="DHuS.TimeRange"><d:Start>2014-10-23T17:21:23.23</d:Start><d:End>2014-10-23T17:21:50.495</d:End></d:ContentDate><d:Checksum m:type="DHuS.Checksum"><d:Algorithm>MD5</d:Algorithm><d:Value>C4415763B3198B7A2874C2A60B2CDCDC</d:Value></d:Checksum><d:ContentGeometry><gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326" xmlns:gml="http://www.opengis.net/gml">
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>41.289764,6.891860 41.685265,9.900283 40.048470,10.244140 39.652199,7.311233 41.289764,6.891860</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon></d:ContentGeometry><d:Metalink><metalink xmlns="urn:ietf:params:xml:ns:metalink"><file name ="S1A_IW_SLC__1SDV_20141023T172123_20141023T172150_002960_0035D1_9743.zip"><url>https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value</url></file></metalink></d:Metalink></m:properties></entry>
Cependant, si je mets la requête URI https://scihub.copernicus.eu/dhus/odata/v1/Products%28'18f7993d-eae1-4f7f-9d81-d7cf19c18378'%29/$value
directement dans le navigateur, il télécharge le fichier zip du produit.
J'ai également essayé d'utiliser curl comme décrit dans une réponse à cette question
curl -u username:usrpass -JO "https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"
mais je reçois l'erreur
Avertissement: le nom de fichier distant n'a pas de longueur!
Je ne peux pas encore accéder à l'APIhub, uniquement au hub scientifique, (bien qu'un collègue ayant accès à l'APIhub ait essayé cela aussi et ait eu le même problème). Je suis capable d'utiliser l'interface graphique du hub scientifique pour télécharger de manière interactive des données, mais j'aimerais pouvoir automatiser le processus. Il existe des scripts python et des scripts shell tiers, mais beaucoup utilisent le concentrateur d'API, et j'aimerais comprendre ce que je fais pour pouvoir développer des scripts spécifiques.
la source
Réponses:
J'ai reçu l'aide d'un développeur d'applications chez JNCC. Je posterai leur réponse ici pour aider les autres.
Mon problème était que j'avais besoin d'échapper au caractère $ auparavant
value
. donc la commande wget devrait lire (en utilisant l'apihub, que vous pouvez remplacer par dhus):Ou pour utiliser curl, sa commande suggérée était:
la source
curl
méthode fonctionne pour moi, mais j'obtiens une erreur d'authentification lors de l'utilisationwget
.Une bonne alternative au Scihub officiel est les données en miroir Sentinel-2 sur Amazon Web Services.
Sentinel-2 sur AWS
Cela a l'avantage d'une meilleure disponibilité et les produits sont déjà enregistrés dans leurs tuiles MGRS, ce qui rend le téléchargement beaucoup plus rapide.
Les données sont stockées dans un compartiment public avec le schéma
tiles/[UTM code]/latitude band/square/[year]/[month]/[day]/[sequence]/DATA
. Cela rend le téléchargement itératif et scripté de toutes les scènes disponibles sur une zone très facile.Si vous êtes intéressé par la recherche par programme et le téléchargement de données depuis Scihub, vous pouvez également utiliser l'outil Python Sentinelsat .
la source
Je suggérerais d'utiliser l'API sentinelsat Python pour cela. Surtout si votre objectif est le téléchargement par lots.
Veuillez voir ci-dessous un exemple de code pour le téléchargement de Sentinel-2 (code exécuté depuis Spyder)
Pour info, si vous recherchez des données à l'échelle nationale, divisez l'AOI en fichiers de formes plus petits car j'ai eu ce problème où il ne retournait aucun résultat lorsque mon AOI était trop grand.
Lisez ceci pour plus d'informations: https://buildmedia.readthedocs.org/media/pdf/sentinelsat/master/sentinelsat.pdf
Il existe également des options pour le téléchargement par lots de Sentinel-1.
la source