Flood Inundation / 2D Shallow Water / Python

河川氾濫2次元
シミュレーション

1m標高メッシュ、河川データ、堤防データを利用し、洪水時の越水・破堤・氾濫域の広がりを可視化するPythonベースの解析デモです。 まずは軽量なサンプルで計算フローを示し、実務版では境界条件やGIS入力を強化します。

河川氾濫シミュレーションの概念図

河川氾濫2次元解析の考え方

河川氾濫解析では、河道内の水位上昇、越水・破堤、氾濫原での水の広がりを2次元格子上で追跡します。 DEMと河川・堤防データを統合することで、浸水深・浸水範囲・流速の分布を地図として確認できます。

1m DEMを想定

平面直角座標系の標高メッシュを使い、河道・堤防・氾濫原を同じ格子上で扱います。

2次元浅水流モデル

Web掲載用サンプルでは拡散波近似の軽量モデルを示し、実務版では有限体積法や境界条件を強化します。

GIS連携

河川ポリゴン、堤防ライン、粗度区分、計算範囲をGeoPackageやShapefileから読み込む構成へ拡張できます。

最大浸水深分布の表示例

デモでは、河道と堤防を持つ人工DEMを作成し、上流流入と破堤想定を与えて、氾濫原に広がる水深を可視化します。 実データでは、GeoTIFFやGeoPackageから入力を読み込む構成に置き換えます。

最大浸水深分布のサンプル
河道沿いの越水・破堤から氾濫原へ水が広がる様子を示すデモ図です。

河川氾濫2次元シミュレーションのサンプル図

河川氾濫2次元シミュレーションの結果確認でよく使う、最大浸水深、時刻別浸水範囲、 流速・流向、浸水面積・浸水ボリューム・評価地点水位の4種類を追加しました。 実データに置き換える場合も、同じ図構成で解析結果を確認できます。

河川氾濫2次元シミュレーションの最大浸水深分布
1. 最大浸水深分布 DEM、河道、堤防、破堤箇所を重ね、計算期間中に発生した最大浸水深を平面分布で確認できます。
時刻別の浸水範囲と水深のサンプル図
2. 時刻別浸水範囲・水深 30分程度の計算時間内で、破堤後に浸水範囲が低地へ広がる過程を時刻別に比較できます。
流速分布と流向ベクトルのサンプル図
3. 流速分布・流向分布 水深があるセルの流速強度を色で示し、代表セルの流向をベクトルで重ねて、流下方向を把握できます。
浸水面積、浸水ボリューム、評価地点水位の時系列グラフ
4. 浸水面積・浸水ボリューム・評価地点水位 浸水面積、浸水ボリューム、評価地点の水位を時系列で表示し、被害規模とピーク発生時刻を確認できます。

入力データ

  • 1m標高メッシュ DEM
  • 河川範囲・河道中心線・断面情報
  • 堤防データ、破堤・越水想定箇所
  • 粗度係数、土地利用区分
  • 上流流量ハイドログラフ、下流水位条件

出力結果

  • 最大浸水深分布
  • 時刻別浸水範囲・水深
  • 流速分布・流向分布
  • 浸水面積、浸水ボリューム、評価地点水位

解析フロー

デモでは簡易な拡散波近似でWeb掲載しやすい形にしています。実務版では、CFL条件を満たす時間刻み、保存性の高い数値スキーム、境界条件、構造物条件を追加します。

  1. 地形読込DEM、河川範囲、堤防、粗度区分を格子へ変換
  2. 境界条件上流流量、下流水位、降雨、破堤条件を設定
  3. 氾濫計算水位勾配と水深から2次元フラックスを計算
  4. 時間更新水深、最大水深、浸水範囲をステップごとに更新
  5. 結果出力GeoTIFF、PNG、CSV、Web地図用データとして出力

Pythonソースサンプル

以下は scripts/floodstream_2d_shallow_water_sample.py の内容です。 人工DEMを使った軽量デモですが、実データのGeoTIFF DEM・河川・堤防データへ差し替えるテンプレートとして利用できます。

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

実務適用時の注意

このデモは河川氾濫解析の考え方をWeb上で説明するための簡易版です。実河川へ適用する場合は、河道断面、橋梁・樋門、堤防天端高、破堤幅、粗度係数、観測水位・浸水実績による検証が必要です。