チュートリアル: GRASSツールを用いて河川と集水域の境界線を求める
Site: | OpenCourseWare for GIS |
Course: | QGIS上級者向けチュートリアル |
Book: | チュートリアル: GRASSツールを用いて河川と集水域の境界線を求める |
Printed by: | Guest user |
Date: | Saturday, 21 December 2024, 8:48 PM |
1. 概要
QGIS Processing Toolbox を使用すると、多くの有用な GRASS アルゴリズムを使用することができます。
このチュートリアルでは、GRASS ツールを使用して、Rur川とその集水域の境界線を作成します。
このチュートリアルの後、以下のことができるようになります。
- シンク(Sinks)を埋め立てて水文学的に正しいDEMを作成する。
- 流量を計算する
- 流量のしきい値を使用して、河川を定義します。
- 集水域の流出口を定める
チュートリアルデータは、SRTM 1-Arc Second DEMをクリップし、UTM Zone 32N/WGS-84に再投影したものです。
2. DEMのシンク(Sinks)を埋め立てる
最初のステップはDEMのシンク(Sinks)を埋め立てることです。シンクとは人工的な窪地のことでそれは水が流出口へと流れるのを阻害するものです。
1. QGIS Desktop with GRASSを起動します。
2. dem.tif をレイヤパネルに追加します。
3. プロセッシングツールボックスパネルを開きます。メインメニューのプロセッシング | ツールボックスと進みます。
4. プロセッシングツールボックスで GRASS | ラスタ (r.*) | r.fill.dirtと進みます。
5. r.fill.dirダイアログでDEMレイヤを標高として選択します。方位角の形式で出力のフォーマットはデフォルトのgrassのままにしておきます。窪地なしDEMの出力をDEM_filled.tifとして保存し(必ずGeoTiffを選択してください)、他の出力レイヤーのチェックは不要なので全て外してください。
6. 実行をクリックします。処理が終わったらダイアログを閉じます。処理にはしばらく時間がかかります。ログの赤い警告は無視してください。
こちらでアルゴリズムについてさらに詳細な情報を見ることができます。
7. レイヤパネルからDEMレイヤを削除して、次に進むためにDEM_filledレイヤがあるだけの状態にします。
3. 累積流量と排水方向を計算する
次のステップでは埋め立て済みのDEM上の累積流量を計算します。
1. プロセッシングツールボックスで GRASS | ラスタ (r.*) | r.watershedを選択します。
r.watershed ツールには様々な設定があります。GRASSのこのツールのマニュアルのページ でアルゴリズムの設定についてより詳細に学べます。
2. r.watershedダイアログで、標高としてDEM_filledを選択します。外部流域の最小サイズを500ピクセルに設定し、単一フロー(SFD)を使うにチェックを入れます。排水先セルの数の出力を accumulation.tif に保存し、排水方向の出力を flowdir.tif に保存します。他の出力は不要なのでチェックを外しておきます。
3. 実行をクリックします。処理が終わったらダイアログを閉じます。赤色の警告は無視してください。
流向レイヤは、GRASSの定義を用いてエンコードされています。排水は、北東方向の1から始まる反時計回りに番号が振られた8つの方向です。値0は、セルが窪地であることを示します。負の値は、地表流出が現在の地理的領域の境界を離れていることを示しています。これらの負のセルの絶対値は、流れの方向を示しています。したがって、flowdirレイヤを絶対値に変換する必要があります。
4. メインメニューでラスタ | ラスタ計算機と進みます。
5. ラスタ計算機で次の色を設定します。
( "flowdir@1" < 0 ) * -1 * "flowdir@1" + ( "flowdir@1" >= 0 ) * "flowdir@1"
4. 河川の累積流量の閾値を定義する
"accumulation@1" > 50000
5. 河川を定義する
前セクションでは、河川を決定するための累積流量の閾値を決定しました。ここでは、その閾値を使って、河川を定義していきます。
1. プロセッシングツールボックスで GRASS | ラスタ (r.*) | r.stream.extractと進みます。
2. r.stream.extractダイアログで、標高ラスタにDEM_filledを、累積流量ラスタに accumulationを選択します。河川の最低累積流量の値を50000セルに変更します(これは前のセクションで決定した値です)。河川IDのベクタを streams.gpkg に保存します。他の出力は必要ありません。
3. 詳細パラメータの中のv.out.ogr出力タイプをlineに変更します。
4. 実行をクリックします。処理が終わったらダイアログを閉じます。ログの赤い警告は無視します。
* 1: これは、ラインベクターに対する GeoPackage 出力フォーマットでのみ動作します。シェープファイルの場合は空のレイヤーになります。
* 2: 累積流量ラスタはオプションです。これを指定しないと、累積流量を再度計算しますが、結果は前のセクションで計算したものとは若干異なります。
r.stream.extractのより詳細な情報についてはマニュアルを参照ください。
5. streamsベクタレイヤのスタイルを設定します。
これで、河川の決定ができたので、集水域を作りたい河川の流出口を決定することができます。
6. 集水域を求める
次のステップは決定した河川の集水域の流出口を探し、この流出口の集水域を計算していきます。
1. 下流の方で、Rur(オランダ語で Roer)川が Meuse(オランダ語で Maas)川に入るおおよその位置を見つけるために、境界線上の流れをたどってください。この位置を見つけるために、OSM Standardとstreamsベクターレイヤを使用してください。
2. プロセッシングツールボックスで GRASS | ラスタ (r.*) | r.water.outletと進みます。
3. r.water.outlet ダイアログで入力ラスタとしてflowdirabsを選択します。 出口(outlet)の座標で をクリックし、定義された河川上の点を選択します。十分な縮尺までズームインしてください。
4. catchment.tifとして流域を保存します。
5. 実行をクリックします。処理が終わったらダイアログを閉じます。
6. レイヤパネルのcatchmentレイヤで右クリックし、レイヤの領域にズームを選択します。
次に集水域をポリゴンに変換する必要があります。
7. プロセッシングツールボックスでGRASS | ラスタ (r.*) | r.to.vectを選びます。
8. r.to.vect ダイアログで、入力ラスタレイヤとして catchment を選択し、地物のタイプとして area を選択します。それ以外はデフォルトのままにしておきます。ベクタ化された出力をRur_catchment.shpとして保存します。
9. 実行をクリックします。処理が終わったらダイアログを閉じます。
10. レイヤのスタイルを設定します。