チュートリアル: 河川の到達時間を計算する (Kirpich方程式)
Site: | OpenCourseWare for GIS |
Course: | QGIS上級者向けチュートリアル |
Book: | チュートリアル: 河川の到達時間を計算する (Kirpich方程式) |
Printed by: | Guest user |
Date: | Friday, 3 January 2025, 2:17 AM |
1. 概要
このチュートリアルでは河川の到達時間を計算していきます。Kirpich方程式を使用しますが、同様の方法で他の方程式にこのやり方を適用することもできます。
Kirpich方程式:
tc = k * (dx ** const1) * (S ** const2)
変数について:
tc
= 集中時間(分)k
= 0.0195(SI単位に変換)dx
= 最初と最後のノード間の距離(メートル単位)S
= m / m単位の最初と最後のノード間の標高差const1
= 0.77const2
= -0.385
このチュートリアルを通して以下のことができるようになります:
- 河川の最長のパスを選択する
- 線分を一つにまとめる(Dissolve)
- 河川の最初と最後のノードを見つける
- 最初と最後のノードを一つのポイントベクターレイヤーとしてマージする
- これらのポイントに対してDEMから標高を付与する
- 手作業またはPyQGISスクリプトを使用してKirpich方程式を計算する
2. 河川の最長のパスを選択する
この最初のステップでは到達時間を計算したい河川の最長のパスを選択します。残念なことにそれを選択する簡単なツールはありませんので、手動で行っていきます。
1. QGISを起動します
2. このチュートリアルで使用するGeoPackageからKirpichプロジェクトを開きます。メインメニューのプロジェクト | 開く | GeoPackage... を選択します。
3. GeoPackageからプロジェクトを読み込むダイアログで、Kirpich_data.gpkg を参照し、Kirpich をプロジェクトとして選択します。
プロジェクトは集水式ポリゴン(catchpoly)、 channels、 DEM (SRTM 1-Arc Second)を含んでおり、陰影起伏図とのブレンディングを用いてスタイリングされています。
4. channelsをクリックします
5. 地物を選択 アイコン をクリックします
6. ここで上流から下流まで河川の最長となる線分を選択していきます。<shift>ボタンを押しながら線分を追加します。必要であればズームインしてください。マウスのスクロールボタンでズームイン・アウトしたり、スペースキーと組み合わせてマウスでパンすることができます。もし間違えて別の線分を選択してしまった場合はもう一度クリックすれば選択を解除できます。
最長のパスを選択した後は上の画像のように黄色になるはずです。
この最長パスを新しいレイヤーとして出力します。
7. レイヤーパネルのchannels上で右クリックし、エクスポート | 選択地物の保存... を選択します。
8. ダイアログでこれを Kirpich_data のGeoPackageにriverというレイヤ名でOKをクリックして保存します。
9. channelsからriverにスタイルをコピーします: channels 上で右クリックし、 スタイル | スタイルをコピー | 全スタイルカテゴリ... を選択し、and click right on Kirpich_data river 上で右クリックし、 スタイル | スタイルの貼り付け | 全スタイルカテゴリ を選択します。
10. channels レイヤを削除します。
これで河川の最長パスだけが表示されました。
次のステップでは最長パスのそれぞれの線分を一つにまとめて(dissolve)いきます。
3. 河川の線分を一つの地物にまとめる(Dissolve)
今の河川レイヤーはそれぞれが始点と終点のノードを持つ複数の線分から構成されているため、まずそのレイヤーをまとめる(dissolve)する必要があります。そうすることで一つの地物とすることができます。
1. メインメニューで ベクタ | 空間演算ツール | 融合(Dissolve)... を選択します。
2. 融合(Dissolve)ダイアログでKirpich_data riverレイヤを入力レイヤとして選択します。基準となる属性は選択せずに、そのレイヤをKirpich_data GeoPackageに river_dissolvedという名前で保存するようにし、実行をクリックします。
3. プロセッシング後にClose をクリックします。
4. Kirpich_data riverレイヤからスタイルをコピーし、そのレイヤを削除します。
5. 属性テーブルを確認します。
次のセクションでは河川の始点と終点のノードを見つけていきます。
4. 河川の始点と終点のノードを見つける
このステップでは河川の始点と終点のノードを見つけていきます。後に行うKirpich方程式でこれらのポイント間の距離と標高差が必要となります。
1. プロセッシングツールボックスを開きます: メインメニューのプロセッシング | ツールボックスを開きます。
2. ツール上で ベクタジオメトリ | 特定の点の抽出を選択します。
5. 始点と終点のノードに標高を付与する
6. PyQGISで河川の到達時間を計算する
Kirpich方程式:
tc = k * (dx ** const1) * (S ** const2)
変数について:
tc
= 到達時間(分)k
= 0.0195(SI単位に変換)dx
= 最初と最後のノード間の距離(メートル単位)S
= m / m単位の最初と最後のノード間の標高差const1
= 0.77const2
= -0.385
これでPythonコンソールが画面の下側に表示されました。
2. エディタの表示アイコンをクリックします。
コードを書くことができるエディタを開きます。PyQGISを学べる無料のチュートリアルをこちらで見ることができます。
3. 下のスクリーンショットのようにコードを書きます。#から始まる行はコメントになります。またはGitHubからスクリプトをダウンロードすることができます。
4. ボタンをクリックし、スクリプトをKirpich.pyとして保存します。
5. をクリックしスクリプトを実行します。
Pythonコンソールで結果を見ることができます:
到達時間は21.8分となりました。