Mengunduh produk sentinel menggunakan API?

11

Saya ingin dapat mengotomatiskan atau mengunduh data Sentinel (khususnya S2).

Saya mencoba menggunakan protokol OData seperti yang dijelaskan dalam panduan pengguna Sentinels Scientific Data Hub tentang API dan skrip batch . Sebagai contoh saya mencoba mengunduh produk lengkap menggunakan wget:

wget --no-check-certificate --user=username --password=usrpass "https://scihub.copernicus.eu/apihub/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"

(Dengan nama pengguna dan kata sandi terdaftar) tetapi saya baru saja menerima 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>&lt;gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326" xmlns:gml="http://www.opengis.net/gml">
   &lt;gml:outerBoundaryIs>
      &lt;gml:LinearRing>
         &lt;gml:coordinates>41.289764,6.891860 41.685265,9.900283 40.048470,10.244140 39.652199,7.311233 41.289764,6.891860&lt;/gml:coordinates>
      &lt;/gml:LinearRing>
   &lt;/gml:outerBoundaryIs>
&lt;/gml:Polygon></d:ContentGeometry><d:Metalink>&lt;metalink xmlns="urn:ietf:params:xml:ns:metalink">&lt;file name ="S1A_IW_SLC__1SDV_20141023T172123_20141023T172150_002960_0035D1_9743.zip">&lt;url>https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value&lt;/url>&lt;/file>&lt;/metalink></d:Metalink></m:properties></entry>

Namun, jika saya menempatkan kueri URI https://scihub.copernicus.eu/dhus/odata/v1/Products%28'18f7993d-eae1-4f7f-9d81-d7cf19c18378'%29/$valuelangsung ke browser, ia mengunduh file zip produk.

Saya juga mencoba menggunakan ikal seperti yang dijelaskan dalam jawaban untuk pertanyaan ini

curl -u username:usrpass -JO "https://scihub.copernicus.eu/dhus/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/$value"

tapi saya mendapatkan kesalahan

Peringatan: Nama file jarak jauh tidak memiliki panjang!

Saya belum dapat mengakses APIhub, hanya hub sains, (meskipun seorang rekan dengan akses APIhub telah mencobanya juga dan memiliki masalah yang sama). Saya dapat menggunakan hub sains gui untuk mengunduh data secara interaktif tetapi ingin mengotomatiskan prosesnya. Ada skrip python pihak ketiga dan skrip shell di sekitar, tetapi banyak menggunakan hub API, dan saya ingin memahami apa yang saya lakukan sehingga saya dapat mengembangkan skrip tertentu.

Colabean
sumber
Apakah Anda menggunakan versi wget yang dikompilasi dengan dukungan ssl? Kalau tidak ssl tidak akan bekerja.
Matte
Saya tidak yakin, saya pikir itu adalah default dengan ubuntu 14. (wget -V GNU Wget 1.15 dibangun di linux-gnu. + Intisari + https + ipv6 + iri + file besar + nls + ntlm + opie + ssl / openssl ) (Kompilasi: gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC = "/ etc / wgetrc" -DLOCALEDIR = "/ usr / share / locale" -I. -I ../../ src -I ../ lib -I ../ ../lib -D_FORTIFY_SOURCE = 2 -I / usr / sertakan -g -O2 -fstack-protector --param = ssp-buffer-size = 4 -Wformat -Werror = format-keamanan -DNO_SSLv2 -D_FILE_OFFSET_BITS = 64 -g - Wall)
Colabean
Itu bukan masalah maka karena Anda memiliki + ssl / openssl.
Matte

Jawaban:

7

Saya menerima bantuan dari pengembang aplikasi di JNCC. Saya akan memposting jawaban mereka di sini untuk membantu orang lain.

Masalah saya adalah saya harus keluar dari karakter $ sebelumnya value. jadi perintah wget harus membaca (menggunakan apihub, yang bisa Anda ganti dengan dhus):

wget --no-check-certificate --user=username --password=usrpass "https://scihub.copernicus.eu/apihub/odata/v1/Products('18f7993d-eae1-4f7f-9d81-d7cf19c18378')/\$value"

Atau untuk menggunakan curl, perintah yang disarankannya adalah:

curl -u username:password -LkJO "https://scihub.copernicus.eu/dhus/odata/v1/Products('13e66985-7d1f-4a7c-be58-925e7ed7889d')/\$value"

Perhatikan $ lolos di akhir. Tanpa ini, URL yang dikirim adalah https://scihub.copernicus.eu/dhus/odata/v1/Products ('13e66985-7d1f-4a7c-be58-925e7ed7889d') / Jika Anda mencoba url ini di browser, Anda akan mendapatkan deskripsi produk html.

Colabean
sumber
The curlMetode ini bekerja untuk saya, tapi aku mendapatkan kesalahan otentikasi ketika menggunakan wget.
philiporlando
7

Alternatif yang baik untuk Scihub resmi adalah data Sentinel-2 yang dicerminkan di Amazon Web Services.

Sentinel-2 di AWS

Ini memiliki keuntungan waktu kerja yang lebih baik dan produk sudah disimpan di ubin MGRS mereka, yang membuat pengunduhan menjadi jauh lebih cepat.

Data disimpan dalam ember publik dengan skema tiles/[UTM code]/latitude band/square/[year]/[month]/[day]/[sequence]/DATA. Ini membuat pengunduhan yang berulang-ulang dan skrip dari semua adegan yang tersedia di suatu wilayah menjadi sangat mudah.

Jika Anda tertarik dalam pencarian terprogram dan mengunduh data dari Scihub, Anda juga dapat menggunakan alat Python Sentinelsat .

Kersten
sumber
3

Saya akan menyarankan menggunakan API Python sentinelsat untuk ini. Terutama jika sasaran Anda adalah unduhan batch.

Silakan lihat di bawah untuk beberapa contoh kode untuk unduhan Sentinel-2 (Kode dijalankan dari Spyder)

#First, import this library (sentinelsat)
from sentinelsat import SentinelAPI, read_geojson, geojson_to_wkt
from datetime import date

api = SentinelAPI('user', 'password', 'https://scihub.copernicus.eu/dhus')

# search by polygon, time, and SciHub query keywords
footprint = geojson_to_wkt(read_geojson(r'/path/to/map.geojson'))
products = api.query(footprint,
                     date=('20151219', date(2015, 12, 29)),
                     platformname='Sentinel-2',
                     cloudcoverpercentage=(0, 30))

#Download all products 
api.download_all(products)

FYI, jika Anda mencari data di seluruh negeri, bagi AOI menjadi bentuk yang lebih kecil karena saya mengalami masalah ini karena tidak ada hasil yang dihasilkan ketika AOI saya terlalu besar.

Baca ini untuk info lebih lanjut: https://buildmedia.readthedocs.org/media/pdf/sentinelsat/master/sentinelsat.pdf

Ada juga opsi untuk unduhan Sentinel-1 batch juga.

Rhodri_22
sumber
Apakah ini berhasil untuk Anda?
Rhodri_22