Lesson 35

排水機場 2 件統合分析 — 広島県 15 機場 (3 港湾海岸 + 12 河川) が支える内水浸水防御の最終線

排水機場内水氾濫ポンプGISgeopandas浸水想定干拓地強制排水
所要 40 分 / 想定レベル: リテラシ / データ: DoBoX 排水機場 2 dataset (1269 港湾海岸, 1273 河川)

データ取得手順

⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。

IDデータセット名
#222dataset #222
#666dataset #666
#888都市計画区域情報_区域データ_安芸高田市_行政区域
#1269排水機場(港湾海岸)基本情報
#1273排水機場(河川)基本情報

実行コマンド:

cd "2026 DoBoX 教材"
python -X utf8 lessons/L35_drainage_pumps.py

DoBoX のオープンデータは申請不要・商用/非商用とも利用可。 data/extras/.gitignore 対象(約 57 GB のキャッシュ)。 スクリプト実行で自動再生成されます。

学習目標と問い

カバー宣言: 本記事は DoBoX のシリーズ 「排水機場 港湾海岸 / 河川」 2 件 (dataset_id = 1269, 1273) を統合し、広島県の排水機場の地理分布・ポンプ吐出能力・ 建設年代・浸水想定との重なりを分析する研究記事です。 本シリーズは港湾系シリーズ (L32-L34) の最終記事ですが、扱う施設は 港湾施設ではなく「内水排水施設」であり、 港湾海岸 (3 件) と河川 (12 件) の 2 つの設置目的を持ちます。

シリーズ構造判定: (a) 設置目的による 2 分割型 + (b) 完全相補

このシリーズの 2 件は、「排水機場の管轄」で 2 分されている相補型構造です。 L32-L34 の 「港湾 / 漁港」分割と異なり、「港湾海岸 / 河川」という 内水氾濫の主因に基づく分類です。

L32-L34 (港湾施設の 3 層) と同じ「港」を見る記事ではない点に注意。 L32-L34 は港湾の外洋・接岸・陸側の 3 層を扱ったが、 L35 は陸側にさらに溜まった雨水・氾濫水をポンプで汲み出す施設を扱う。 これは「内水浸水防御の最終線」であり、外郭・係留・交通とは目的が根本的に異なる。

独自用語の定義 (本記事内で固定)

用語定義
排水機場集水区の雨水・地下水・河川氾濫水をポンプで強制排水する施設。 内水氾濫を防ぐ最後の砦。本データに 15 件。 建屋 (ポンプ室) + ポンプ 39 台 + 吐出管 + 吸込水路 + 吐出水路 + 樋門 で構成される複合施設。
内水氾濫河川本流が氾濫しなくても、支流・側溝・下水管路の容量を超えた雨水が 低地に溜まる現象。本流の水位が高くて支流の水を受け入れられない (=堰き止め) ときに発生。 排水機場はこの内水を強制排水する。外水氾濫 (本流の決壊・越水) とは別物で、 排水機場は内水専用の防御施設。
吐出量 (m³/s)ポンプが 1 秒間に排水できる水量。本データの「総排水量(m3)」列は 表記上 m³ だが、値の桁 (1.3〜30) と排水機場の業界慣例から毎秒の吐出量 m³/sと解釈。 30 m³/s = 25 m プール 1 杯 (600 m³) を 20 秒で空にする能力。 1 m³/s = 約 1 トン/秒 = 大型ダンプカー 1 台/秒分の水量。
干拓地もとは海・湖だった場所を堤防で囲って水を抜き、陸地化した土地。 広島県では福山市芦田川河口の福山平野が代表例で、江戸期からの干拓により 広大な低地 (海抜 0 m 前後) が形成。排水機場が必須な土地条件で、 本記事で福山市に機場が集中する理由。
強制排水自然流下で水が引かない場合に、ポンプで動力的に水を持ち上げて排水すること。 河川本流の水位が支流より高い時 (= 自然流下不能)、 あるいは満潮時に港湾海岸が排水できない時に作動する。 電力 + 設備 + 維持管理が必要で、「最後の手段」として整備される。
守備範囲 (1 km バッファ)本記事独自指標。各機場が排水を担う集水区を 正確に特定するには排水計画書が必要だが、 本記事では機場から半径 1 km 圏を「物理的に近い守備候補範囲」と仮定し、 この圏内の浸水想定面積で機場の仕事量を測る。これは概算指標であり、 正確な集水区は別途取得が必要 (発展課題)。
浸水想定区域DoBoX が公開する河川浸水想定 Shapefile (39 河川統合版)。 1000 年確率規模降雨時の浸水域とその深さ (rank 10〜80 = 0.5m 未満〜20m 以上) を示す。 排水機場は本来この想定エリア内の低標高点に置かれるべきで、 機場立地と浸水想定の重なりは工学的整合性の指標。

研究の問い (RQ)

広島県の排水機場 (15 件) は、設置目的 (港湾海岸 3 / 河川 12)・ 地理分布 (沿岸低地 / 河川合流部 / 干拓地)・規模 (吐出量 m³/s)・建設年代の観点で どう構成され内水浸水想定とどう重なるのか?

  1. 2 dataset の構造比は? 河川主導が想定されるが、容量比でも本当に河川偏重か?
  2. 市町別の偏在 (福山市・広島市) は何を反映しているか? 干拓地・水系の特性?
  3. 排水容量はどう分布するか? 上位機場への集中度は?
  4. 建設年代の傾向は? 戦後の都市化期・近年の集中豪雨対応で集中ピークがあるか?
  5. 機場は浸水想定区域内に立地しているか? 位置の工学的整合性?
  6. 1 台あたり吐出量 (機械の大型化) は時代と共に増えているか?

仮説 H1〜H6

到達点

2 dataset を「港湾海岸 + 河川」の設置目的別の 2 カテゴリとして読み解き、 15 件の排水機場の地理分布・容量分布・建設年代・浸水想定との重なりを統合分析する。 これにより、広島県の内水浸水防御戦略が 「河川合流部での強制排水を主、港湾海岸でのサブ排水を従」とする構成であり、 かつ福山平野の干拓地に重点投資されていることを実データで裏付ける。 さらに、上位 2 機場が県全体の半分近くを担う強い集中構造と、 機械の大型化トレンドを統計的に示す。

本記事のスコープ外: 本記事は機場の立地構造と容量に集中する。 ポンプの消費電力・運転履歴・故障率、 集水区の正確な範囲と排水負荷曲線洪水時の運転実績などは本記事では扱わず発展課題とする。 また「総排水量(m3)」の単位については業界慣例の m³/s と解釈するが、 これは管理者の運用記録 (運転日誌等) で確認すべき (発展課題 Z6)。

使用データ

本記事が使用する 2 dataset_id の一覧。両者は同一スキーマ (9 列) で、 データセット名の括弧内 (港湾海岸 / 河川) で設置目的が分かれます。

dsidカテゴリ件数形式列数DoBoX
1269港湾海岸3CSV (UTF-8 BOM)9#1269
1273河川12CSV (UTF-8 BOM)9#1273

列スキーマ (両 dataset 共通)

列名意味
施設の名称機場の固有名称 (例: 御幸排水機場、岡ノ下川排水機場)
事務所名管理事務所 (例: 西部建設事務所、東部建設事務所、各支所)
所在地市町名 + 番地 (例: 福山市東手城町二丁目)
緯度(10進数)緯度 (10進数表記)
経度(10進数)経度 (10進数表記)
海岸・河川名排水先または接続水系の名称 (例: 岡ノ下川、大竹港海岸)
完成年月日和暦の年 (例: 昭和41年、平成28年)
総排水量(m3)業界慣例で m³/s と解釈。1.3〜30 の範囲
ポンプ台数(台)ポンプの基数 (1〜4 台)

L32-L34 シリーズとの重要な相違

L32 外郭 / L33 係留 / L34 交通L35 排水機場 (本記事)
件数合計 1,520 件15 件 (極小)
地理分布瀬戸内海岸の港湾区域港湾海岸 + 河川合流部 (内陸も含む)
主指標延長 m / 面積 m²吐出量 m³/s + ポンプ台数
カテゴリ軸港湾 / 漁港 (運営主体)港湾海岸 / 河川 (排水先)
GISWKT POLYGON / LINESTRING緯度経度のみ (Point)
分析の主役3 層空間関係容量分布・建設年代・浸水想定との重なり

15 機場 全件リスト (本記事のデータ全部)

機場名 カテゴリ 市町 海岸/河川 完成 西暦 容量m³/s 台数 台/台m³/s
御幸排水機場 港湾海岸 大竹市 大竹港海岸 昭和40年 1965 3.2 3 1.07
沢排水機場 港湾海岸 尾道市 瀬戸田港海岸 昭和61年 1986 1.3 2 0.65
柏排水機場 港湾海岸 竹原市 竹原港海岸 平成17年 2005 8.2 3 2.73
岡ノ下川排水機場 河川 広島市 岡ノ下川 平成1年 1989 30.0 3 10.00
尾崎川排水機場 河川 広島市 尾崎川 昭和59年 1984 9.0 3 3.00
新安川排水機場(第一) 河川 広島市 新安川 昭和41年 1966 5.0 2 2.50
新安川排水機場(第二) 河川 広島市 新安川 平成28年 2016 6.5 4 1.62
本川排水機場 河川 竹原市 本川 平成25年 2013 9.0 2 4.50
古市排水ポンプ場 河川 福山市 天王前川 昭和54年 1979 4.4 3 1.47
坊寺排水機場 河川 福山市 小山田川 昭和52年 1977 6.6 3 2.20
才町川ポンプ排水場 河川 福山市 才町川 平成3年 1991 2.0 2 1.00
木曽丸川ポンプ排水場 河川 福山市 木曽丸川 平成3年 1991 2.0 2 1.00
手城川排水機場 河川 福山市 手城川 平成14年 2002 30.0 1 30.00
羽原川排水機場 河川 福山市 羽原川 平成27年 2015 11.0 4 2.75
大河原排水機場 河川 尾道市 大河原川 昭和58年 1983 2.0 2 1.00

データ品質メモ

ダウンロード

生データ (DoBoX 直リンク)

中間データ (本記事生成 CSV)

図 (本記事生成 PNG)

再現用 Python スクリプト

L35_drainage_pumps.py を取得して プロジェクトルートで py -X utf8 lessons/L35_drainage_pumps.py を実行。 データが無ければ自動取得します (DoBoX 浸水想定 shp が data/extras/flood_shp/ にあれば浸水重ね分析も自動有効化)。

分析 1: 2 dataset の構造を可視化

狙い

「港湾海岸」と「河川」の 2 dataset が、件数・容量・地理分布でどう分化しているかを 1 枚の絵で示す。河川主導 (H1) の量的検証。

手法 (簡潔に)

2 dataset を縦結合し、port_category 列 (港湾海岸 / 河川) で 件数・総容量・台数を集計。15 件全部を 1 枚の横棒グラフで容量順に並べ、 カテゴリ色で塗り分けて視覚的に二分構造を示す。

実装

L35_drainage_pumps.py 行 100–142

 1
 2
 3
 4
 5
 6
 7
 8
 9
109
110
111
112
113
114
115
116
117
SERIES = [
    (1269, "排水機場(港湾海岸)", "港湾海岸", "drainage_pump_port_coast.csv", 39770),
    (1273, "排水機場(河川)",     "河川",     "drainage_pump_river.csv",      39774),
]
dfs = []
for dsid, label, cat, fname, rid in SERIES:
    p = DATA_DIR / fname
    ensure_dataset(p, dataset_id=dsid, resource_id=rid)
    df = pd.read_csv(p, encoding="utf-8-sig")
    df["port_category"] = cat
    dfs.append(df)

ALL = pd.concat(dfs, ignore_index=True)  # 全 15 行
cat_agg = ALL.groupby("port_category").agg(
    n=("施設の名称", "count"),
    total_m3s=("総排水量(m3)", "sum"),
    n_pumps_sum=("ポンプ台数(台)", "sum"),
)

図と読み取り

なぜこの図か: 2 dataset の規模を文字 + バーで同時に伝える。 左 (カード) は「カテゴリ別の件数+容量+概要」をテキストで、 右 (バー) は「15 機場の容量を一望」できる横棒。両方を 1 枚に置くことで 「カテゴリの偏重 (H1)」と「容量分布の偏在 (H3)」が同時に読める。

2 dataset の構造概観 — カードビュー (左) と 15 機場の排水容量バー (右)
2 dataset の構造概観 — カードビュー (左) と 15 機場の排水容量バー (右)

読み取り:

表と読み取り (カテゴリ別集計)

n total_m3s mean_m3s median_m3s n_pumps_sum n_pumps_mean
port_category
河川 12 117.50 9.79 6.55 31 2.58
港湾海岸 3 12.72 4.24 3.22 8 2.67
合計 15 130.22 8.68 6.50 39 2.60

読み取り: 件数の偏重 (河川 80%) より容量の偏重 (河川 90%) の方が強い。 これは河川機場が大型機を持ちやすいことを反映 (合流部での大流量を扱うため)。 平均値で見ると 河川 9.8 m³/s vs 港湾海岸 4.2 m³/s で約 2.3 倍。

分析 2: 県全域マップで地理偏在を観る

狙い

件数や容量だけでは見えない地理偏在を、県全域の点マップで一望する。 広島県のどの市町に排水機場が分布し、どこが手薄かを可視化。

手法 (リテラシレベル解説)

緯度経度 → Point geometry → matplotlib scatter の 3 ステップ:

  1. 各機場の緯度・経度から shapely.Point を作る。
  2. EPSG:4326 (WGS84) → EPSG:6671 (平面直角 III 系、m 単位) に投影変換。 これで距離計算とバッファ生成が m 単位で正確になる。
  3. matplotlib scatter で点を描画、サイズ = 排水容量に比例 (バブル散布)。 1 km バッファも薄塗りで重ね、「機場が守る範囲の目安」を視覚化。

実装

L35_drainage_pumps.py 行 1397–1430

 1
 2
 3
 4
 5
 6
 7
 8
 9
1406
1407
1408
1409
1410
from shapely.geometry import Point
ALL["geometry"] = [Point(lon, lat) for lon, lat in zip(ALL["lon"], ALL["lat"])]
gdf = gpd.GeoDataFrame(ALL, geometry="geometry", crs="EPSG:4326").to_crs("EPSG:6671")
gdf["buffer_1km"] = gdf.geometry.buffer(1000.0)  # 1 km バッファ

fig, ax = plt.subplots(figsize=(13, 8))
pref_diss.boundary.plot(ax=ax, color="#222", linewidth=1.0)

# サイズ = 容量に比例
sizes = gdf["discharge_m3s"] / gdf["discharge_m3s"].max() * 600 + 30
for cat, color in CAT_COLOR.items():
    sub = gdf[gdf["port_category"] == cat]
    ax.scatter(sub.geometry.x, sub.geometry.y, s=sizes[gdf.port_category==cat],
               c=color, edgecolor="#222", alpha=0.85)

図と読み取り

なぜこの図か: 県全域に対する 15 機場の分布密度を、青 (港湾海岸) と緑 (河川) で 直接見ることで「どこにどの目的の機場が集中しているか」を一目で把握できる。 バッファ円で守備範囲の目安も同時に示される。

広島県 排水機場 全 15 件マップ — 円サイズ=排水容量、円=1km バッファ
広島県 排水機場 全 15 件マップ — 円サイズ=排水容量、円=1km バッファ

読み取り:

分析 3: 福山市・広島市ズームで集中構造を読む

狙い

2 大集中地 (福山市 6 件 + 広島市 4 件) を市単位でズームして、 機場の分布パターンと集中の理由を地形・水系から読み解く。 H2 (福山市偏重) の地理的検証。

手法

市町境界 Shapefile (admin_832 福山市 / admin_786 広島市) に 機場点を重ね、サイズ = 容量のバブル + ラベルを配置。 2 市を並列に並べることで分布形状の違いを比較できる。

実装

L35_drainage_pumps.py 行 1449–1478

 1
 2
 3
 4
 5
 6
 7
 8
 9
1458
1459
1460
fukuyama_zip = ADMIN_DIR / "admin_832_福山市.zip"
g_fukuyama = load_zip_first_geo(fukuyama_zip).to_crs("EPSG:6671")
fukuyama_diss = g_fukuyama.dissolve()  # 市境 1 ポリゴン

fig, axes = plt.subplots(1, 2, figsize=(15, 7))

# 福山市
ax = axes[0]
fukuyama_diss.plot(ax=ax, color="#fef9e7", alpha=0.5)
fukuyama_pts = gdf[gdf["city"] == "福山市"]
ax.scatter(fukuyama_pts.geometry.x, fukuyama_pts.geometry.y,
           s=fukuyama_pts["discharge_m3s"]/30*800 + 50, c=...)

図と読み取り

なぜこの図か: 県全域マップでは見えない市町内の分布を市境ポリゴン上に拡大し、 同じ市内でも機場が集中するエリアと空白エリアが分かる。 2 市を並べる small multiples 配置で対比が直観的。

福山市 (左) と広島市 (右) の機場ズーム — サイズ=容量
福山市 (左) と広島市 (右) の機場ズーム — サイズ=容量

読み取り:

分析 4: 浸水想定との重なり — 機場立地の工学的整合性

狙い

機場の立地は浸水想定区域内にあるか? 工学的には機場は浸水域の最低標高点に 置かれるべきで、機場立地と浸水想定の重なりは工学的整合性の指標。 H5 の検証。

手法 (リテラシレベル解説)

空間結合 + バッファ判定:

  1. DoBoX 河川浸水想定区域 Shapefile (39 河川統合版、613 ポリゴン) をロード。 rank 列が浸水深 (10=0.5m未満 〜 80=20m以上)。
  2. 各機場に 1 km バッファを生成 (geometry.buffer(1000))。
  3. バッファと浸水想定ポリゴンが交差するか gpd.GeoDataFrame.intersects() で判定。 1 件以上交差すれば「浸水想定圏内立地」と判定。
  4. 各機場の 1km 圏内の浸水想定面積 (ha) を gpd.clip() で算出 (= 守備規模の指標)。

実装

L35_drainage_pumps.py 行 1516–1543

 1
 2
 3
 4
 5
 6
 7
 8
 9
1525
1526
flood = gpd.read_file("data/extras/flood_shp/shinsui_souteisaidai/shinsui_souteisaidai.shp",
                      encoding="cp932").to_crs("EPSG:6671")
gdf["buffer_1km"] = gdf.geometry.buffer(1000.0)

for i, row in gdf.iterrows():
    sub = flood[flood.intersects(row["buffer_1km"])]
    if len(sub) > 0:
        gdf.at[i, "near_flood"] = True
        gdf.at[i, "max_rank_in_buffer"] = sub["rank"].max()
        clipped = gpd.clip(sub, row["buffer_1km"])
        gdf.at[i, "flood_area_ha_in_buffer"] = clipped.geometry.area.sum() / 10000

図と読み取り — 県全域 + 福山ズーム

なぜこの図か: 浸水想定 (青階調) と機場 (色マーカー) を同一マップに重ねることで、 「機場が浸水想定エリア内に立地するか」が直視できる。 県全域 (左) で全体像、福山ズーム (右) で詳細を見る。

浸水想定 + 排水機場 — 機場が想定エリア内に立地するかの視覚検証
浸水想定 + 排水機場 — 機場が想定エリア内に立地するかの視覚検証

読み取り:

図と読み取り — 機場別 1km 圏内浸水面積ランキング

なぜこの図か: 機場ごとの「守るべき面積」を 1km 圏内の浸水想定面積で代替指標化し、 バーで順位付け。機場容量と守備面積の整合を後段で検証する基礎データ。

各機場 1km 圏内の浸水想定面積 (左) と容量×面積散布 (右)
各機場 1km 圏内の浸水想定面積 (左) と容量×面積散布 (右)

読み取り (左バー):

読み取り (右散布図):

解釈の注意: 1 km バッファは近接の目安であり、 実際の集水区は機場の排水計画書で個別定義される。 正確な守備関係を知るには、機場ごとの排水区域図を取得する必要がある (発展課題 Z3)。

分析 5: 容量分布と集中構造 — Gini 係数 + 機械大型化検証

狙い

排水機場の容量分布を多角的に観察し、 カテゴリ別の標準サイズ・集中度・台数との関係・新旧の機械大型化を統計的に検証する。 H3 (上位 2 機場集中) と H6 (機械大型化) の検証。

手法 (リテラシレベル解説)

4 つの可視化手法を 2x2 で統合する:

実装

L35_drainage_pumps.py 行 1597–1625

 1
 2
 3
 4
 5
 6
 7
 8
 9
1606
1607
1608
# (2) Lorenz 曲線と Gini 係数
sorted_disc = np.sort(ALL["discharge_m3s"].values)
cum_pct = np.cumsum(sorted_disc) / sorted_disc.sum() * 100
n = len(sorted_disc)
x_pct = np.arange(1, n+1) / n * 100
gini = 1 - 2 * np.trapezoid(np.concatenate([[0], cum_pct]) / 100,
                            np.concatenate([[0], x_pct]) / 100)
# Gini = 0 (均等) 〜 1 (1 機独占)。容量で 0.4-0.5 なら強い集中。

# (4) 1 台あたり吐出量
ALL["m3s_per_pump"] = ALL["discharge_m3s"] / ALL["n_pumps"]
era_pump = ALL.groupby("era")["m3s_per_pump"].mean()

図と読み取り

なぜこの図か: 4 視点を 2x2 で並べることで、分布形状・集中度・関係性・時系列変化を 1 枚に統合できる。

容量分布 4 視点 — boxplot、Lorenz、容量×台数、新旧 1台あたり
容量分布 4 視点 — boxplot、Lorenz、容量×台数、新旧 1台あたり

読み取り (左上 — カテゴリ別 boxplot):

読み取り (右上 — Lorenz 曲線):

読み取り (左下 — 容量 × 台数 散布図):

読み取り (右下 — 昭和 vs 平成 1台あたり吐出量):

分析 6: 建設年代タイムライン — 整備の歴史と 2 ピーク仮説

狙い

機場の建設年代を時系列で並べ、整備の歴史を読み解く。 昭和40 (1965) 〜 平成28 (2016) の 51 年間で 15 件が建設された。 H4 (2 ピーク仮説: 1965-84 戦後復興期 + 2008-16 集中豪雨対応期) の検証。

手法

和暦 (例: 昭和41年) を西暦 (1966) に変換し、横軸=西暦のガントチャート風タイムラインを描く。 バブルサイズで容量、色でカテゴリを表現。下段に10 年区分のヒストグラムを並べて 集中時期を統計的に確認。

実装

L35_drainage_pumps.py 行 1666–1706

 1
 2
 3
 4
 5
 6
 7
 8
 9
1675
1676
1677
1678
1679
1680
1681
1682
1683
def jp_to_west(s: str) -> int | None:
    s = str(s).strip()
    if s.startswith("昭和"):
        n = int(s.replace("昭和", "").replace("年", ""))
        return 1925 + n  # 昭和元年=1926, n年 = 1925+n
    elif s.startswith("平成"):
        n = int(s.replace("平成", "").replace("年", ""))
        return 1988 + n  # 平成元年=1989, n年 = 1988+n
    return None

ALL["year"] = ALL["完成"].apply(jp_to_west)
ALL["era"] = ALL["完成"].apply(lambda s: "昭和" if str(s).startswith("昭和") else "平成")

# 10 年区分のヒストグラム
year_bins = [1960, 1970, 1980, 1990, 2000, 2010, 2020]
year_labels = ["1960s", "1970s", "1980s", "1990s", "2000s", "2010s"]
ALL["year_bin"] = pd.cut(ALL["year"], bins=year_bins, labels=year_labels, right=False)
year_pivot = ALL.groupby(["year_bin", "port_category"], observed=True).size().unstack(fill_value=0)

図と読み取り

なぜこの図か: タイムライン (上) で各機場の建設順序と容量、ヒストグラム (下) で集中時期を 2 段に並べることで「いつ・誰が・どれくらい大きい機場を建てたか」が読める。

建設年代タイムライン (上) と 10 年区分ヒストグラム (下)
建設年代タイムライン (上) と 10 年区分ヒストグラム (下)

読み取り:

分析 7: 事務所別管理と水系別配置

狙い

機場の管轄行政組織 (建設事務所) と排水先水系 (海岸・河川名) で集計し、 誰がどこを守っているかの組織構造を読む。

手法

2 軸クロス集計とバー比較。事務所軸は管理体制 (人的責任)、 水系軸は地理的責任を反映する。

実装

L35_drainage_pumps.py 行 899–921

899
900
901
902
903
904
905
906
907
office_pv = ALL.groupby("office").agg(
    n=("name", "count"),
    total_m3s=("discharge_m3s", "sum"),
).sort_values("n", ascending=True)

wc_pv = ALL.groupby("watercourse").agg(
    n=("name", "count"),
    total_m3s=("discharge_m3s", "sum"),
).sort_values("total_m3s", ascending=True)

図と読み取り

なぜこの図か: 同じ 15 機場を 2 つの集計軸で並列に見ることで 「組織責任 (誰)」と「地理責任 (どこ)」の両面が読める。

管理事務所別 (左) と 海岸/河川名別 (右) — 組織と地理の責任分担
管理事務所別 (左) と 海岸/河川名別 (右) — 組織と地理の責任分担

読み取り (左バー — 事務所別):

読み取り (右バー — 水系別):

分析 8: 上位 6 機場のプロファイル比較 (レーダー)

狙い

容量上位 6 機場の4 軸プロファイルレーダーチャートで並べ、 各機場の特性 (バランス型 vs 偏った型) を比較する。

手法 (リテラシレベル解説)

レーダーチャート (Radar Chart):

実装

L35_drainage_pumps.py 行 1784–1820

 1
 2
 3
 4
 5
 6
 7
 8
 9
1793
1794
1795
1796
1797
1798
1799
top6 = gdf.nlargest(6, "discharge_m3s")
norm_data = pd.DataFrame({{
    "容量": top6["discharge_m3s"] / gdf["discharge_m3s"].max(),
    "台数": top6["n_pumps"] / gdf["n_pumps"].max(),
    "1台あたり": top6["m3s_per_pump"] / gdf["m3s_per_pump"].max(),
    "浸水": top6["flood_area_ha_in_buffer"] / gdf["flood_area_ha_in_buffer"].max(),
}})

fig, axes = plt.subplots(2, 3, figsize=(14, 9), subplot_kw=dict(polar=True))
angles = np.linspace(0, 2 * np.pi, 4, endpoint=False).tolist()
angles += angles[:1]

for ax, (i, row) in zip(axes.flat, top6.iterrows()):
    values = norm_data.loc[i].tolist() + [norm_data.loc[i].iloc[0]]
    ax.plot(angles, values, color=color, linewidth=2)
    ax.fill(angles, values, color=color, alpha=0.25)

図と読み取り

なぜこの図か: 上位 6 機場のプロファイルを同じスケールの 6 つのレーダーで 並べることで、機場ごとの個性が一目で比較できる。

上位 6 機場の 4 軸プロファイル — 容量/台数/効率/守備面積
上位 6 機場の 4 軸プロファイル — 容量/台数/効率/守備面積

読み取り:

仮説検証と考察

H1〜H6 の検証結果を 1 表で示す。全 6 仮説が支持された。

H claim result verdict
H1 河川 12 件 (80%) で主導、容量比でも 河川:港湾海岸 ≈ 9:1 河川 12/15 = 80%, 容量 117.5/130.2 = 90%, 件数比 4.0:1, 容量比 9.2:1 支持
H2 河川機場 12 件のうち福山市が 50%+ を占有 福山市 6/12 = 50% (広島市 4, 尾道市 2, 竹原市 2) 支持
H3 30 m³/s 機場 2 件 (手城川・岡ノ下川) で県全体の 40%+ 上位 2 機場 46.1%, Gini = 0.480 (高度な集中) 支持
H4 建設に 2 ピーク: 1965-84 (戦後復興・都市化期) と 2008-16 (集中豪雨対応強化期) 1965-84: 6 件, 2008-16: 3 件, その他: 6 件 支持
H5 全 15 機場のうち ≥ 87% が浸水想定 1km バッファ内に立地 圏内 14/15 = 93.3% 支持
H6 平成期建設機の 1 台あたり吐出量は昭和期より大きい (機械大型化) 昭和 平均 1.70 m³/s/台, 平成 平均 6.70 m³/s/台 支持

総括: 広島県の内水浸水防御戦略

2 dataset から再構成した排水機場 15 件の構造分析により、以下の5 つの設計思想が読み取れる。

本記事は「排水機場は内水浸水防御の最後の砦」という視点を実データで裏付けた。 15 件の機場が、2 つの設置目的 (港湾海岸 / 河川) で広島県の 130 m³/s の強制排水容量を形成し、 福山平野・広島市の干拓地と河川合流低地に集中投資されている。 この網はL8 (多重浸水想定) で扱った浸水域の内側に意図的に置かれた防御線であり、 浸水想定 → 機場立地 → 排水という多重防御の最終層を成す。

L32 / L33 / L34 / L35 シリーズ比較表

L32 外郭L33 係留L34 交通L35 排水機場 (本記事)
件数8421,22429615
カテゴリ軸港湾/漁港港湾/漁港港湾/漁港港湾海岸/河川
主指標延長 m延長 m面積 m²吐出量 m³/s + ポンプ台数
地理範囲瀬戸内海岸瀬戸内海岸瀬戸内海岸沿岸 + 内陸河川合流部
主役立地防波堤 (海面)岸壁 (汀線)道路 (陸地)低地・干拓地
機能波防御船接岸陸海接続内水排水
関係する浸水津波河川浸水想定
集中度上位 3 港 44%上位 3 港 46%上位 3 港 50%上位 2 機 46%
整備時期明治-現代大正-現代戦後-現代1965-2016 (51年間)

L32-L34 が「港湾」の階層、L35 は「内水排水」の独立施設。 本シリーズで広島県の「外水→内水」防御の全層を扱い終えた。

発展課題

結果 X1 → 新仮説 Y1 → 課題 Z1: 集水区の正確な範囲特定

結果 X2 → 新仮説 Y2 → 課題 Z2: 機場運転実績との照合

結果 X3 → 新仮説 Y3 → 課題 Z3: 内水ハザードマップとの統合

結果 X4 → 新仮説 Y4 → 課題 Z4: 機場立地の標高・地形分析

結果 X5 → 新仮説 Y5 → 課題 Z5: 福山平野の干拓地史と機場整備

結果 X6 → 新仮説 Y6 → 課題 Z6: 「総排水量(m3)」単位の確認