（簡単）Dockerを使ってAW3D30 (ALOS World 3D - 30m) からRGB標高タイルをつくる

# はじめに
前回の記事 「[AW3D30 (ALOS World 3D - 30m) からRGB標高タイルを作る](https://qiita.com/T-ubu/items/e32e51ee85577d733546)」で、JAXAさんのAW3D30 (ALOS World 3D - 30m) からRGB標高タイルを作る方法を確かめました。

今回はDockerを使って作業するツールを作ったので、**ダウンロードしたデータから簡単にRGB標高タイルを作る方法**を試します。

# 環境
私の環境は以下のものでした。Dockerとgitが使えれば大丈夫だと思います。
* Windows 10 Enterprise
* Powershell
    * git version 2.25.0.windows.1
* Docker version 20.10.8

（windowsのgitでは最初のレポジトリをダウンロードしてくるだけなので、なければないでレポジトリからダウンロードしましょう。）


# 手順

## Step 1. データの準備
JAXA/EORCさんのページから5度×5度の標高ZIPデータをダウンロードしてきます（ユーザー登録必要）。今回の例では、四国と紀伊半島を含む2つの区画をダウンロードしました。
ダウンロードページ（英語）：　https://www.eorc.jaxa.jp/ALOS/en/dataset/aw3d30/aw3d30_e.htm　
※ダウンロードページは日本語もあると思います。

![2022-05-29-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/0ca68d40-13cf-4f3b-75c3-96d8565cf9bb.png)

## Step 2. 作業場所の準備
空き容量が十分あるところで、作業スペースを作ります。AW3D30のRGB標高データ作成のためのテンプレートを作ったので、そのレポジトリをクローンしてくればいいと思います。そして、そこにダウンロードしたZIPファイルを保存しておくsrcフォルダを作ります。
```
cd hoge
git clone https://github.com/ubukawa/RGB-AW3D30
cd RGB-AW3D30
mkdir src
```
![2022-05-29-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/732cdb60-099f-c356-9868-edf3d980465e.png)



できたらsrcフォルダにダウンロードしたファイルを入れておきます。
![2022-05-29-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/30811684-1207-ad21-44cf-e0ff54238bdd.png)

## Step 3. Dockerイメージの作成・起動
作業のためのDocker imageを作成し、Dockerコンテナを立ち上げます。Docker imageの作成は二度目の作業からは省略できると思います。

### 3-1 Docker build
必要なツールを入れるためのDockerfileがubukawa/rgbifyにあるので（unvt/rgbifyをフォーク）、それをクローンしてからビルドします。下の図ではDocker imageの名前を間違って作ってしまったのでやり直しました。
```
git clone https://github.com/ubukawa/rgbify
cd rgbify
docker build -t unvt/rgbify:ubukawa .
cd ..
```
![2022-05-29-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/7c9d490b-26bf-97d7-975e-d049ec89ba88.png)

### 3-2 Docker run
そして、Docker イメージができたら起動します。Docker runをするとき、作業している場所を/dataとしてコネクトしておくことを 忘れない/確認する ようにしましょう。
```
docker run -it --rm -v ${PWD}:/data unvt/rgbify:ubukawa
cd /data
```
![2022-05-29-005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/2b066b3a-d5a6-2213-0662-d6c1a165c767.png)

## Step 4. RGB標高タイル作成
srcフォルダにファイルがあることを確認したら、変換のためのスクリプトを実行します。
前回の記事で紹介した各ステップ（ZIP解凍、画像のマージ、RGB標高タイル作成（mbtiles形式）、PNGタイルへの変換）が入っていますので、あとはデータが出来るのを待ちましょう。上手くいくと **zxy** というフォルダにタイルが出来てきます。

```
./all.sh
```
![2022-05-29-006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/8352d56e-4776-b10d-1e0d-e10d00e19396.png)

### かかる時間
ダウンロードしてきたデータ数、PC（Docker）のメモリ等により時間が変わると思います。私が今回作業した2つのZIPファイルはだいたい30分でZXYタイル（ZL9-11）ができました。（海が多いので処理は少し早めかもしれません。）

### 調整するには
出来るPNGタイルのフォルダの名前や、タイルの最大・最小ズームレベルはsll.shのなかのパラメータをテキストファイルで編集すればOKです。ズームレベルについては、all.shの中で最初に指定しているのは9～11にしています。

### 中間ファイル
この作業ではいくつか中間ファイルができます。作業が終われば消しても大丈夫です。

* 01_unzipのファイル　→　解凍したファイル
* input.tif　→　タイル化するためにダウンロードしたファイルにある「～_DSM.tif」をマージしたもの。ピクセル数に応じてサイズが大きくなりがちです。
* out.mbtiles　→　RGB標高タイル（mbtiles形式）
![2022-05-29-008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/37500b3a-24c8-fd68-9174-b79cfc587df9.png)


## Step 5. ホスト
zxyフォルダにタイルができたので、あとはウェブサーバーなどでホストすればOKです。png画像タイルは静的なホストで大丈夫なのでGitHubページなどのホストで十分です。

# まとめ
AW3D30 (ALOS World 3D - 30m) のDEMデータからzxyのRGB標高タイルを簡単に作る方法をまとめました。


# 参考
* AW3D30 (ALOS World 3D - 30m) からRGB標高タイルを作る　https://qiita.com/T-ubu/items/e32e51ee85577d733546
* GitHub Repository
    * https://github.com/ubukawa/RGB-AW3D30
    * https://github.com/unvt/rgbify