APIを使用してセンチネル製品をダウンロードしますか?


11

Sentinelデータ(特にS2)を自動化または一括ダウンロードできるようにしたい。

APIとバッチスクリプトに関するSentinels Scientific Data Hubユーザーガイドに記載されているODataプロトコルを使用しようとしています。例として、wgetを使用して完全な製品をダウンロードしようとします。

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

(登録されたユーザー名とパスワードを使用して)しかし、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>

ただし、URIクエリhttps://scihub.copernicus.eu/dhus/odata/v1/Products%28'18f7993d-eae1-4f7f-9d81-d7cf19c18378'%29/$valueをブラウザーに直接入力すると、製品のzipファイルがダウンロードされます。

この質問への回答に記載されているように、カールを使用してみました

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

エラーが出ます

警告:リモートファイル名に長さがありません!

私はまだAPIhubにアクセスできず、サイエンスハブにしかアクセスできません(APIhubアクセスを持つ同僚もそれを試し、同じ問題がありましたが)。サイエンスハブGUIを使用してインタラクティブにデータをダウンロードできますが、プロセスを自動化できます。サードパーティのpythonスクリプトとシェルスクリプトがありますが、多くはAPIハブを使用しています。特定のスクリプトを開発できるように、私が何をしているのかを理解したいと思います。


sslサポートでコンパイルされたwgetバージョンを使用しましたか?そうしないと、sslは機能しません。
Matte

ubuntu 14ではデフォルトだと思います((get-V GNU Wget 1.15 built on linux-gnu。+ digest + https + ipv6 + iri + large-file + nls + ntlm + opie + ssl / openssl )(コンパイル: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 / include -g -O2 -fstack-protector --param = ssp-buffer-size = 4 -Wformat -Werror = format-security -DNO_SSLv2 -D_FILE_OFFSET_BITS = 64 -g-壁)
コーラビーン

+ ssl / opensslがあるので、それは問題ではありません。
Matte

回答:


7

JNCCのアプリケーション開発者から支援を受けました。他の人を助けるためにここに彼らの答えを投稿します。

私の問題は、以前に$文字をエスケープする必要があることでしたvalue。そのため、wgetコマンドは次のように読み取る必要があります(dhubに置き換えることができるapihubを使用)。

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

または、curlを使用するには、次のコマンドをお勧めします。

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

最後のエスケープされた$に注意してください。これがなければ、送信されるURLはhttps://scihub.copernicus.eu/dhus/odata/v1/Products( '13e66985-7d1f-4a7c-be58-925e7ed7889d')/このURLをブラウザーで試すと、製品のHTMLの説明。


curlこの方法は私のために働いているが、使用しているとき、私は認証エラーを取得していますwget
philiporlando

7

公式のScihubに代わる優れた方法は、Amazon WebサービスでミラーリングされたSentinel-2データです。

AWSのSentinel-2

これにはアップタ​​イムが向上するという利点があり、製品はすでにMGRSタイルに保存されているため、ダウンロードが大幅に高速化されます。

データはスキームとともにパブリックバケットに保存されtiles/[UTM code]/latitude band/square/[year]/[month]/[day]/[sequence]/DATAます。これにより、エリア全体で利用可能なすべてのシーンをスクリプト形式で繰り返しダウンロードすることが非常に簡単になります。

プログラムによる検索とScihubからのデータのダウンロードに興味がある場合は、PythonツールSentinelsatを使用することもできます。


3

これには、sentinelsat Python APIを使用することをお勧めします。特にあなたの目標がバッチダウンロードである場合。

Sentinel-2ダウンロード(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)

参考までに、国全体のデータを探している場合は、AOIが大きすぎると結果が返されないという問題があったため、AOIを小さなシェープファイルに分割します。

詳細については、こちらをお読みください:https : //buildmedia.readthedocs.org/media/pdf/sentinelsat/master/sentinelsat.pdf

Sentinel-1一括ダウンロードのオプションもあります。


これでうまくいきましたか?
Rhodri_22
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.