QGIS:任意の点から上流の流域界ベクタを生成する

アイキャッチ, QGIS活用 QGIS

実際の調査研究では、DEM領域内のすべての流域界を求めるより、特定の流路の特定の位置から上流について知りたいことの方が多いと思います。このためにはQGISに同梱されているSAGAのupslope areaツールを使いますが、QGISとSAGAのバージョンによっては動きません。こうしたノウハウを含め、効率的な方法を教えます。

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

窪地を埋めたDEMとストラー数ラスタを用意する

これらは「DEMの領域内のすべての流域界と流路のベクタを作成する」で説明した方法で作成できます。DEMの座標系を投影座標系にしておくことを忘れずに!

下図は、与論島DEMを用いたストラー数ラスタです。

ストラー数
ストラー数

求めたい流域の下流点の座標を正確に読み取る

求めたい流域の下流点付近のストラー数ラスタを拡大します。ストラー数は流路の在り処を示していますので、ストラー数が示す流路を示すセルのできるだけ真ん中にマウスカーソルを置き、右ボタンクリックして座標値をコピーします。

流路の外の座標を拾ってしまうとうまくいきません。パンツールの手のひら型マウスカーソルならアイコンの真ん中あたりの座標を読み取りますが、正確な位置がわかりにくいので、マウスカーソルがセルの中にすっぽり収まるくらい拡大表示してから右ボタンクリックしてください。心配ならCoordinate capture プラグインをインストールすれば、クロスヘアカーソルを使ってより正確に座標が読み取れます。

実際の地図の河川の位置を読み取るのではないことに注意してください。地形から判断される流路と実際の河川の位置がずれていることはよくあります。

流路上のセルの座標を読み取る
流路上のセルの座標を読み取る
すだくん
すだくん

下流点が平地だと、ストラー数ラスタが実際の河川から大幅にずれてしまうとか、そもそも河川に見えないラスタになることがよくあるよ。その場合の対処方法は「流路が検出できない平地の流域界ベクタを作成する」で説明するね!

流域界ラスタを作成する

SAGAの「Upslope area」ツールを使います。このツールはWindows版の最新QGISと最新SAGAの組み合わせでは動かないことが確認されているものの一つです。以下ではUpslope areaが動作するQGIS 3.16LTR以前と、Upslope areaが動作しないQGIS 3.22LTR以降に分けて説明しています。

かわのさん
かわのさん

mac版QGISだと3.22LTRでもUpslope areaが動作するみたいよ!

QGIS 3.16LTR以前(Upslope areaがQGISで動作する)の場合

QGISのプロセシングツールボックスからUpslope areaを起動します。「対象X座標」、「対象Y座標」パラメータには、前のステップで読み取った下流点の座標をコピペなどで入力します。「高さ」パラメータには窪地を埋めたDEMを指定します。「方法」パラメータは勾配を求める方法の選択肢がいくつかあります。ここでは一番簡単な方法を指定してありますが、どの方法が良いかはDEMの精度や解像度によっても異なると思いますので、結果を見て試行錯誤してください。「集水域(Upslope Area)」には出力ファイル名を指定します。

Upslope areaツール
Upslope areaツール

これだけで、任意点上流の流域界ラスタが作成されます。流域外が0, 流域内が1の二値化ラスタです。ファイル形式はSAGAで使われるsdat型式になっていますが、QGISでも扱えます。

すだくん
すだくん

Methodにはいくつか選択肢があるけど、Multipleで始まるものを選ぶと二値化ラスタではなく、当該セルから下流点に到達する水の%を示すラスタになるよ。分水界で水が2方向に分かれるセルとか、平地で水が複数方向に分かれるセルとかが判別できるので役に立つ場面もあるけど、流域界ラスタをベクタに変換する際に閾値を考えて二値化しないといけなくなるので本稿の目的にはメンドウだね。

QGIS 3.22LTR以降(Upslope areaがQGISで動作しない)の場合

「SAGAで任意の点から上流の流域界ラスタを生成する」にSAGA-GISだけを使ってDEMから流域界ラスタを作成する全工程を説明してあります。ここではSAGA-GISでUpslope areaのみ実行してみます。

SAGA-GISを起動し、窪地を埋めたDEMを開く

SAGAはスタートメニューのQGISグループの中に含まれていますので、①をクリックして起動します。ウインドウ左下のData SourcesパネルのFile Systemタブから②窪地を埋めたDEMファイルを探してダブルクリックすると、ウインドウ左上のManagerパネルに現れます。③は以下の解析で”Grid System”と呼ばれている領域データ、④は以下の解析で”Elevation”と呼ばれている窪地を埋めたDEMデータの名称です。④を右クリックしてAdd to Mapをクリックすると⑤に画像が表示されます。

SAGA-GISで窪地を埋めたDEMデータを開く
SAGA-GISで窪地を埋めたDEMデータを開く

Upslope Areaツールを探す

下図①Find and Run toolをクリックし、②Search for…に”Upslope area”と入力して③Okayをクリックすると、④Upslope Areaツールが見つかりますので選択してOKします。

Upslope Areaツールを探す
Upslope Areaツールを探す

Upslope Areaツールを実行する

Upslope Areaダイアログで①Grid System、②Elevationをドロップダウンから選択します。また③Target X coordinate, Target Y coordinateはQGISのストラー数ラスタで読み取った流域最下流点の座標を入力します。また、④MethodはQGISと同様Deterministic 8を選びます。(それ以外を選ぶとどうなるか、すだくんが上で説明しています。)OkayをクリックするとManagerに⑤Upslope Areaが現れますので、右ボタンクリックしてAdd to Mapを選択し、Newを選んでOkすると、⑥新しいウインドウに抽出された流域が表示されます。

Upslope Areaツールを実行する
Upslope Areaツールを実行する

Upslope Areaを右ボタンクリックし、Save as…で保存します。ここではQGIS 3.16LTRと同じsdat形式にしました。

作成した流域界を保存する
作成した流域界を保存する
すだくん
すだくん

最新版SAGA-GISではSave as…でsdat型式はドロップダウンの選択肢に無いけど、拡張子をsdatにすると保存できるよ。別にtifにしても問題はないけどね。

できあがった流域界ラスタをストラー数と重ねて表示してみる

下図は、生成された流域界ラスタを半透明にし、ストラー数の上に重ねたものです。

求めた流域界ラスタをストラー数上に半透明で表示
求めた流域界ラスタをストラー数上に半透明で表示

流域界ラスタをポリゴンに変換する

GDALのラスタのベクタ化(polygonize)を使います。

ラスタのベクタ化ツール
ラスタのベクタ化ツール

あとはできあがったポリゴンから流域外を属性テーブルや選択メニューで選択して削除すれば流域界ポリゴンができあがります。

流域外のポリゴンを選択して削除
流域外のポリゴンを選択して削除

下図は、流域界ポリゴンをシンボロジで赤い枠線のみにしてOpen Street Map上に表示したものです。

流域界ポリゴンの枠線のみ表示する
流域界ポリゴンの枠線のみ表示する

とっても簡単ですね! 本稿は以上です。Have fun!

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

コメント

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