🏕️

微地形図を生成するQGISプラグインを公開しました。

2024/09/21に公開
1

1. はじめに

森林などの地形変化に富んだ場所を見るのには DTM や陰影起伏図だけでは情報量が足りません。等高線ももちろん素晴らしいデータですが、等高線を見慣れていない方にとっては、尾根を表しているのか、あるいは谷を表しているのかを判断するのは難しいかもしれません。

今回は微地形図を作成する QGIS のプラグインを作成しましたので、紹介していきたいと思います。

https://github.com/shingo405nagano/generating_topoglaphic_maps

2. 微地形図とは

微地形図とは尾根や谷、起伏など地形の微細な特徴を表す図の事です。微地形図には以下のように様々な種類があり、これらは尾根や谷をわかりやすくしているだけでなく、等高線では可視化しきれない小さな凹凸や森林内の道路もわかりやすく表現してくれます。

・CS立体図:長野県林業総合センター
・赤色立体図:アジア航測株式会社
・陰陽図:朝日航洋株式会社

3. プラグイン制作の背景

上記リンクにもあるようにCS立体図の作成方法は公開されており QGIS であれば MIERUNE さんが QGIS のプラグインを公開しています「CSMapMaker」「CSMap Plugin」。自分でも曲率図や傾斜図を作成し色々調整してみましたが、綺麗でわかりやすい微地形図を作成する事は出来ず、個人的には「もう少し色のバリエーションがあった方がいいな」や「色々なパラメーターを調整したいな」と思っていたので「自分で好みの微地形図をPython で作ってしまおう」と考えたわけです。

4. プラグイン内で生成できる微地形図

このプラグイン内(以下から"Topo Maps")では「Original」「Vintage」「RGB」の 3 種類の微地形図がテンプレートとして設定されており、その他にもユーザーが自分でカラーマップを調整して登録する事も可能になっています。

5. 微地形図生成の材料

この微地形図は以下の構成で生成しています。

|- Slope(傾斜図)
|-- TPI(地形位置指数:Topographic Position Index)
|--- TRI(地形凹凸指数:Terrain Ruggedness Index) 
|---- Hillshade(陰影起伏図)

これらの 4 つの図を、配色や透過率を変えて合成した 1 枚のRGBA画像を出力するのがこのプラグインです。この記事内ではデータによって調整が必要なパラメーターのみ解説していきます。

5-1. 最初にリサンプリングを行う

この微地形図は 0.5m や 1m では綺麗に生成できますが、[地理院が基盤地図情報ダウンロードサイト]で公開している 5m や 10m などの分解能が低いデータを使用する場合はあまり綺麗な微地形図にはなりません。そこで下図のオプションを使用して 5m -> 1m へとアップサンプリングを行う事である程度綺麗な微地形図を生成する事ができます。

5-2. Slope

"Slope(傾斜)" の計算は gdal.DEMprocessing を使用しています。

  1. 距離の指定 ... 分解能の高い'DTM'に対応する為に、指定した距離、離れたセルとの傾斜を計算します。"メートル単位"か"セル単位"かを選ぶ事が出来ます。

  2. ガウシアンフィルター ... 傾斜の計算後にガウシアンフィルターでぼかしを入れる事ができます。近い距離で傾斜を計算した場合は、このオプションを使用するのがおススメです。

  3. 相対的な透過率の変更 ... 傾斜図が薄い、あるいは濃いと感じた時に調整する事ができます。

5-3. Topographic Position Index

"TPI(地形位置指数)" は地形の位置を表す指数です。これは非常に単純ですが、地形の情報を細かく表す非常に有用な指数です。TPI は簡単に説明すると「対象の位置が周囲よりも高いか低いか」を表す指数です。例えば市街地の様な平地であればどこも同じような高さなので、この指数は 0 付近の値になり、尾根などの周囲よりも高い位置にある場所は正の値になり、谷などの周囲よりも低い位置にある場所は負の値になります。ちなみに斜面の周囲には高い場所と低い場所が混在するので 0 付近の値になります。"Topo Maps" では谷を青系色、尾根を赤系色で表現しています。

この TPI を計算する際の"対象の周囲"というのは重要なパラメーターです。具体的には"対象"と"周囲"の距離が重要です。この周囲までの距離が短い場合は(1mなど)微細な凹凸も表現してくれますが、逆に尾根や谷などの大きな凹凸は分かりづらくなってしまいます。周囲までの距離が長い場合は逆に尾根や谷がわかりやすくなり、微細な凹凸は分かりづらくなります。

  1. カーネルサイズを~ ... 「距離で指定」「セル数で指定」のどちらかを選択してください。

  2. 様々なカーネルの種類 ... 畳み込みに使用するカーネルを選択する事ができ、おススメは "ドーナツ"か"逆ガウシアン"です。"逆ガウシアン"の場合はcoefパラメーターで外側の重みを調整する事が可能です。指定したカーネルは 3Dで表示し、確認する事も出来ます。



3. 外れ値処理 ... 外れ値があると ColorMap の適用にズレが生じます。外れ値を丸める事で綺麗な微地形図を生成しているので、このオプションを外す事はおススメしません。

  1. 相対的な透過率の変更 ... 傾斜図が薄い、あるいは濃いと感じた時に調整する事ができます。

  2. Multi TPI
    TPIを2枚重ねる為のオプションです。TPIは'尾根'や'谷'、'凹凸'などの地形の位置を表現する為に使用しています。カーネルサイズを小さくする事で凹凸は強調されますが、逆に尾根・谷は判断しづらくなります。カーネルサイズを大きくする事で尾根・谷は強調されますが、逆に凹凸は判断しづらくなります。そのためこのオプションを使用して 1枚目のTPIは10mで設定し、2枚目のTPIは50mで設定する、というような事を可能にします。

5-4. Terrain Ruggedness Index

"TRI(地形凹凸指数)" は地形の凹凸を表す指数です。デフォルトではこの画像は合成されませんが、必要に応じてチェックを入れて合成してください。

5-5. Hillshade

"Hillshade(陰影起伏図)" は gdal.DEMprocessing を使用しています。詳しい解説は gdal.DEMprocessing のドキュメントを参照してください。

  1. 光源タイプ ... 光源を一方向から当てるか(single)、複数の方向から当てるか(Multiple)を選択できます。"Multiple" を選択した場合は「225°」「270°」「315°」「360°」の方向から光を当てます。

  2. 方位 ... 光源を当てる方位を決定する事が出来ます。

  3. 高度 ... 高度は光源の高さを表しますが、これは角度です。0°は水平を表し、90°は真上を表します。

  4. 強調係数 ... 標高を事前に乗算するために使用される係数です。

  5. 傾斜も使用する ... 傾斜も使用します。

  6. ガウシアンフィルターを適用する ... 分解能が高く、パキっとした微地形図が好みでない場合は、このフィルターを通して少しぼかしを入れる事が出来ます。

  7. 外れ値処理
    陰影起伏図を作成した後に外れ値を処理する事で、地形がよりハッキリする場合があります。

6. その他のオプション

6-1. UnsharpMask

アンシャープマスクを適用する事で微地形図をシャープにします。

6-2. Contrast

コントラストの調整。

7. サンプルの計算

分解能が高く、範囲が広い DTM から微地形図を生成するのには時間が掛かります。このオプションを使用する事で、小さな範囲で微地形図を生成し、ファイルを出力する事なくパラメーターの調整を行う事ができます。「サンプルの確認」にチェックを入れたら「実行」ボタンでサンプルの計算が始まります。

8. プラグインのインストール

QGIS のプラグイン管理ウィンドウで「Topo Maps」あるいは「DTM」「topographic」等で検索すれば表示されるはずです。QGISの最小バージョンは ver.3.2 に設定しています。

以下のようなアイコンを使用しているので、これが QGIS に表示されるはずです。

9. おわりに

問題や要望があればコメント頂けるとそのうち対応するかもしれません。使用してみて気に入ったら QGIS での評価をして頂けると幸いです。因みに個人的には "RGB" のスタイルがパキっと色が変化していておススメです。

私自身は ArcGIS ユーザーでもあるので、ArcGIS Pro で使用可能なプロセッシングツールボックスもその内 GitHub で公開するかもしれません。
https://github.com/shingo405nagano/generating_topoglaphic_maps

Discussion

橙。橙。

ユーザーが自分で微地形図の色を設定できるようにしました。