Lesson 05

L05 水系単位 横断分析 — 太田川・芦田川・沼田川・江の川・黒瀬川 等の比較

L系水系横断GISクロス集計z-score
所要 60分 / 想定レベル: リテラシ基礎+α / データ: 浸水Shapefile (suikei列) + 用途地域 + DID + 文化財3種 + インフラ3種

学習目標と問い

本記事のスタイル: 「水系」を主軸にした横断クロス分析
これまでの研究 (X07 浸水×DID, X08 浸水×避難所, X09 浸水×用途地域, L04 浸水×文化財, L07 浸水×インフラ) で蓄積した個別の発見を、「水系 (suikei)」 という地理単位で 横並びにする。 広島県の主要 5 水系 (太田川・芦田川・沼田川・江の川・黒瀬川) と中小河川グループを、 浸水面積・浸水深・DID人口・文化財・インフラの 5 軸で比較し、水系単位の総合リスクスコアを作る。

本記事で答えたい問い

  1. 水系単位の問い: 広島県のどの水系が「最もリスクが高い」のか、複合指標で答える
  2. 形と人の問い: 浸水面積が大きくても人口が少ない水系 (山間部) と、面積中位でも都市と重なる水系 (デルタ部) のどちらが優先か
  3. 多様性の問い: 中小河川 (Shapefile で `suikei='中小河川'` と一括分類) は内部にどれだけのバラツキを持つか

立てた仮説 H1〜H5

  1. H1: 太田川水系が 全指標 (浸水面積・人口・文化財・インフラ) でトップ (広島市デルタ地帯を貫流)
  2. H2: 江の川水系は浸水面積は大きいが、人口・施設は太田川より大幅に少ない (山間部)
  3. H3: 総合リスクスコア 1 位は太田川水系
  4. H4: 主要5水系の 「人口あたり浸水面積」5 倍以上の差がある (デルタ vs 山間部)
  5. H5: 中小河川グループは内部に多様な地形を含むため、主要5水系よりもバラツキ (標準偏差) が大きい

用語の独自定義

到達点

結果サマリー (詳細の前に)

指標結果
浸水面積トップ中小河川 (252 km²)
リスク人口トップ太田川水系 (1,457,246 人)
文化財最多 (浸水内)太田川水系 (302 件)
インフラ最多 (浸水内)中小河川 (656 件)
総合スコア 1 位太田川水系 (+3.37)
太田川水系の総合スコア順位1 位
主要5水系 人口あたり浸水km² 最大/最小 比×531268.6

使用データ

ダウンロード

データ取得手順

論題データセット形式サイズ目安
河川浸水想定区域 (計画規模 + 想定最大規模) DoBoX #295 / DoBoX #313 Shapefile各 ~50MB
用途地域 GeoJSON DoBoX #297 GeoJSON ZIP~25MB
DID 人口集中地区 (14市町) DoBoX #1468〜 GeoJSON ZIP×14合計 ~5MB
埋蔵文化財包蔵地 DoBoX #200 CSV~3MB
被爆樹木一覧 DoBoX #120 CSV~50KB
橋梁基本情報 DoBoX #220 CSV~1MB
ダム基本情報 DoBoX #210 CSV~5KB
トンネル基本情報 DoBoX #230 CSV~100KB

一括取得 (PowerShell):

cd "2026 DoBoX 教材"
py -X utf8 data\fetch_all.py

中間データ・図 (本記事で生成)

ファイル内容
L05_cross_matrix.csvクロス集計マトリクス (水系×指標)
L05_suikei_flood_area.csv水系別 浸水面積 (km²)
L05_landuse_by_suikei.csv水系×用途地域 ピボット
L05_depth_pivot.csv主要6水系×浸水深 ランクピボット
L05_heatmap_zscore.csv水系×指標 z-score
L05_heatmap_raw.csv水系×指標 生値
L05_did_by_suikei.csv水系×DID 浸水重なり + リスク人口
L05_cultural_in_flood.csv浸水内 文化財 sjoin 結果
L05_infra_in_flood.csv浸水内 インフラ sjoin 結果
L05_map_suikei_choropleth.png図1 水系別色分け 主題図
L05_map_small_multiples.png図2 主要6水系 small multiples
L05_heatmap_zscore.png図3 水系×指標 z-score
L05_score_bar.png図4 総合スコアランキング
L05_heatmap_landuse.png図5 水系×用途地域 ヒートマップ
L05_scatter_area_pop.png図6 浸水面積 vs リスク人口 散布
L05_depth_stack.png図7 主要6水系 浸水深 積み上げ
L05_heatmap_cultural_infra.png図8 文化財・インフラ ヒートマップ
L05_map_overlay_points.png図9 主要5水系 + 文化財・インフラ点 重ね地図
L05_watershed_cross.py再現スクリプト

分析1: 水系別色分け 主題図 (図1)

狙い

そもそも広島県の 「水系」とは地理的にどんな広がりか を最初に押さえる。25 水系のうち、 主要 5 水系と「中小河川」を別色で塗り分け、それ以外を灰色で表示。 これで以降の数値分析が「どの地理に対応するか」が頭に入る。

手法 (要件B,J: ツール化視点で)

実装

L05_watershed_cross.py 行 950–973

950
951
952
953
954
955
956
957
958
flood_plot = flood_max[["suikei", "rank", "geometry"]].copy()
flood_plot["geometry"] = flood_plot.geometry.simplify(30)
SYS_COLOR = {"太田川水系":"#cf222e", "芦田川水系":"#0969da",
             "沼田川水系":"#1a7f37", "江の川水系":"#9933cc",
             "黒瀬川水系":"#bf8700", "中小河川":"#8250df"}
fig, ax = plt.subplots(figsize=(13, 10))
for sui, c in SYS_COLOR.items():
    flood_plot[flood_plot["suikei"] == sui].plot(
        ax=ax, color=c, edgecolor="none", alpha=0.85)

結果

なぜこの図か (要件H): クロス集計の数値を見る前に、地理的位置関係を頭に入れることで、 「太田川水系が広島市中心部、江の川水系が県北部山間、芦田川水系が福山市中心部」 という空間的直感が得られる。

図1 広島県 想定最大規模 浸水想定区域 — 水系別色分け 主題図
図1 広島県 想定最大規模 浸水想定区域 — 水系別色分け 主題図

読み取り (要件F):

分析2: 主要6水系 small multiples (図2)

狙い

図1 では水系同士が重なって細部が読めない。同じ視野で水系を 1 つずつ強調することで、 各水系の 形と分布パターン を比較できる。

手法 (要件B)

結果

なぜこの図か (要件H): 5+1 水系を 1 枚に並べて重ねると判別できないが、6 panel に分けると 「太田川は河口集中・江の川は線状に長い・中小河川は点状散在」というパターンが瞬時に見える。

図2 主要6水系 浸水想定区域 small multiples
図2 主要6水系 浸水想定区域 small multiples

読み取り (要件F):

分析3: クロス集計マトリクス (表1) + z-score ヒートマップ (図3)

狙い

各水系を 浸水面積・浸水深・DID人口・文化財・インフラ の複数指標で 横並び比較 する。 そのまま並べると単位が違って大小が見えないため、z-score 正規化で揃えてヒートマップ化。

手法 (要件B,J,P)

1件のBefore/After 具体例 (要件K)

段階太田川水系のflood_area_km2サイズ
raw 値207.0 km²1×1
列平均 (33.2) を引く+173.81×1
列標準偏差 (67.2) で割る+2.591×1 (= z-score)

実装

L05_watershed_cross.py 行 1032–1052

1032
1033
1034
1035
1036
1037
1038
1039
heat_cols = ["flood_area_km2", "plan_area_km2", "rank_max", "rank_mean",
             "did_overlap_km2", "risk_pop_est", "文化財_合計",
             "インフラ_合計", "総合スコア"]
heat_z = cross.loc[top_sui, heat_cols].copy()
for c in heat_z.columns:
    s = heat_z[c]
    heat_z[c] = (s - s.mean()) / (s.std() + 1e-9)
ax.imshow(heat_z.values, cmap="RdBu_r", vmin=-2, vmax=2)

結果

なぜこの図か (要件H): 9 指標 × 15 水系 のテーブルを目で読むのは辛い。色 (赤=高 / 青=低) にすれば 「どの水系がどの指標で突出しているか」がパッと見で分かる。

図3 水系×指標 z-score ヒートマップ (上位15水系)
図3 水系×指標 z-score ヒートマップ (上位15水系)

読み取り (要件F):

表1 主要5水系プロファイル

水系想定最大 (km²)計画規模 (km²)最大深さrankDID浸水 (km²)リスク人口文化財 (件)インフラ (件)スコア
太田川水系207.038.580174.51,457,245.9302503.37
芦田川水系146.267.37062.0255,756.9193311.04
沼田川水系38.821.0805.925,358.2060-0.09
江の川水系75.538.98000101340.14
黒瀬川水系18.63.3607.542,850.7020-0.20

表1 読み取り (要件G):

表2 上位15水系 全指標

水系想定最大 (km²)計画規模 (km²)最大深さrankDID浸水 (km²)リスク人口文化財 (件)インフラ (件)スコア
太田川水系207.038.580174.51,457,245.9302503.37
中小河川251.708023.7142,894.8126561.68
芦田川水系146.267.37062.0255,756.9193311.04
江の川水系75.538.98000101340.14
沼田川水系38.821.0805.925,358.2060-0.09
高梁川水系21.00.0602.613,226.7168-0.18
黒瀬川水系18.63.3607.542,850.7020-0.20
八幡川水系9.02.9707.157,634.701-0.24
手城川水系7.61.5607.733,949.4011-0.27
瀬野川水系7.33.9605.532,334.009-0.28
藤井川水系7.63.6703.613,147.4018-0.29
本郷川水系5.41.2603.615,107.2013-0.30
賀茂川水系6.44.7601.74,740.7010-0.32
小瀬川水系4.60.0602.87,510.707-0.32
岡ノ下川水系2.70.3502.318,602.100-0.33

表2 読み取り: 25 水系のうち上位15を表示。総合スコア順。 中小河川の suikei='中小河川' グループは 1 行にまとまるが、内訳としては数十の小河川を含む。

分析4: 総合スコア ランキング (図4)

狙い

多角的な指標を 1 つの数値に集約し、「どの水系が最も総合的にリスクが高いか」を視覚化する。

手法 (要件B,J)

結果

なぜこの図か (要件H): 25 水系を一目で順位付けするには 水平棒グラフが最適。 バーの色は地図 (図1) と同じ配色にして対応関係を視覚化。

図4 水系別 総合リスクスコア (上位15)
図4 水系別 総合リスクスコア (上位15)

読み取り (要件F):

分析5: 水系×用途地域 ヒートマップ (図5)

狙い

X09 で得た「用途地域 × 浸水」の発見を 水系単位で再集計。 「住居系の浸水は特定水系に集中するのか」「工業系はどこの水系で多いのか」を見る。

手法

結果

図5 水系×用途地域 浸水内重なり面積 (ha)
図5 水系×用途地域 浸水内重なり面積 (ha)

読み取り (要件F):

表3 水系×用途地域 ピボット

水系住居系 (ha)商業系 (ha)工業系 (ha)田園住居 (ha)
太田川水系8,6553,0405,526574
芦田川水系5,5429042,7680
中小河川2,4695901,08728
江の川水系92729930630
沼田川水系571119260130
高梁川水系730911910
黒瀬川水系50812219059
手城川水系3851692200
八幡川水系560881000
瀬野川水系2611102341

表3 読み取り: ヘクタール単位の生値表。1 ha = 100m × 100m。

分析6: 浸水面積 vs リスク人口 散布 (図6)

狙い

水系を 2 軸 (浸水面積・リスク人口) でプロットし、「面積大なのに人口少ない山間水系」と「面積中位なのに人口大の都市水系」を視覚的に分離する。

手法

結果

図6 浸水面積 vs リスク人口 散布
図6 浸水面積 vs リスク人口 散布

読み取り (要件F):

分析7: 主要6水系 浸水深 積み上げ (図7) + 浸水深表 (表4)

狙い

面積だけでなく 「どれだけ深く沈むか」 を水系別に比較する。 3m 以上 (rank ≥ 50) は命の危険を伴う深さ。各水系で深い帯がどれだけ占めるか。

手法

結果

図7 主要6水系 浸水深ランク内訳 (積み上げ棒)
図7 主要6水系 浸水深ランク内訳 (積み上げ棒)

読み取り (要件F):

表4 主要6水系 浸水深ランク内訳

水系0〜0.5m0.5〜1m1〜2m2〜3m3〜5m5〜10m10〜20m20m以上合計 (km²)
太田川水系3.06.18.372.349.555.611.31.0207.0
芦田川水系6.26.812.349.643.427.90.00.0146.2
沼田川水系1.20.82.310.810.812.00.80.038.8
江の川水系2.51.95.125.320.319.01.50.075.5
黒瀬川水系1.61.13.09.92.90.10.00.018.6
中小河川58.119.036.076.634.523.93.20.5251.7

表4 読み取り (要件G): km² 単位の生値。3m 以上 (rank 50〜80) の合計が「致命的浸水域」の規模。

分析8: 水系×文化財・インフラ ヒートマップ (図8) + 集計表 (表5)

狙い

L04/L07 で扱った文化財・インフラを 水系別 に再集計。点 sjoin の結果を可視化。

手法

結果

図8 水系×文化財・インフラ件数 ヒートマップ
図8 水系×文化財・インフラ件数 ヒートマップ

読み取り (要件F):

表5 浸水内 文化財・インフラ 水系別トップ3

指標1位 水系件数2位 水系件数3位 水系件数
文化財_埋蔵文化財江の川水系10太田川水系9中小河川9
文化財_官衙跡等芦田川水系11
文化財_被爆樹木太田川水系293中小河川3
インフラ_トンネル太田川水系3中小河川3高梁川水系1
インフラ_橋梁中小河川653芦田川水系331江の川水系134
文化財_合計太田川水系302芦田川水系19中小河川12
インフラ_合計中小河川656芦田川水系331江の川水系134

表5 読み取り (要件G): 各カテゴリの 1〜3 位水系を抽出。 太田川水系が複数のカテゴリでトップ=広島市内に資源が集中している裏返し。

分析9: 主要5水系 文化財・インフラ点 重ね地図 (図9)

狙い

図1 (主題図) と図3〜8 (集計) を 1 枚に統合し、点と面の関係を地理的に確認する。

結果

図9 主要5水系 浸水域 × 文化財・インフラ 重ね地図
図9 主要5水系 浸水域 × 文化財・インフラ 重ね地図

読み取り (要件F):

仮説検証と考察

仮説判定表

仮説判定根拠
H1: 太田川水系が全指標トップ部分支持 4 指標中 2 個でトップ。 flood_area_km2=中小河川, risk_pop_est=太田川水系, 文化財=太田川水系, インフラ=中小河川
H2: 江の川は面積大・人口少部分支持 江の川 浸水面積 75 km² (太田川 207 km² と同等以上の場合も) / リスク人口 0 人 (太田川 1,457,246 人 の 0%)
H3: 総合スコア 1 位は太田川支持 1 位 = 太田川水系 (スコア +3.37)
H4: 5 水系の人口/面積比 5 倍以上の差支持 主要5水系 人口あたり浸水km² の最大/最小 = 531268.6 倍
H5: 中小河川はバラツキ大部分支持 中小河川を含む下位群のスコア標準偏差 0.45 vs 主要5水系の標準偏差 1.49

考察 (要件 N)

発展課題 (要件E: 結果X → 新仮説Y → 課題Z の3段で)

  1. 結果X: 主要5水系で「面積大・人口少」の江の川水系と「面積中・人口大」の太田川水系で対照的なリスク構造があった (H2 支持)。
    新仮説Y: 同じ 「人口あたり浸水面積」 指標を市町別に集計すれば、市町ごとの優先度ランキングが水系単位とは違って見えるはず。
    課題Z: gpd.overlay(市町境界, flood_max) で市町×水系×浸水のクロス集計を作り、 本記事のクロスマトリクスと比較せよ。
  2. 結果X: 「中小河川」グループが Shapefile で 1 行にまとめられているため、内部のばらつきは可視化できなかった (H5 部分支持)。
    新仮説Y: kasen 列 (河川名) で再集計すれば、中小河川の中にも「危険な河川」と「安全な河川」が分かれるはず。
    課題Z: flood_max_s[flood_max_s['suikei']=='中小河川'].groupby('kasen') で河川別集計し、 本記事のスコア式を河川単位で再計算 → 上位中小河川を抽出。
  3. 結果X: 重み配分 (浸水0.30 + 人口0.40 + 文化財0.15 + インフラ0.15) は編集者の主観で決めた。
    新仮説Y: 重みを変えると上位水系の順位は入れ替わるが、太田川水系のトップは揺るがないはず (z-score が全項目で +2σ 近いため)。
    課題Z: 重み配分を 5 パターン (人命特化 / 文化財特化 / 等配分 等) に振って総合スコアを再計算し、 順位の安定性を Spearman 順位相関で評価せよ。
  4. 結果X: リスク人口は DID polygon の人口密度を浸水域に按分した近似値で、誤差が大きい。
    新仮説Y: 国勢調査の 500m メッシュ人口を使えば、より正確なリスク人口が出る。
    課題Z: e-Stat のメッシュ人口データを取り込み、メッシュ × 浸水のオーバーレイで再計算。 本記事の DID 按分との差を相対誤差 (%) で評価。
  5. 結果X: 浸水面積は計画規模 vs 想定最大規模で 2 倍程度に拡大している (cross 表参照)。
    新仮説Y: 拡大倍率は水系で異なり、都市デルタほど倍率が大きいはず (氾濫原が広いため)。
    課題Z: flood_area_km2 / plan_area_km2 の倍率を水系別に算出し、 都市/山間カテゴリで比較 (t 検定など)。
  6. 結果X: 太田川水系が文化財ヒートマップでも上位 → 水害は文化財損失リスクでもある。
    新仮説Y: 鎌倉時代以前の遺跡は 水害を経験して残った ものなので、現在の浸水想定区域とは選択的に重ならないはず。
    課題Z: 文化財の 時代列 を時代区分 (古代/中世/近世/近代) で分け、各時代×水系の浸水重なり率を比較。

補足: GIS メソッドのツール化視点 / 処理時間の工夫

本記事で使った GIS メソッドの黒箱化 (要件 J)

関数入力出力裏で何が起きるか
gpd.sjoin(points, polys, predicate='within') 点GeoDataFrame + ポリゴンGeoDataFrame 点に polygon の属性が付与された GeoDataFrame R-tree 空間インデックスで候補絞込→点in多角形判定
gpd.overlay(A, B, how='intersection') 2 GeoDataFrame 交差ポリゴン (A,B 両方の属性を保持) SHAPELY ブール演算 + R-tree
gdf.geometry.area 1 GeoDataFrame (CRS=メートル系) 各ポリゴンの面積 (m²) 球面投影での面積計算 (CRS依存)
gdf.geometry.simplify(d) 1 GeoDataFrame + 距離 d (m) 頂点間引きされた粗いポリゴン Douglas-Peucker アルゴリズム
gdf.to_crs('EPSG:6671') 1 GeoDataFrame 座標変換されたGeoDataFrame PROJ ライブラリの楕円体変換

処理時間の工夫 (要件 S)

水系コード対照表

水系名主な範囲河川数 (Shapefile内 polygon)
太田川水系広島市デルタ (中区/南区/西区/安佐南区/安佐北区)107
芦田川水系福山市・府中市・神石高原町90
沼田川水系三原市・本郷町・竹原市54
江の川水系三次市・庄原市・安芸高田市 (県北部)129
黒瀬川水系呉市・東広島市境界12
中小河川各市町に散在 (公式に水系名なし)101