LoginSignup
1
1

More than 1 year has passed since last update.

LP DAACデータ(NASADEM) を curl で一括ダウンロード

Last updated at Posted at 2022-10-21

はじめに

私の前回の記事(下)で、オープンに利用できるグローバル標高データNASADEMについて紹介しました。今回は、このデータ(全部で14520)を一括ダウンロードした方法をメモしておきたいと思います。

ファイル数が多いので、LP DAACのページ(以下)で見つけたコマンドラインでダウンロードする方法を試しました。curlコマンドでダウンロードをしますが、ユーザーとパスワード情報を入れないといけません。

今回はcurlでダウンロードする方法を試しますが、windowsのコマンドプロンプトにあるcurlではうまくいきませんでした。DockerでUbuntuベースのLinux環境を立ち上げて行ったらうまくいきました。
調べていた時に、ほかにもcurlでうまくいかない人はいたようです。→ https://forum.earthdata.nasa.gov/viewtopic.php?t=3021

私の環境

  • Windows 10 (Enterprise)
  • Docker version 20.10.8
  • PowerShell version 5.1.19041.1237

また、LP DAAC でのデータ利用のため、NASAのEarthDataユーザーIDをとっておきました。
 https://urs.earthdata.nasa.gov/users/new

手順

Step 0. Dockerコンテナ(unvt/nanban) の立ち上げ

Linuxの環境でcurlを使いたかったので、unvt/nanbanを立ち上げました。unvt/nanbanはUbuntuベースのイメージですから、curlが使えれば別のDocker imageでもいいと思います。

docker run -it --rm -v ${PWD}:/data unvt/nanban
cd /data

Step 1. ダウンロードファイルの一覧、shファイルを作成

次の作業はWindows環境でウェブブラウザやテキストエディタ、MS エクセルを使って行いました。
Data Treeのページ( https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/ )からNASADEMのファイル一覧を抜き出します。HGTファイルのZIPファイルだけがほしいので、ソースをコピペして3行ごとに抜き出して、ファイル名だけ書き出すことにしました。

↓作業の途中の様子(不要な文字列はreplaceを駆使して消していく。その後、excelのleft関数なども使った。)
image.png

リストができたら、エクセルなどを使って、ファイル名一覧からダウンロードするためのcurlのコードを書きます。今後、IDとパスワードを設定しますが、オプションのつけ方については、以下のようにしておきます。
image.png

コマンドができたらテキストエディタにコピーして、shファイルとして保存しておきます。
image.png

全部貼り付けられないので、テスト用の3行のコマンドを下に書いておきます。

dl-test.sh
curl -O -b ~/.urs_cookies -c ~/.urs_cookies -L -n https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e006.zip;
curl -O -b ~/.urs_cookies -c ~/.urs_cookies -L -n https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e009.zip;
curl -O -b ~/.urs_cookies -c ~/.urs_cookies -L -n https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e010.zip;

Step 2. .netrcファイルの作成

LP DAACの説明(再掲・こちら)にありますが、machineはurs.earthdata.nasa.gov、loginにユーザー名、passwordにパスワードを指定したnetrcファイルを作ります。

touch ~/.netrc | chmod og-rw ~/.netrc | echo machine urs.earthdata.nasa.gov >> ~/.netrc

ここまでやると ~/.netrc ができています。echoを続けてユーザー名とパスワードを入れてもいいですが、viで編集しても大丈夫でした。

vi ~/.netrc 

image.png

Step 3. Curlでダウンロード

次にcurlでダウンロードしてみます。

2-1. 実験1・ログイン情報なしの場合

試しに何もしないで普通のコマンドを実行してみます。

curl -O https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e006.zip

image.png
image.png
ダウンロードされますが、中身は空のファイルになってしまいました。なぜか302のエラーですね。

2-2. 実験2 ログイン情報ありの場合

そこで、次はLP DAACの手引きにあるように、以下のコマンドでやってみます。

curl -O -b ~/.urs_cookies -c ~/.urs_cookies -L -n https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e006.zip

中身のあるファイルがダウンロードできました。
image.png

2-3. 全体ダウンロード

大丈夫そうなので、準備しておいたシェルスクリプトを実行します。

./dl.sh

shファイルに改行をいれたので、その都度で怒られていますが、ダウンロードはできているようです。
image.png
ファイルもたまっていきます。
image.png

14,520ファイルのうち、14,519ファイルが20時間と少しでダウンロードできていました。なぜかn24e006が抜けていたので、そのファイルだけ個別にダウンロードして全部揃えました。

まとめ

NASAのDEMデータをcurlでダウンロードする方法をまとめました。ログイン情報が必要なので少し注意が必要でした。

謝辞

データを提供してくれているNASAやUSGSに感謝します。また、NASADEMはALOSのDEMやASTER-GDEMも利用されていますから、日本の関係の皆様に感謝します。

参考ページ:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1