Rainfall Runoff / Kinematic Wave / Python

斜面の雨水流出解析
キネマ法デモ

DEMから流下方向を求め、降雨・損失雨量・粗度係数を与えて、斜面流の流下と流域出口のハイドログラフを計算するPythonベースのデモです。 砂防・斜面・小流域の降雨流出解析のプロトタイプとして利用できます。

分布型キネマティックウェーブ法の概念図

分布型キネマティックウェーブ法とは

キネマティックウェーブ法は、斜面や河道の流れを「水深・勾配・粗度」から求める簡略化された流出モデルです。 分布型にすると、DEM格子ごとに降雨入力と流下方向を持たせられるため、斜面ごとの流出集中、到達時間、ピーク流量の変化を説明しやすくなります。

分布型格子モデル

DEMを格子化し、各セルで有効降雨、表面水深、流下方向、流出量を計算します。

キネマティックウェーブ

慣性項を省略し、流量を水深と勾配の関数として扱うため、斜面流のデモや小流域の概略計算に向いています。

Python実装

NumPy中心の軽量構成で、後からGeoTIFF DEM、降雨時系列、土地利用別粗度、流域界に差し替えられます。

降雨と流出ハイドログラフの表示例

サンプルでは、時間変化する降雨を与え、各セルで有効降雨を計算し、D8流下方向に沿って水量を下流へ受け渡します。 出口セルの流量を時系列で集計することで、簡易ハイドログラフを確認できます。

降雨と流出ハイドログラフのサンプル
降雨ピークに少し遅れて流出ピークが発生する様子を示すデモ図です。

キネマ法デモの計算結果図

分布型キネマティックウェーブ法のデモとして、流域出口ハイドログラフ、セル別の表面水深・流速分布、 到達時間・流下経路、降雨条件変更時のピーク比較を図化したものです。 実データに置き換える場合も、同じ構成で計算結果を確認できます。

キネマ法デモの流域出口ハイドログラフ
1. 流域出口ハイドログラフ 降雨強度と出口流量を同一図に表示し、降雨ピーク後に流出ピークが現れる様子を確認できます。
セル別の表面水深と流速分布
2. セル別の表面水深・流速分布 格子セルごとの表面水深と流速ベクトルを並べて表示し、谷筋への流出集中を把握できます。
到達時間と流下経路の確認図
3. 到達時間・流下経路の確認図 DEM上に到達時間、等高線、代表流下経路を重ね、どの斜面から出口へ水が集まるかを確認できます。
降雨条件変更時の流出ピーク比較
4. 降雨条件変更時の流出ピーク比較 弱雨・基準・強雨の3ケースを比較し、ピーク流量とハイドログラフ形状の変化を確認できます。

入力データ

  • 1mまたは5m程度の標高メッシュ DEM
  • 流域界・斜面区分・河道ライン
  • 降雨時系列、損失雨量、浸透条件
  • 土地利用別の粗度係数
  • 流域出口または評価地点

出力結果

  • 流域出口ハイドログラフ
  • セル別の表面水深・流速分布
  • 到達時間・流下経路の確認図
  • 降雨条件変更時の流出ピーク比較

解析フロー

実務化する場合は、GeoTIFF DEM、降雨データ、土地利用・地質に応じた損失条件を読み込み、観測流量でパラメータを調整します。

  1. DEM読込標高メッシュから流下方向と局所勾配を計算
  2. 有効降雨降雨量から浸透・初期損失を差し引く
  3. 斜面流計算Manning型のキネマティックウェーブ式で流量を計算
  4. 下流伝播D8流下先へセル水量を受け渡す
  5. 出口流量評価地点の流量時系列をハイドログラフ化

Pythonソースサンプル

以下は scripts/kinematic_wave_slope_runoff_sample.py の内容です。 NumPyのみで計算の骨格を確認でき、matplotlibがある場合は水深分布とハイドログラフをPNG出力します。

scripts/kinematic_wave_slope_runoff_sample.py Python
読み込み中...

実務適用時の注意

このデモは斜面流出解析の考え方を説明するための簡易モデルです。実流域へ適用する場合は、河道追跡、損失雨量、飽和・不飽和浸透、観測流量によるキャリブレーション、土砂流出や流木条件との連携を検討します。