QGIS:DEMの領域内のすべての流域界と流路のベクタを作成する

アイキャッチ, QGIS活用 QGIS

DEMから流域界と流路のベクタを作成するのは意外に簡単です。しかしマニュアルの手順に従うだけだと複数の流域がくっついてしまうこともあります。できるだけ意味のある流域界が得られる方法を教えます。QGIS3.22LTR対応。

QGISはフリーでオープンソースの地理情報システムです。

DEMの窪地を埋める

流域界を求め、流路を定める原理は、DEMの勾配の方向を求めることで水が流れる方向を決めていくことです。ですので、窪地があるとそこに流れが滞留してしまいます。(現実世界のように水が溜まってあふれ出すような複雑な計算はしていません。)ですので、最初に窪地を埋めてしまう必要があります。

例として使用するDEMは国土地理院からダウンロードした与論島です。座標系は投影座標系のUTMか平面直角座標系にします。地理座標系ではうまくいきません!

与論島DEM
与論島DEM

窪地を埋めるために使うツールはQGISには複数搭載されていますが、ここでは定評あるSAGAの「Fill sinks (wang & liu)」を使います。

Fill sinks (wang & liu)ツール
Fill sinks (wang & liu)ツール

Fill sinksを実行した結果は、そのままでは元のDEMとほとんど見分けがつかないので、部分を拡大したものを次に示します。右側がfillされたものです。

Fill sinksツール実行前後のDEMの比較
左はFill実行前、右はFill実行後
SAGAツールの動作状況

2021年8月に、QGISはSAGAに対する今後のサポートを行わないことを発表しており、最新版QGISではSAGA 7.xが搭載されているものの、使用しようとすると「動作しない恐れがある」旨警告されます。SAGA2.3を搭載したQGIS3.16LTRでは、SAGAツールは黒字で警告なく使用できます。SAGA7.8.2を搭載したQGIS3.22LTRではSAGAツールはグレーアウトしており、警告も出ますが、本稿の範囲ではすべて動作しました。

窪地を埋めたDEMを適切な境界でクリップする

この作業は、内陸部のDEMでは必要ないかもしれません。しかし海が存在していると、勾配が極めて小さい平地として処理されてしまい、海上にも流路が生成されてしまいます。海上のDEMのちょっとした標高差などで海上の流路が合流してしまうと、上流域が一つのポリゴンになってしまいます。クリップするための陸地ポリゴンの作成法はリンクを参照してください。

SKラボ
SKラボ

国土地理院DEMをtiffに変換する際のnodata値の設定によっては、最初から海域がnodata扱いになっていることもあるようです。その場合はこの節の操作は必要ありません。

窪地を埋めたDEMとクリップする陸地ポリゴンを用意したら、GDALの「マスクレイヤによる切り抜き」ツールを使用します。下図のように、nodata値を割り当てることと、「マスクレイヤの領域に出力を一致させる」にチェックしないことに注意してください。チェックすると、マスクレイヤの領域が出力ラスタの端と一致するように出力DEMのセルの位置がわずかにずれ、元のDEMのセルの値に対して重み付き平均などの処理を受けたDEMが出力されます。山間部では問題ないかもしれませんが、本DEMのように標高差が少ない場所では、平地部の凹凸が変化してしまい、流路に影響してしまうのです。

マスクレイヤによる切り抜きツール
マスクレイヤによる切り抜きツール

クリップされたDEMから流域界・流路ベクタを生成する

SAGAの「Channel network and drainage basins」ツールを使います。このツールは1回の実行でいろいろな処理を行いますが、ここでは流路と排水流域をシェープファイルで出力させます。ストラー数は本稿の目的には不要ですが、流路の任意の点から上流の流域を抽出する際に利用できますので念のために出力しておきます。「閾値」パラメータ(整数)を小さくすると、より上流の微細な支流まで流路として抽出します。

Channel network and drainage basinsツール
Channel network and drainage basinsツール

出力されたストラー数と流域界、流路ベクタを以下に示します。

Channel network and drainage basinsツール結果のストラー数、流域界、流路
左:ストラー数  右:流域界ポリゴンと流路ライン

流域界ポリゴンを赤色境界線表示にしてOpen Street Mapに重ねてみると、以下のようにそれらしい図が得られます。

シンボロジを調整して流域界と流路をOpenStreetMap上に表示する
シンボロジを調整して流域界と流路をOpenStreetMap上に表示する

窪地を埋めたDEMを用意すれば、ワンステップで流路や流域界まで得られるのは、ステップを踏んで解析しなければならない商用のArcGISより便利ではないでしょうか?

この解析の限界

下図は、作成した地図の一部を拡大したものです。得られた流路は紺色の点線にしてあります。よく見ると、この図の中央付近、実際には水路は北に向かって長く伸びているのに、本解析では途中に流域界ができて現実の水路が分断されています。本解析はあくまでDEMの精度で表現された地形から判定された流域界・流路ですが、現実の水路や河川は人工的に流路が変更されたり、DEMの解像度では表現できない凹凸に流路が左右されたりしているのです。このような現象は高低差の少ない平地エリアではかならず起こります。この問題はツールなどで自動的に処理することは難しく、現実を正確に反映した成果が必要なら図面を手動で修正する必要があります。

ツールで抽出された流路と現実の水路が一致しない例
ツールで抽出された流路と現実の水路が一致しない例

補足:適切な境界でクリップしないとどうなるか

下図は、DEMを水際でクリップしないで流域界・流路を求めたものです。流路は陸上についてはそれなりに求められていますが、海面上で流路が合流してしまったものは流域がくっついています。それでも、とにかく早く流路を見たいだけなら島のマスクを作らなくて良いので工数は省けます。目的によってはアリかもしれません。

水面をクリップしていないDEMで流域界を求めた例
水面をクリップしていないDEMで流域界を求めた例

以上です。意外に簡単でしょう?Have fun!

QGISまとめ:自然・環境調査のためのQGIS最速マスター
QGISまとめ:専門家も使っているフリーのGIS。Windows, mac, Linuxで使用できますが、iphoneは非対応。最速マスターを目標に、自然・環境調査のために最低限必要な情報を厳選しています。

コメント

タイトルとURLをコピーしました