Quiero poder automatizar o descargar por lotes los datos de Sentinel (en particular, S2).
Estoy tratando de usar el protocolo OData como se describe en la guía del usuario de Sentinels Scientific Data Hub sobre API y secuencias de comandos por lotes . Como ejemplo, trato de descargar un producto completo usando wget:
wget --no-check-certificate --user=username --password=usrpass "https://scihub.copernicus.eu/apihub/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"
(Con un nombre de usuario y contraseña registrados) pero acabo de recibir el 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>
Sin embargo, si pongo la consulta URI https://scihub.copernicus.eu/dhus/odata/v1/Products%28'18f7993d-eae1-4f7f-9d81-d7cf19c18378'%29/$value
directamente en el navegador, descarga el archivo zip del producto.
También intenté usar curl como se describe en una respuesta a esta pregunta
curl -u username:usrpass -JO "https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"
pero me sale el error
Advertencia: ¡el nombre de archivo remoto no tiene longitud!
Todavía no puedo acceder al APIhub, solo al centro científico, (aunque un colega con acceso a APIhub también lo ha intentado y tuvo el mismo problema). Puedo utilizar la interfaz gráfica de usuario de Science Hub para descargar datos de forma interactiva, pero me gustaría poder automatizar el proceso. Hay scripts de python de terceros y scripts de shell, pero muchos usan el hub API, y me gustaría entender lo que estoy haciendo para poder desarrollar scripts específicos.
fuente
Respuestas:
Recibí ayuda de un desarrollador de aplicaciones en JNCC. Publicaré su respuesta aquí para ayudar a otros.
Mi problema era que antes necesitaba escapar del personaje $
value
. entonces el comando wget debería leer (usando el apihub, que podría reemplazar con dhus):O para usar curl, su comando sugerido fue:
fuente
curl
método funciona para mí, pero recibo un error de autenticación cuando lo usowget
.Una buena alternativa al Scihub oficial son los datos reflejados de Sentinel-2 en Amazon Web Services.
Sentinel-2 en AWS
Esto tiene la ventaja de un mejor tiempo de actividad y los productos ya están guardados en sus mosaicos MGRS, lo que hace que la descarga sea mucho más rápida.
Los datos se almacenan en un depósito público con el esquema
tiles/[UTM code]/latitude band/square/[year]/[month]/[day]/[sequence]/DATA
. Esto hace que la descarga iterativa y programada de todas las escenas disponibles en un área sea muy fácil.Si está interesado en la búsqueda programática y la descarga de datos desde Scihub, también puede usar la herramienta Python Sentinelsat .
fuente
Sugeriría utilizar la API sentinelsat Python para esto. Especialmente si su objetivo es la descarga por lotes.
Vea a continuación un código de ejemplo para descargar Sentinel- 2 (Código ejecutado desde Spyder)
Para su información, si está buscando datos en todo el país, divida el AOI en archivos de forma más pequeños, ya que tuve este problema en el que no arrojó resultados cuando mi AOI era demasiado grande.
Lea esto para obtener más información: https://buildmedia.readthedocs.org/media/pdf/sentinelsat/master/sentinelsat.pdf
También hay opciones para la descarga por lotes de Sentinel-1 también.
fuente