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


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

https://qiita.com/T-ubu/items/baaf41f06fd97e049ea9

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

https://lpdaac.usgs.gov/resources/e-learning/how-access-lp-daac-data-command-line/

:::note warn
今回は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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/275357f5-2a13-e3d8-de73-8fc1ac1785d3.png)

リストができたら、エクセルなどを使って、ファイル名一覧からダウンロードするためのcurlのコードを書きます。今後、IDとパスワードを設定しますが、オプションのつけ方については、以下のようにしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/0b235e52-82c6-f96b-4b1b-13a654a32745.png)


コマンドができたらテキストエディタにコピーして、shファイルとして保存しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/d775131d-c1fb-0335-75ae-beb59b5e0e92.png)


全部貼り付けられないので、テスト用の3行のコマンドを下に書いておきます。
```sh: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の説明（[再掲・こちら](https://lpdaac.usgs.gov/resources/e-learning/how-access-lp-daac-data-command-line/)）にありますが、machineはurs.earthdata.nasa.gov、loginにユーザー名、passwordにパスワードを指定したnetrcファイルを作ります。

```bash
touch ~/.netrc | chmod og-rw ~/.netrc | echo machine urs.earthdata.nasa.gov >> ~/.netrc
```
ここまでやると ~/.netrc　ができています。echoを続けてユーザー名とパスワードを入れてもいいですが、viで編集しても大丈夫でした。
```bash
vi　~/.netrc　
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/3e6de3fe-6a95-2c3b-1552-7b7dae8cfd6e.png)

## Step 3. Curlでダウンロード
次にcurlでダウンロードしてみます。

### 2-1.　実験１・ログイン情報なしの場合
試しに何もしないで普通のコマンドを実行してみます。
```
curl -O https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/NASADEM_HGT_n00e006.zip
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/cd64122b-0b5d-fd1f-aefb-2abbd72f4048.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/9e9a3b18-1b8c-4c66-7a46-1339a77b1a35.png)
ダウンロードされますが、中身は空のファイルになってしまいました。なぜか302のエラーですね。

### 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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/9bd4397f-0452-647c-e287-12fa9fd8d5b7.png)


### 2-3. 全体ダウンロード
大丈夫そうなので、準備しておいたシェルスクリプトを実行します。
```bash
./dl.sh
```
shファイルに改行をいれたので、その都度で怒られていますが、ダウンロードはできているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/0521b79a-9877-7e14-ec78-af18ab3b555c.png)
ファイルもたまっていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/afe5d6ba-427b-092e-7aa1-e98d7ba73627.png)

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

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

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

# 参考ページ：
* How to Access LP DAAC Data from the Command Line (LP DAAC, 2019): https://lpdaac.usgs.gov/resources/e-learning/how-access-lp-daac-data-command-line/
* NASADEM_HGT ダウンロードサイト：https://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11/