オープンソースのPythonとGDALを使って無償でGISデータを処理する方法を紹介します。今回使用するデータは国土地理院が提供している基盤地図情報の数値標高モデル。
PythonとGDALの組み合わせで上記のウェッブマップが作成されます。
インストール
まずはMinicondaを使ってPythonと必要なライブラリをインストールしましょう。ダウンロードが完了したと後はMinicondaのコマンドラインを開きPythonの仮想環境を立ち上げます(デフォルトのPython3バージョンを使用):
conda create --name myenv
conda activate myenv
次にPythonのスクリプトに使用するライブラリをインストールします:
conda install -c conda-forge gdal numpy beautifulsoup4
最後にウェッブマップ作製に使用するPythonのスクリプトをダウンロードします:
git clone https://github.com/danielhoshizaki/hillshade
使い方
まずは./data/raw
ディレクトリに数値標高モデルファイルがあることを確認しましょう。他のファイルをダウンロードしている場合はこの段階で./data/raw
の中に置きます。
Pythonスクリプトを回す前にコードの一部を変える必要があります。conda
でインストールしたライブラリGDALのパスを指定する必要があります。GDALは協力なソフトですがインストールが非常に複雑である為今回は絶対パスを使いましょう。GDALのバイナリーを探すにはLinuxのfind
を使うかWindosの検索ボックスを使います。上記で作成したmyenv仮想環境のディレクトリを探せばすぐに出てきます。探すのはgdaldem.exeとgdalbuildvrt.exeが入っているはディレクトリとgdal2tiles.pyが入っているディレクトリ。見つけたらPythonスクリプトのgdal_bin_pathとgdal_tiles_pathを設定します。
準備が整ったらスクリプトを起動してウェッブマップが出来るのを待ちます。
仕組み
Pythonスクリプトは大きく分けて二つの役割を果たしています。一つはconvert
と言うファンクションを使って生の数値標高モデルファイル(ZIPされたXMLファイル)をGeoTiffに変換すること。二つめの役割はコマンドラインを通してGDALに直接データを処理してもらうこと。GDALに直接流すコマンドは三つあります以下のデータ処理が行われます:
- 各DEMのGeoTiffを陰影起伏GeoTiffに変換
- 全ての陰影起伏GeoTiffをバーチャルデータセットvrtにまとめる
- バーチャルデータセットをウェッブマップに変換
最後に回すgdal2tilesコマンドは新規に./data/WTMS
ディレクトリを作ります。ディレクトリの中にはLeaflet.htmlと言うファイルがあるのでダブルクリックをしましょう。独自のウェッブマップが完成です!ただしこのウェッブマップは自分のPCで見ることしかできません.. 他の人にも見てもらい場合はGithub PagesやAWS S3に乗せるかもうちょっと頑張ってウェッブサバーに乗せてみましょう!