⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。
| ID | データセット名 |
|---|---|
| #333 | dataset #333 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #999 | dataset #999 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/X09_flood_landuse_zone.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
geopandas.overlay() で 用途地域 × 浸水想定ポリゴン の交差を計算し、
浸水Shapefile に隠れていた rank 列 (浸水深 8 段階) を活用して、
従来は 1 軸でしか見られなかったリスクを 用途 × 浸水深 × 水系 の3次元で可視化する。
| 指標 | 結果 |
|---|---|
| 浸水重なり最大の用途 (絶対面積) | 第一種住居 (3058 ha) |
| 浸水率最大の用途 (密度) | 準工業 (93.8%) |
| 計画→想定最大 増加倍率最大 | 第一種低層住居専用 (×9.31) |
| 致命的浸水 (3m以上) 最多用途 | 第一種住居 (3953 ha) |
| 想定最大規模 全用途合計 | 20705 ha |
rank 列(整数 10-80) が浸水深ランク。これまでの研究では未活用だったsuikei列でフィルタすれば個別水系の中身を完全再現できます (例: flood_max[flood_max['suikei']=='太田川水系'] で #36 と等価)。
したがって本記事は 河川浸水想定区域 39 件全部を論理カバー しています。
個別水系特化の深掘り研究 (M1 太田川 / M2 江の川 / M3 芦田川 / M4 沼田川 / M5 黒瀬川) は今後の発展課題です。
| ファイル | 内容 |
|---|---|
| X09_yoto_max_summary.csv | 用途別 浸水面積 (重複除去済) |
| X09_yoto_depth_pivot.csv | 用途×浸水深ランク ピボット |
| X09_yoto_scale_compare.csv | 計画 vs 想定最大の比較 |
| X09_yoto_suikei_pivot.csv | 用途×水系 ピボット |
| X09_yoto_rate.csv | 用途別 浸水率 |
| X09_deadly_zone.csv | 致命的浸水 (3m以上) 用途別 |
| X09_yoto_depth_heatmap.png | 図1 用途×浸水深ヒートマップ |
| X09_map_yoto_depth_overlay.png | 図2 主題図 重ね合わせ |
| X09_map_yoto_inflood.png | 図3 主題図 浸水内のみ |
| X09_map_yoto_small_multiples.png | 図4 用途別 small multiples |
| X09_yoto_max_bar.png | 図5 用途別ランキング |
| X09_yoto_scale_compare.png | 図6 規模比較 |
| X09_yoto_suikei_heatmap.png | 図7 用途×水系 |
| X09_yoto_rate_bar.png | 図8 浸水率(密度) |
| X09_deadly_zone_bar.png | 図9 致命的浸水ランキング |
| X09_depth_stack.png | 図10 上位用途の浸水深内訳 |
| X09_flood_landuse_zone.py | 再現スクリプト |
flood Shapefile の rank 列(浸水深ランク) を活用し、
「どの用途が、どれくらいの深さで沈むか」 を 1枚の地図様マトリクスで把握する。
gpd.overlay(landuse_d, flood_max[['rank', ..., 'geometry']], how='intersection') で
rank 列を保持したまま 交差を計算。(yoto_name, rank) で集計 → ピボット → ヒートマップ。↑ X09_flood_landuse_zone.py 行 533–548
なぜこの図か: 2 軸 (用途×深さ) の値分布をひと目で見るにはヒートマップが最適。

読み取り:
地図上で「どこ」 を確認する。用途地域を背景の色面、浸水深を半透明の青〜紫で重ねる。
geopandas.GeoDataFrame.plot() で 2 レイヤを順に描画なぜこの図か: ヒートマップでは「どこ」が分からない。地図にすることで地理的偏りを補完する。

読み取り:
「実際に浸水する用途地域」の 形と地理的分布 を強調表示。
なぜこの図か: 浸水域内の polygon だけ用途別色分けし、非浸水部はグレーにすることで、リスクが地理的に どこに集中するか を直感的に把握できる。

読み取り:
用途を 1 つずつ取り出し、その用途だけの浸水分布 を 12 panel で並べる。形状の違いを比較。
なぜこの図か: 1 枚に全用途を重ねると密集して読み取れない。条件 (用途) だけ変えて並べる small multiples は比較用途で最適。

読み取り:
シンプルに「面積で何が一番多いか」をランキング。
↑ X09_flood_landuse_zone.py 行 612–619
612 613 614 |
なぜこの図か: 面積を直接比較するなら横棒グラフが最も読み取りやすい。

読み取り: 第一種住居 が突出。住居系 4 種で全体の半分超 (H1 支持)。
絶対面積では 「広い用途ほど浸水量が多い」のは当たり前。これを 浸水率(=浸水重なり / 用途総面積) で正規化することで、密度視点のリスクが見える。
↑ X09_flood_landuse_zone.py 行 627–634
627 628 629 |
なぜこの図か: 絶対面積と密度は別物。両方を並べることで「面積大なのに密度低い用途」「面積小なのに密度高い用途」が浮かぶ。

読み取り:
降雨規模を変えると、用途別の重なりはどう変化するか?

読み取り:
水系単位で重なり面積を集計。どの河川がどの用途を浸水させるか?

読み取り:
命の危険を伴う 3m 以上の浸水深 (rank ≥ 50) に絞り、用途別ランキング。
なぜこの図か: 浸水域全体ではなく、致命的な深さに絞ることで「人的被害が真に懸念される用途」がわかる。


読み取り:
用途を問わず、想定最大規模の浸水域全体での 深さの分布 を確認する。
| 浸水深ランク | 面積 (ha) | 用途地域内割合 |
|---|---|---|
| 0.0〜0.5m | 827.4 | 4.0% |
| 0.5〜1.0m | 793.7 | 3.8% |
| 1.0〜2.0m | 1151.3 | 5.6% |
| 2.0〜3.0m | 7287.9 | 35.2% |
| 3.0〜5.0m | 4936.0 | 23.8% |
| 5.0〜10.0m | 5005.1 | 24.2% |
| 10.0〜20.0m | 702.0 | 3.4% |
| 20m以上 | 1.2 | 0.0% |
| 合計 | 20704.7 | 100.0% |
読み取り:
クロス集計の上位 10 ペアを抽出。リスクが集中する組合せ。
| 用途 | 水系 | 面積(ha) |
|---|---|---|
| 第一種住居 | 太田川水系 | 5991.0 |
| 商業 | 太田川水系 | 3019.8 |
| 準工業 | 太田川水系 | 2252.5 |
| 工業 | 太田川水系 | 2180.0 |
| 第二種住居 | 太田川水系 | 2153.5 |
| 工業専用 | 太田川水系 | 1072.4 |
| 第一種住居 | 中小河川 | 735.0 |
| 田園住居 | 太田川水系 | 579.1 |
| 第二種中高層住居専用 | 太田川水系 | 478.2 |
| 第一種住居 | 八幡川水系 | 336.6 |
| 仮説 | 判定 | 根拠 |
|---|---|---|
| H1 住居系最多 (絶対面積) | 支持 | 図5 で第一種住居がトップ 3058 ha |
| H2 規模別比率の差 | 支持 | 図6 で増加倍率が用途で異なる |
| H3 商業地の特定水系集中 | 部分支持 | 太田川集中、図7 |
| H4 絶対 vs 密度の入替 | 支持 | 図8: 浸水率トップは 準工業 (93.8%) で絶対面積トップとは別 |
| H5 太田川水系集中 | 支持 | 図7 太田川水系が最も濃い |
| H6 増加倍率の用途差 | 支持 | 第一種低層住居専用 ×9.31 |
| H7 工業/工業専用の高浸水率 | 支持 | 港湾部立地で密度高 |
| H8 致命的浸水の住居系最多 | 支持 | 図9 (deadly bar) |
| コード | 用途名 | 主な特徴 |
|---|---|---|
| 1 | 第一種低層住居専用 | 戸建中心、低密度 |
| 2 | 第二種低層住居専用 | 低層、店舗一部可 |
| 3 | 第一種中高層住居専用 | マンション可、店舗制限 |
| 4 | 第二種中高層住居専用 | 中高層、店舗一部可 |
| 5 | 第一種住居 | 住宅+小規模店舗 |
| 6 | 第二種住居 | 住居+店舗・事務所 |
| 7 | 準住居 | 幹線沿い住居 |
| 8 | 近隣商業 | 近隣商業地 |
| 9 | 商業 | 商業中心地 |
| 10 | 準工業 | 軽工業+住居 |
| 11 | 工業 | 工場+一部住居 |
| 12 | 工業専用 | 工場専用 (住居不可) |
| 13 | 田園住居 | 農地と調和した住居 |
本記事で使った GIS 操作は、原理を理解した上で 「何が入って何が出るか」だけ覚えれば 利用できる。
| 関数 | 入力 | 出力 |
|---|---|---|
gpd.overlay(A, B, how='intersection') | 2 GeoDataFrame | 交差ポリゴン (両方の属性を保持) |
gdf.dissolve(by='col') | 1 GeoDataFrame + キー列 | キー単位で union された GeoDataFrame |
gdf.geometry.buffer(0) | 1 GeoDataFrame | 微小なトポロジ崩れを修正したジオメトリ |
gdf.to_crs('EPSG:6671') | 1 GeoDataFrame | 座標系変換 (面積を m² で正確に計算) |
ツール化の意味: 内部で R-tree 空間インデックス、トポロジ修正、Boolean 演算が走るが、利用者はそれを知らなくても結果が得られる。原理の理解 + ブラックボックス利用 が DoBoX の方針。
buffer(0) で TopologyException を予防