データ取得手順
⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L79_river_tunnels.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
学習目標と問い
本記事は DoBoX のシリーズ「河川トンネル基本情報」 1 件
(dataset_id = 1270) を単独で取り上げ、 広島県管理の
河川トンネル 3 本を 3 つの独立した研究角度
(RQ1 / RQ2 / RQ3) で並列に分析する。
本記事の独自定義 (本セクションで初出):
- 河川トンネル: 河川 (の一部または分派) を地中の管路で導く
土木構造物。 河川法 (1964) 第 6 条第 2 項が規定する河川管理施設。
本データの 3 本は全て放水路 (= バイパス放流路) で、
洪水時に支川や本川下流部を地中ショートカットさせる治水トンネル。
- バイパス放流: 本川の洪水流量の一部を、 別経路の地下トンネルで
下流または海に放流すること。 都市河川氾濫の主対策で、
ダム建設が困難な平野・市街地で採用される。
- 治水トンネル: 河川トンネルのうち、 主目的が洪水調節
(= 浸水被害の軽減) であるもの。 全 3 本が該当 (= 利水・発電目的の
導水トンネルではない)。
- 下流恩恵 (本記事独自指標): 各トンネルの下流端から
半径 2 km 圏内に存在する
浸水想定区域の合計面積 (km²)。 「このトンネルがどれだけの
浸水危険エリアを地中で逃がしているか」 を量化する。
- 単位流下効率 (本記事独自指標): 流下能力 (m³/s) ÷ 延長 (m)。
「トンネル 1 m あたり何 m³/s 流せるか」 = 断面サイズの代理指標。
- 治水ポテンシャル指数 (本記事独自指標): 流下能力 × log(延長)。
「短くて細い vs 長くて太い」 を 1 軸で比較する合成スコア。
- 用途差: 道路トンネル (L67, 道路法管轄) と河川トンネル
(L79, 河川法管轄) の制度・目的・規模・整備頻度の本質的な違い。
「同じトンネルだが管轄法も役割も異なる」 を量的に示す。
- 迂回率: 延長 (= 実際のトンネル管路長) ÷ 直線距離 (= 上下流端
の直線結合距離)。 1.0 が完全直線、 大きいほど蛇行・迂回。
研究の問い (3 RQ)
- RQ1 (主研究) — 広島県の河川トンネルの構造 — 規模・水系・
地理分布はどう描けるか? 3 本 × 11 列を、
独自指標 (単位流下効率 / 治水ポテンシャル) を含む 9 軸で集計し、
「県内河川トンネルの物理形状」 を初めて系統的に記述する。
- RQ2 (副研究 1) — トンネルの治水機能 — 浸水想定区域への
恩恵範囲はどこまで届くか? 各トンネル下流端から
2 km 圏内の浸水想定区域面積 (= 下流恩恵)
を計算し、 治水投資効果をランキングする。
- RQ3 (副研究 2) — L67 道路トンネル 157 件との
用途差はどう現れるか? 件数比 52.3:1、 平均延長比
3.73、 制度差 (道路法 vs 河川法) を比較し、
「同じ『トンネル』 でも目的・規模・希少性が全く異なる」 ことを
実証する。
仮説 (5 個)
- H1 (RQ1): 河川トンネル 3 本は全件 が放水路
(= 洪水バイパス治水トンネル)。 「導水」 「砂防」 等の非バイパス用途は
0 件仮説。
- H2 (RQ1): 延長は400-2000m 帯に 3/3 本
= 100%が集中。 道路トンネル中央値 (206m) の
4 倍以上。 「河川トンネル = 大規模工事の例外整備」 の希少性仮説。
- H3 (RQ2): 八幡川トンネル放水路 (広島市直下流) は下流端
2 km 圏内の浸水想定区域面積 (= 下流恩恵)
が県内 3 本中1 位。 都市直下流の治水投資効果が
最大という立地戦略の物理的証拠仮説。
- H4 (RQ2): 流下能力 (m³/s) と下流恩恵 (km²)の Pearson
r >= 0.5。 大規模トンネルほど大きな治水効果という直観の量的検証仮説。
- H5 (RQ3): 河川トンネル平均延長 / 道路トンネル平均延長
(= L67 既知 314m) ≥ 3。 「道路 = 中規模・日常整備、
河川 = 大規模・例外整備」 の規模二極構造仮説。
到達点
本記事を読み終えると、 学習者は以下を達成する:
- 河川トンネル 3 本の構造プロファイルを個体名で全件
把握 (= 単独データセット系の最大の強み)。
- 独自指標「下流恩恵」 「単位流下効率」 「治水ポテンシャル指数」
の定義・計算方法・限界を理解。
- L67 道路トンネル (157 件) と L79 河川トンネル (3 本)
の用途差・規模差を件数比・規模比・制度比で量的に説明できる。
- geopandas を使った2 km バッファ × 浸水想定区域 intersection
の実装パターンを習得 (空間結合の基本)。
使用データ
本記事が使うのは DoBoX dataset 1270「河川トンネル基本情報」 のみ。
ただし RQ2 では L72 既キャッシュの浸水想定区域ポリゴン (237 件 /
426.39 km²) を、 RQ3 では L67 既取得の道路トンネル CSV
(157 件) を従属参照する。
主データ (本記事の研究対象)
| 項目 | 内容 | 備考 |
| データセット |
河川トンネル基本情報 (DoBoX #1270) |
広島県 河川課 提供 |
| 形式 | CSV (UTF-8 BOM) |
~0.8 KB の超軽量データセット |
| 件数 | 3 件 × 11 列 |
「個体名で全件を語れる」 粒度 |
| 主キー | 河川トンネル名称 |
八幡川/宮領川/片丘川 トンネル放水路 |
| 位置情報 | 上流端 / 下流端 各緯度経度 (10 進) |
2 端点の POINT を生成可能 (6 点) |
| 主要属性 |
事務所名 / 所在地 / 海岸河川名 / 延長(m) / 流下能力(m³/s) |
「規模 + 機能」 が 2 列で表現される |
| 延長範囲 | 414 〜 1944 m |
道路トンネル中央値 206m の 2〜10 倍 |
| 流下能力範囲 | 7 〜 155 m³/s |
1 桁台〜 100m³/s 超の 20 倍幅 |
| ライセンス | クリエイティブ・コモンズ表示 (CC-BY) |
DoBoX オープンデータ |
形式特性の注意点
- 1 行 = 1 トンネル: 3 行のフラット表で完結。 超軽量。
- 緯度経度は上流端 + 下流端の 2 点: ダム (1 点) や道路トンネル
(1 点) と異なり、 河川トンネルは「地中で経路を持つ」 ことが
データ構造に反映される。 LineString 化して経路を可視化可能。
- 本川名 + 放水路名がスラッシュ + 全角スペース区切り:
例: 「太田川 八幡川放水路」。 本記事では split で水系列と放水路名列に分解。
- 建設年・点検年情報なし: 道路トンネル (L67) と異なり、
建設年度や点検年度の列が無い。 本記事では「整備年代」 の分析を
割愛し、 構造と治水機能に集中する。
- 事務所別管轄: 西部建設事務所 (本所 + 東広島支所) と
北部建設事務所の 2 系列に分かれる。
- 全件が「放水路」: トンネル名にすべて「放水路」 が含まれ、
用途は 100% バイパス放流 (= 治水トンネル)。 これは H1 の量的根拠。
ダウンロード
本記事の再現に必要なすべてを直リンクで提供する。
HTML だけ読めば学習者が完全再現できることが目標 (要件 A)。
生データ (DoBoX 1 dataset, 1 リソース)
このスクリプト本体
従属参照 (本記事は読込みのみ、 取得不要)
- L72 浸水想定区域 キャッシュ
data/extras/L72_emergency_road/_cache_flood_max.gpkg
— 237 件 / 426.39 km² (RQ2 用)
- L67 道路トンネル CSV
data/extras/tunnel_basic.csv
— 157 件 / 16 列 (RQ3 用)
- L44 行政界 ディゾルブ
data/extras/L44_storm_surge/_cache/admin_diss.gpkg
— 27 市町 polygon (sjoin 用)
中間 CSV (本記事生成、 再利用可)
図 (PNG, 直 DL 可)
【RQ1】河川トンネル構造研究 — 規模 × 水系 × 地理分布
狙い (RQ1)
RQ1 では「県の隠れた治水主役、 河川トンネル 3 本の物理形状」を
初めて系統的に記述する。 具体的には 3 本を用途 × 延長 ×
流下能力 × 単位流下効率 × 治水ポテンシャル指数 × 水系 × 事務所の
9 軸で集計し、 「規模はどう分布するか / 水系はどこに集中するか / 1 m あたりの
流下効率は何 m³/s か」 を 1 枚で俯瞰できるようにする。 H1 (全件 放水路) は
「県の河川トンネル整備史 = 都市河川の洪水対策史」 仮説、 H2 (延長 400-2000m
帯集中) は「大規模工事の例外整備」 という規模クラスタの希少性仮説。
手法 — 6 ステップ
- STEP 1: CSV 読込み + 型変換
CSV (UTF-8 BOM, 3 行 × 11 列) を read_csv() で読込み、
数値列 6 個 (上下流端 緯度経度 / 延長 / 流下能力) を
pd.to_numeric(errors="coerce") で数値化。
トンネル名空欄行を除外。
- STEP 2: 列名短縮 + 派生列追加
長い列名 (例: 上流端 緯度(10進数)) を短く改名。
「海岸・河川名」 列を str.split("\u3000") で
水系列 + 放水路名列に分解 (例: 「太田川 八幡川放水路」 →
水系=「太田川」、 放水路名=「八幡川放水路」)。
- STEP 3: 独自指標 3 個の生成
(a) 単位流下効率 = 流下能力 / 延長 (m³/s/m)、
(b) 治水ポテンシャル指数 = 流下能力 × log₁₀(延長)、
(c) 迂回率 = 延長 / 直線距離。
これらは公式データには無い、 本記事独自の比較指標。
- STEP 4: GeoDataFrame 化 (3 系列)
上流端 POINT + 下流端 POINT + 経路 LineString の 3 つを生成、
to_crs("EPSG:6671") で平面直角第 III 系に投影。
- STEP 5: 行政界 sjoin で上下流端の市町判定
L44 既キャッシュ admin_diss.gpkg を再利用。
上流端と下流端それぞれ別々に sjoin し、 「ある県内で上流→下流が
どの市町を貫通するか」 を可視化。
- STEP 6: 9 軸集計
用途別・延長クラス別・流下能力クラス別・水系別・事務所別の
5 グループ集計、 および個体台帳 (15 列 × 3 行) を生成。
実装
狙いと方法を踏まえた実装コード。 列名短縮 + 派生列 + GeoDataFrame 3 系列の
3 段構成。
↑ L79_river_tunnels.py 行 1464–1574
1
2
3
4
5
6
7
8
9
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513 | import pandas as pd
import numpy as np
import geopandas as gpd
from shapely.geometry import Point, LineString
# (1) CSV 読込み (UTF-8 BOM, 3 行 × 11 列)
df = pd.read_csv("data/extras/L79_river_tunnels/river_tunnel_basic.csv",
encoding="utf-8-sig")
# (2) 数値列の型変換
for c in ["上流端 緯度(10進数)", "上流端 経度(10進数)",
"下流端 緯度(10進数)", "下流端 経度(10進数)",
"延長(m)", "流下能力(m3/s)"]:
df[c] = pd.to_numeric(df[c], errors="coerce")
# (3) 列名短縮 + 派生列
df = df.rename(columns={
"上流端 緯度(10進数)": "上流緯度",
"上流端 経度(10進数)": "上流経度",
"下流端 緯度(10進数)": "下流緯度",
"下流端 経度(10進数)": "下流経度",
"海岸・河川名": "本川_放水路",
"延長(m)": "延長_m",
"流下能力(m3/s)": "流下能力_m3s",
})
df["水系"] = df["本川_放水路"].str.split(" ").str[0]
df["放水路名"] = df["本川_放水路"].str.split(" ").str[1]
df["用途"] = df["河川トンネル名称"].apply(
lambda s: "放水路" if "放水路" in s else "その他")
# (4) 本記事独自指標
df["単位流下効率_m3s_per_m"] = df["流下能力_m3s"] / df["延長_m"]
df["治水ポテンシャル指数"] = df["流下能力_m3s"] * np.log10(df["延長_m"])
# (5) GeoDataFrame 化 — 上流端/下流端 POINT + LineString 経路
gdf_up = gpd.GeoDataFrame(df,
geometry=[Point(lon, lat) for lon, lat in zip(df["上流経度"], df["上流緯度"])],
crs="EPSG:4326").to_crs("EPSG:6671")
gdf_dn = gpd.GeoDataFrame(df,
geometry=[Point(lon, lat) for lon, lat in zip(df["下流経度"], df["下流緯度"])],
crs="EPSG:4326").to_crs("EPSG:6671")
gdf_line = gpd.GeoDataFrame(df,
geometry=[LineString([Point(ux, uy), Point(dx, dy)])
for ux, uy, dx, dy in zip(df["上流経度"], df["上流緯度"],
df["下流経度"], df["下流緯度"])],
crs="EPSG:4326").to_crs("EPSG:6671")
# (6) 用途・延長クラス別 集計
print(df.groupby("用途").size())
print(df.groupby("水系")["延長_m"].agg(["count", "mean", "sum"]))
|
結果と読み取り
(a) 3 本 配置マップ (図 1)
なぜこの図か: 3 本という小さな母集団は個体名で全件を語れる
唯一の DoBoX シリーズ。 棒グラフだけで終わらせず、 全 3 本を
水系色 + 経路 LineString + 上流端白丸 + 下流端塗丸 + 流下能力バブルサイズ
で 1 枚に描くことで、 「県の隠れた治水トンネルがどこに分布しているか /
どの方向に水を逃がすか」 を地理的に直感する (要件 T)。
| 水系 |
本数 |
延長合計 |
流下能力合計 |
代表トンネル |
シェア_% |
| 太田川 |
1 |
1162.5 |
155 |
八幡川トンネル放水路 |
33.3 |
| 江の川 |
1 |
1944.0 |
65 |
片丘川トンネル放水路 |
33.3 |
| 沼田川 |
1 |
414.0 |
7 |
宮領川トンネル放水路 |
33.3 |
図 1 / 表 (水系別) から読み取れること:
- 3 本は 3 水系
(太田川・沼田川・江の川) に 1 本ずつ分散。 これは「県内 3 大流域に
1 本ずつ整備」 という水系単位の治水戦略の物理証拠。
- 太田川系 = 八幡川トンネル放水路 (1162m,
流下 155m³/s)、
広島市西区己斐町に立地。 県都直下流の最大級治水投資。
- 沼田川系 = 宮領川トンネル放水路 (414m,
流下 7m³/s)、
東広島市高屋町。 中規模都市部の支川バイパス。
- 江の川系 = 片丘川トンネル放水路 (1944m,
流下 65m³/s)、
三次市。 県内最長で内陸部の支川統合バイパス。
- 分布範囲: 南端 = 八幡川 (緯度 34.40)、 北端 = 片丘川 (緯度 34.79)。
緯度差 0.39 度 ≒ 約 43 km。 県管理ダム (60 km 幅) より南北幅は狭いが、
3 本それぞれが県の主要都市帯に配置されている。
(b) 構造プロファイル 4 panels (図 2)
なぜこの図か: H1 (全件 放水路) と H2 (延長 400-2000m 帯) を 1 枚で示す
ための 4 panel 構成。 円グラフ (用途) + 棒グラフ (延長クラス) + 散布
(延長 × 流下能力) + 棒 (単位流下効率) で「県管理河川トンネルの構造プロファイル」
を 4 角度から記述する。
| 用途 |
本数 |
延長平均 |
延長合計 |
流下能力平均 |
シェア_% |
| 放水路 |
3 |
1173.5 |
3520.5 |
75.7 |
100.0 |
| 延長クラス |
本数 |
延長平均 |
流下能力平均 |
代表トンネル |
シェア_% |
| 大 (>=1500m) |
1 |
1944.0 |
65.0 |
片丘川トンネル放水路 |
33.3 |
| 中 (800-1500m) |
1 |
1162.5 |
155.0 |
八幡川トンネル放水路 |
33.3 |
| 小 (<800m) |
1 |
414.0 |
7.0 |
宮領川トンネル放水路 |
33.3 |
| 流下能力クラス |
本数 |
延長平均 |
流下能力平均 |
シェア_% |
| 大 (>=100 m³/s) |
1 |
1162.5 |
155.0 |
33.3 |
| 中 (30-100 m³/s) |
1 |
1944.0 |
65.0 |
33.3 |
| 小 (<30 m³/s) |
1 |
414.0 |
7.0 |
33.3 |
図 2 / 表から読み取れること:
- (a) 用途: 100.0% が放水路。 「導水トンネル」 「砂防トンネル」 等の
非バイパス用途は0 件。 H1 (全件 放水路) は
支持。
- (b) 延長クラス: 「大 (≥1500m)」
1 本 /
「中 (800-1500m)」
1 本 /
「小 (<800m)」
1 本。
H2 (延長 400-2000m 帯集中) は支持 (3/3)。
最短 414m でも道路トンネル中央値 (206m) の
2.0 倍。
- (c) 延長 × 流下能力 散布: 八幡川 (1163m × 155m³/s) は右上に位置 =
長くて流量大。 宮領川 (414m × 7m³/s) は左下。 片丘川 (1944m × 65m³/s) は
右中。 規模 (延長) と機能 (流下能力) は連動するが線形ではない。
- (d) 単位流下効率: 八幡川 = 0.1333
m³/s/m = 1m あたり 0.13 m³/s。
宮領川 = 0.0169
m³/s/m (= 細長く流量小)。 片丘川 = 0.0334
m³/s/m (= 中庸)。 八幡川は断面が大きいことが推測できる。
(c) 個体台帳 (3 本 全項目)
なぜこの表か: 3 本という小規模データセットなら、 集計表だけでなく
「全件・全列」 を 1 表で読み下せる のが学習者の理解を最大化する。
延長で降順ソートし、 派生指標 (単位流下効率・治水ポテンシャル指数・迂回率)
も含めた 15 列の個体台帳を提示。
| 河川トンネル名称 |
事務所名 |
水系 |
放水路名 |
上流端_所在地 |
下流端_所在地 |
上流端_市町 |
下流端_市町 |
延長_m |
直線距離_m |
迂回率 |
流下能力_m3s |
単位流下効率_m3s_per_m |
治水ポテンシャル指数 |
延長クラス |
流下能力クラス |
| 片丘川トンネル放水路 |
北部建設事務所 |
江の川 |
片丘川放水路 |
三次市西酒屋町 |
三次市十日市町 |
三次市 |
三次市 |
1944.0 |
1789.0 |
1.087 |
65 |
0.0334 |
213.77 |
大 (>=1500m) |
中 (30-100 m³/s) |
| 八幡川トンネル放水路 |
西部建設事務所 |
太田川 |
八幡川放水路 |
広島市西区己斐町 |
広島市西区己斐町 |
広島市西区 |
広島市西区 |
1162.5 |
1433.2 |
0.811 |
155 |
0.1333 |
475.14 |
中 (800-1500m) |
大 (>=100 m³/s) |
| 宮領川トンネル放水路 |
西部建設事務所東広島支所 |
沼田川 |
宮領川放水路 |
東広島市高屋町宮領 |
東広島市高屋町中島 |
東広島市 |
東広島市 |
414.0 |
336.9 |
1.229 |
7 |
0.0169 |
18.32 |
小 (<800m) |
小 (<30 m³/s) |
表から読み取れること:
- 最長 = 片丘川 (1944m)、 三次市西酒屋町〜十日市町。
江の川支川の片丘川を三次市内陸部でバイパスする内陸最大級トンネル。
- 最大流下能力 = 八幡川 (155m³/s)、
広島市直下流。 流下能力では片丘川 (65m³/s)
の 2.4 倍 = 都市直下流ゆえの大断面設計の物理証拠。
- 迂回率: 直線距離との比は1.0 〜 1.22 程度。
ほぼ直線で掘削されており、 河川トンネルは「最短経路で水を逃がす」
設計思想であることを示す (蛇行を許容する道路トンネルとは対照的)。
- 治水ポテンシャル指数: 八幡川 475.1、
片丘川 213.8、
宮領川 18.3。
流下能力 × log(延長) で「短くて細い vs 長くて太い」を 1 軸統合。
(d) 事務所別管轄
なぜこの表か: 維持管理の制度的単位は「事務所」 であり、
県の組織構造と治水投資配分を反映する。
| 事務所名 |
本数 |
延長合計 |
流下能力合計 |
代表トンネル |
| 北部建設事務所 |
1 |
1944.0 |
65 |
片丘川トンネル放水路 |
| 西部建設事務所 |
1 |
1162.5 |
155 |
八幡川トンネル放水路 |
| 西部建設事務所東広島支所 |
1 |
414.0 |
7 |
宮領川トンネル放水路 |
表から読み取れること:
- 事務所は3 系列: 西部建設事務所 (本所) / 西部建設事務所東広島支所 /
北部建設事務所。 西部 (本所 + 支所) で 2 本、 北部で 1 本。
- 1 事務所 = 1 本が基本 (西部のみ 2 本だが本所と支所で別管轄)。
これは「河川トンネルは事務所単位で個別管理される希少資産」 を
示唆する。
【RQ2】治水機能研究 — 下流恩恵 × 流下能力
狙い (RQ2)
RQ2 では「河川トンネルがどれだけの治水恩恵を下流に届けているか」を
量的に測る。 公開データには「下流人家数」 「下流被災想定」 等の直接指標が
無いため、 本記事独自に「下流恩恵 = 下流端から
2 km 圏内の浸水想定区域面積 (km²)」 を定義し、
L72 既キャッシュ浸水ポリゴン (237 件 / 426.39 km²) と
intersection で重ね合わせる。 H3 (八幡川 1 位) は「都市直下流の最大投資効果」
仮説、 H4 (流下能力 ↔ 下流恩恵 r ≥ 0.5) は「規模 ↔ 効果」 直観の量的検証仮説。
限界 (要件 J): 「下流恩恵」 は下流端 2 km 圏内の浸水想定区域面積
の代理指標。 実際の治水効果は (a) トンネル流下能力 (m³/s)、 (b) 下流河道の
ボトルネック解消、 (c) 上流流域面積、 (d) 想定降雨確率 など多変数の関数。
本記事の値は「下流のどれだけのエリアが浸水想定下にあるか = 治水ニーズの大きさ」
を反映するもので、 「実際に何 % の浸水を抑制したか」 ではない。
n=3 のため統計検定力も限定的。
手法 — 4 ステップ
- STEP 1: L72 浸水想定区域キャッシュ読込み
L72 (緊急輸送道路) 構築時に作成した
_cache_flood_max.gpkg (237 polygon /
426.39 km²) を再利用。 これは河川浸水想定区域の
最大想定 (= 想定最大規模) のディゾルブ済みポリゴン集合。
- STEP 2: 下流端 2 km バッファ生成
geometry.buffer(2000) で半径
2 km の円形バッファを 3 個生成。
投影座標系が EPSG:6671 (m 単位) なので、 buffer の引数は m 単位
の数値で渡せる。
- STEP 3: バッファ × 浸水想定区域の intersection
浸水ポリゴンを unary_union で 1 ジオメトリに統合してから、
各バッファと intersection。 結果ジオメトリの
.area / 1e6 で km² 換算。
- STEP 4: 流下能力との相関 + ランキング
下流恩恵で降順ソートして 3 本ランク付け。
流下能力との Pearson r を計算 (n=3)。
実装
狙いと方法を踏まえた実装コード。 浸水ポリゴン読込み + バッファ +
intersection の 3 段構成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | import geopandas as gpd
# (1) L72 既キャッシュ浸水想定区域を読込み (613 件 / 829.7 km²)
flood = gpd.read_file(
"data/extras/L72_emergency_road/_cache_flood_max.gpkg"
).to_crs("EPSG:6671")
flood["geometry"] = flood.geometry.buffer(0) # 自交差修正
# (2) 各トンネル下流端から半径 2 km バッファを生成
gdf_dn["buffer_2km"] = gdf_dn.geometry.buffer(2000)
# (3) 各バッファ × 浸水想定区域 の重なり面積を計算 (= 下流恩恵)
flood_union = flood.unary_union
benefits = []
for _, r in gdf_dn.iterrows():
inter = r["buffer_2km"].intersection(flood_union)
benefits.append({
"トンネル名": r["河川トンネル名称"],
"下流恩恵_km2": inter.area / 1e6,
"バッファ面積_km2": r["buffer_2km"].area / 1e6,
})
T_benefit = pd.DataFrame(benefits).sort_values("下流恩恵_km2", ascending=False)
print(T_benefit)
# (4) 流下能力 vs 下流恩恵 の Pearson 相関
import numpy as np
q = T_benefit["流下能力_m3s"].values
b = T_benefit["下流恩恵_km2"].values
r = np.corrcoef(q, b)[0, 1]
print(f"Pearson r = {r:.3f}")
|
結果と読み取り
(a) 浸水想定 + 河川トンネル + 下流恩恵バッファ重ね合わせ (図 3)
なぜこの図か: H3 (下流恩恵) を直感的に示すには、 「浸水想定の海に
トンネルが矢を放つ」 ような重ね合わせ図が最も雄弁。 浸水想定 (薄青) +
下流バッファ (赤点線) + トンネル経路 (色線) + 下流端 (大円) を 4 layer で
重ねることで、 各トンネルがどのエリアを「逃がし先」 にしているかが見える
(要件 T)。
| 河川トンネル名称 |
水系 |
下流端_所在地 |
流下能力_m3s |
延長_m |
下流バッファ面積_km2 |
下流恩恵_km2 |
下流恩恵率_% |
順位 |
| 八幡川トンネル放水路 |
太田川 |
広島市西区己斐町 |
155 |
1162.5 |
12.55 |
5.660 |
45.11 |
1 |
| 片丘川トンネル放水路 |
江の川 |
三次市十日市町 |
65 |
1944.0 |
12.55 |
2.420 |
19.29 |
2 |
| 宮領川トンネル放水路 |
沼田川 |
東広島市高屋町中島 |
7 |
414.0 |
12.55 |
1.705 |
13.59 |
3 |
| 統計 |
値 |
| 下流恩恵 平均 (km²) |
3.262 |
| 下流恩恵 中央 (km²) |
2.420 |
| 下流恩恵 最大 (km²) |
5.660 |
| 下流恩恵 最小 (km²) |
1.705 |
| 下流恩恵率 平均 (%) |
26.000 |
| 流下能力 vs 下流恩恵 Pearson r |
0.974 |
| 下流バッファ半径 (km) |
2.000 |
| 解析対象 浸水想定区域 (km²) |
426.390 |
図 3 / 表から読み取れること:
- 下流恩恵 1 位 = 八幡川トンネル
(5.660 km²)、
最下位 = 宮領川トンネル
(1.705 km²)。
最大/最小比 = 3.3 倍。
- 下流恩恵率 (= 浸水面積 / バッファ面積) は最大
45.11%。
バッファ全面積 (π×2² ≈ 12.57 km²) のうち最大で
45% が浸水想定下 = 「下流の
45% が水害危険エリア」 という
生々しい数字。
- 八幡川 (広島市直下流) は1 位
(5.660 km²)。 H3 (1 位仮説) は
支持。
広島市直下流の都市治水トンネルが想定通り最大の治水投資効果を持つことを実データで確認。
- 本指標は下流側の浸水ニーズの大きさを表す。
実際の治水効果には (i) トンネルの流下能力、 (ii) 下流河道の
ボトルネック解消、 (iii) 上流流域面積など、 多変数の総合判断が必要 (限界)。
(b) 下流恩恵ランキング × 流下能力相関 (図 4)
なぜこの図か: H4 (流下能力 ↔ 下流恩恵 正相関) を可視化するには、
左ランキング (= 順位) と右散布 (= 相関) の 2 panel 構成が最適。 ランキングで
「どこが大きいか」、 散布で「規模と効果はどう連動するか」 を見せる。
図 4 / 統計から読み取れること:
- 流下能力 vs 下流恩恵 Pearson r = 0.974。
H4 (r ≥ 0.5) は支持。
n=3 のため統計検出力は限定的 (要件 P で言うと: 「3 点の相関係数は
ノイズに極めて敏感」)。
- 流下能力大 = 下流恩恵大 という直観の量的証拠。
- 立地 = 「都市直下流かどうか」 が下流恩恵の主決定要因として浮上。
流下能力は一致指標。 これは
「規模だけで治水投資効果を測ってはいけない」 という立地戦略の重要性を示す。
【RQ3】L67 道路トンネルとの対比研究 — 用途差・規模差
狙い (RQ3)
RQ3 では「同じ『トンネル』 でも道路と河川では用途・制度・規模が全く異なる」
ことを量的に実証する。 L67 既知 道路トンネル 157 件 vs L79 河川トンネル
3 件の件数比 52.3:1、 規模比 (平均延長) 3.73、
さらに管轄法 (道路法 vs 河川法)・主目的・整備の希少性
の 7 観点で比較する。 H5 (規模比 ≥ 3) は「道路 = 中規模日常整備、
河川 = 大規模例外整備」 の規模二極構造仮説。
手法 — 4 ステップ
- STEP 1: L67 既取得 道路トンネル CSV 読込み
data/extras/tunnel_basic.csv (157 件 × 16 列)
を読込み。 緯度経度の異常値 (緯度 > 50 = 緯度経度入れ替え誤入力) を
L67 既知の補正処理で復旧。
- STEP 2: 件数 + 規模統計の対比
L67 と L79 の件数 / 平均延長 / 中央値延長 / 最長 / 最短を
クロス計算。 比率を 5 行 × 4 列の表に整理。
- STEP 3: 用途・制度比較表の作成
管轄法・主目的・管理者・点検制度・通常時の状態・整備の希少性・
幾何学的形状の 7 観点でテキスト比較表を作成。
これは公式データには無い、 制度学の知識を入れた付加情報。
- STEP 4: 重ね合わせマップ + 規模分布対比 + 件数 × 規模 棒図
L67 道路 157 件 (灰背景) + L79 河川 3 本 (赤前景) の
重ね合わせマップ、 ヒストグラム + 箱ひげの規模対比、 件数 × 規模の
二軸対比の 3 図を生成。
実装
L67 道路トンネルデータの再利用 + 件数規模比較 + 制度比較表の 3 段構成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | # RQ3: L67 道路トンネル 157 件 vs L79 河川トンネル 3 本 の用途差比較
# (1) L67 道路トンネル CSV 読込み (16 列 × 157 件)
road = pd.read_csv("data/extras/tunnel_basic.csv", encoding="utf-8-sig")
road = road.dropna(subset=["施設名", "緯度(10進数)", "経度(10進数)"])
# 緯度経度の異常値補正 (緯度 > 50 の行は経度と入れ替え, L67 既知)
swap_mask = road["緯度(10進数)"] > 50
road.loc[swap_mask, ["緯度(10進数)", "経度(10進数)"]] = \
road.loc[swap_mask, ["経度(10進数)", "緯度(10進数)"]].values
road["延長(m)"] = pd.to_numeric(road["延長(m)"], errors="coerce")
# (2) 規模・件数比較
print(f"L67 道路 件数: {len(road)} / 平均延長 {road['延長(m)'].mean():.1f}m")
print(f"L79 河川 件数: {len(df)} / 平均延長 {df['延長_m'].mean():.1f}m")
print(f"件数比 (道路/河川): {len(road)/len(df):.1f}:1")
print(f"規模比 (河川/道路 平均): {df['延長_m'].mean()/road['延長(m)'].mean():.2f}")
# (3) 用途・制度比較は表で記述 (T_purpose)
# 道路法 (1952) vs 河川法 (1964)、 5 年点検 vs 河川管理施設点検要領、
# 常時供用 vs 待機 (洪水時のみ通水), 馬蹄形断面 vs 円形管路 等
|
結果と読み取り
(a) 道路 + 河川 二極構造マップ (図 5)
なぜこの図か: 「件数比 52.3:1」 を地図 1 枚で直感する
には、 道路トンネルを灰色小点で背景レイヤに、 河川トンネルを赤色
LineString + 大円で前景レイヤに重ねるのが最適。 道路の数の多さと、
河川の例外的な希少性が視覚的に対比される (要件 T)。
図 5 から読み取れること:
- 道路トンネルは県全域に広がる (山岳市町・中山間市町に集中、 L67 の
RQ2 既結果)。 一方、 河川トンネルは都市帯 (広島市西区 / 東広島市 /
三次市) に 1 本ずつと希少。
- 道路トンネルの分布密度は中山間で 1 km² あたり数本に達するが、
河川トンネルは県全体で 3 本 (≒ 8,500 km² に 3 本) =
「面密度 1,000 倍以上の差」。
- 河川トンネルは LineString として描けるのに対し、 道路トンネルは POINT。
この描画の差は「河川は地中の経路を持ち、 道路は山を貫通する点」 という
幾何学的差異を反映。
(b) 規模分布対比 — ヒストグラム + 箱ひげ (図 6)
なぜこの図か: H5 (規模比 ≥ 3) を可視化するには、
道路トンネルのヒストグラムに河川トンネル位置を縦線で重ねる のが
分かりやすい。 「道路の長尺帯 (右裾) に河川が位置する」 ことが一目で分かる。
| 指標 |
道路トンネル (L67) |
河川トンネル (L79) |
比率 (河川/道路 倍) |
備考 |
| 件数 (本) |
157.0 |
3.0 |
0.0191 |
件数比 52.3:1 (= 道路の希少性) |
| 平均延長 (m) |
314.5 |
1173.5 |
3.7300 |
河川トンネルは道路の3.7 倍長い |
| 中央値延長 (m) |
206.0 |
1162.5 |
5.6400 |
中央値でも河川が大きく上回る |
| 最長 (m) |
2212.0 |
1944.0 |
0.8790 |
道路の最長トンネルがやや上回る |
| 最短 (m) |
17.7 |
414.0 |
23.3900 |
河川の最短でも道路 100m 級と同等 |
図 6 / 表から読み取れること:
- 平均延長: 道路 314m / 河川 1174m。
比率 = 3.73。 H5 (≥ 3) は
支持。
河川トンネルは平均で道路の 3.7 倍長い。
- 中央値延長: 道路 206m / 河川 1162m。
中央値比率 = 5.64。 中央値で見ても河川が大きく上回る。
- 道路トンネルの分布は右裾の長い対数正規型: 大半が短い (≤500m)、
ごく少数 (9 件) が長尺。 河川トンネル
3 本はすべてこの長尺裾の右側に位置する。
- 道路トンネル最長は2212m (絞り上下トンネル等の
L67 RQ1 既調査結果)、 河川トンネル最長は1944m
(片丘川)。 道路最長がやや上回るが、
河川は全 3 本が道路の上位 10 件級。
(c) 件数 × 規模 + 用途・制度比較 (図 7)
なぜこの図か: 「件数の二極構造」 と「用途・制度の二極構造」 を 1 枚で
示すため、 左を件数 vs 規模 二軸棒、 右を用途・制度比較表 の
2 panel 構成。 量的差 (左) と質的差 (右) を並置することで、 河川トンネルと
道路トンネルが「同名異質」であることを総合的に伝える。
| 観点 |
道路トンネル (L67) |
河川トンネル (L79) |
| 管轄法 |
道路法 (1952) |
河川法 (1964) |
| 主目的 |
交通 (山岳貫通の時間短縮) |
治水 (洪水バイパス放流) |
| 管理者 |
県 (国道 + 県道) 道路河川管理課 |
県 河川課 (建設事務所) |
| 点検制度 |
5 年に 1 回 (道路法施行規則 改正 2014) |
河川管理施設点検要領 (河川法施行令) |
| 通常時の状態 |
常時供用 (車両通行) |
通常時 = 待機 / 洪水時のみ通水 |
| 整備の希少性 |
中規模・多数 (157 本) |
大規模・例外 (3 本のみ) |
| 幾何学的形状 |
馬蹄形断面 + 換気・照明設備 |
円形管路 + 流速制御構造 |
図 7 / 表から読み取れること:
- 件数比 = 52.3:1 (= 道路 1 件あたり河川 0.019 件)。
河川トンネルは道路の52.3 分の 1の希少性。
- 管轄法の違い: 道路法 (1952) vs 河川法 (1964)。
前者は道路 (= 交通) の管理体系、 後者は河川 (= 治水・利水) の管理体系。
たとえ同じトンネル形態でも管理者・予算・点検制度・整備計画が
完全に分離されている。
- 主目的の違い: 道路 = 交通 (山岳貫通の時間短縮)、
河川 = 治水 (洪水バイパス放流)。 これは「県民の日常」 と
「災害時の防御」 の機能差。
- 通常時の状態: 道路 = 24h 365 日常時供用、 河川 = 通常時は
待機 (空または微小流量) で洪水時のみ通水。
これは「インフラ価値」 の評価軸が完全に異なることを示す
(道路は使用頻度ベース、 河川は災害時の防御ベース)。
- 整備の希少性: 河川トンネルは大規模工事を経て例外的に整備される
希少資産。 1 本あたり数十億円規模の事業で、 県の数十年に 1 度の
治水大事業の象徴。 一方、 道路トンネルは路線延伸の通常手段で、
毎年新設される日常整備対象。
仮説検証総合
仮説検証総合表
| 仮説 |
観測値 |
判定 |
解釈 |
| H1 全件 放水路 (RQ1) |
観測 = 100.0% (3/3) |
強支持 |
H1 強支持: 全件 (3/3) が放水路 = 都市河川の洪水バイパス。 「導水トンネル」 「砂防トンネル」 等の非バイパス用途は 0 件。 広島県の河川トンネル整備史 = 都市河川の洪水対策史であることが量的に確認された。 |
| H2 延長 400-2000m 帯集中 (RQ1) |
観測 = 3/3 (100.0%) |
強支持 |
H2 強支持: 延長 414〜1944m。 中央値 1162m は道路トンネル中央値 (206m) の 5.6 倍。 「河川トンネル = 大規模工事を経て例外的に整備される」希少性の量的証拠。 |
| H3 八幡川 下流恩恵 1 位 (RQ2) |
観測 = 1 位 (5.660 km²) |
強支持 |
H3 強支持: 八幡川トンネル放水路は下流端 2 km 圏内の浸水想定区域面積 (= 下流恩恵) 5.660 km² で県内 1 位。 広島市直下流の都市治水トンネル = 最大の治水投資効果という立地戦略の物理的証拠。 |
| H4 流下能力 ↔ 下流恩恵 正相関 (RQ2) |
観測 Pearson r = 0.974 |
強支持 |
H4 強支持: 流下能力 (m³/s) と下流恩恵 (km²) の Pearson r = 0.974。 大規模トンネルほど大きな治水効果という直観の量的検証。 n=3 のため統計的検出力は限定。 |
| H5 河川 vs 道路 規模比 ≥ 3 (RQ3) |
観測 = 河川 1174m / 道路 314m / 比 3.73 |
強支持 |
H5 強支持: 河川トンネル平均延長は道路トンネルの 3.73 倍。 件数比は逆転して 52.3:1 (= 道路が圧倒)、「道路 = 中規模・日常整備、 河川 = 大規模・例外整備」の規模二極構造が定量化された。 |
結果の総合解釈
3 RQ × 5 仮説の検証結果から、 広島県の河川トンネル 3 本について以下の
3 つの実証的知見が得られた:
- (RQ1 — 構造) 「全件 放水路」 の都市河川治水戦略
3 本すべてが放水路 (= 洪水バイパス治水トンネル) であり、
延長は414〜1944mの範囲、
平均 1174m は道路トンネル中央値 (206m) の
5.7 倍。
H1, H2 ともに支持/支持。
これは広島県の河川トンネル整備史 = 都市河川の洪水対策史 (= 大規模例外整備)
であることの量的証拠。
- (RQ2 — 治水機能) 立地が下流恩恵を支配する非線形関係
下流端 2 km 圏内の浸水想定区域面積 (= 下流恩恵) で 3 本をランキング:
最大 5.660 km² 、 最小
1.705 km²。
流下能力との Pearson r = 0.974。
H3, H4 = 支持/支持。
規模 (流下能力) は単独では下流恩恵を予測しきれず、
立地 (都市直下流かどうか) が支配的要因として浮上した。
これは「治水投資の評価軸は流下能力だけではない」 ことを示す重要な発見。
- (RQ3 — 用途差) 件数比 52.3:1 + 規模比 3.73 の二極構造
L67 道路 157 件 vs L79 河川 3 件 = 件数比
52.3:1、 平均延長比 3.73。
道路 = 中規模 (314m) × 多数 (157 件) =
日常整備、 河川 = 大規模 (1174m) × 希少
(3 件) = 例外整備。
管轄法 (道路法 vs 河川法)・主目的 (交通 vs 治水)・通常時の状態
(常時供用 vs 待機) の 3 軸で完全分離。 H5 = 支持。
3 RQ を統合した「県管理河川トンネル」 の見立て
RQ1 〜 RQ3 を統合すると、 広島県の河川トンネル 3 本は「全件 放水路 ×
立地が下流恩恵を支配 × 道路との二極構造」 の 3 重特性として描ける:
(1) 用途は全件 放水路の単一構造、 (2) 流下能力ではなく立地が下流恩恵を決め、
(3) 件数比 52.3:1 + 規模比 3.73 で道路トンネルと完全分離。
これは単なる「インフラ台帳」 ではなく、
県の都市河川治水戦略の物理的形態であり、
3 本それぞれが県の主要都市帯 (広島市西区 / 東広島市 / 三次市) を地下から守る
隠れた治水主役として価値を持つ。
3 つの研究角度 (構造 / 治水機能 / 道路対比) は完全に独立で、 単一の RQ では
見えないものを 3 RQ 並列で初めて立体的に見せる。 3 本という
極端に小さな母集団でも、 個体名で全件を語れる粒度と独自指標
(下流恩恵 / 単位流下効率 / 治水ポテンシャル指数) 導入で
研究水準の深掘りが可能であることを実証した。
発展課題
結果から導かれる新たな問い
発展課題 1: 国管理河川トンネルとの統合分析
結果 X: 本記事は県管理 3 本のみを扱った。 一方、 同じ広島県内には
国土交通省管理の太田川放水路 (国直轄、 高瀬堰〜広島湾 を本川分派で
バイパス) や、 中国地方整備局管理の他放水路が存在する可能性が高い。
新仮説 Y: 県管理河川トンネル (本記事 3 本) と国管理放水路を
統合した「広島県内全河川バイパス施設母集団」 で同じ 3 RQ を再走したら、
H1 (全件 放水路) は支持継続、 H2 (延長 400-2000m) は太田川放水路
(全長 1.8 km, 県内最大級) が含まれることで強支持になる仮説。
課題 Z: (1) 国土交通省 中国地方整備局のオープンデータ (河川局
河川トンネル諸量) を取得。 (2) 県管理 3 本と統合し、 管理者軸を加えた
4 軸クロス (用途 × 管理者 × 規模 × 水系) を生成。
(3) 「県管理 vs 国管理」 で構造プロファイルがどう違うかを量的比較し、
役割分担の制度的境界を可視化する。
発展課題 2: 実放流データを使った下流恩恵の検証
結果 X: RQ2 で「下流恩恵」 を浸水想定区域面積で代用した。 これは
静的な治水ニーズの指標であって、 「実際にどれだけの洪水流量を逃がしたか」
の動的指標ではない。
新仮説 Y: 過去 10 年の実洪水イベント (2018 西日本豪雨等) における
各トンネルの実放流量 × 時間積分と、 本記事の「下流恩恵」 は r ≥ 0.7
の強い正相関を示す仮説。 つまり静的指標が動的効果の良い代理指標である仮説。
課題 Z: (1) 県の河川管理データから各トンネルの洪水時放流流量
時系列を取得 (公開されていれば)。 (2) イベント別積算放流量を計算し、
本記事の「下流恩恵」 と相関分析。 (3) 静的指標と動的指標の整合性を
量的に評価し、 公開データから治水効果を推定する手法の信頼性を検証。
発展課題 3: 河川トンネル下流部の建物被害想定との重ね合わせ
結果 X: 「下流恩恵」 は浸水想定区域面積のみを使った。
実際の社会的価値は「面積 × 人口 × 建物資産価値」 の関数であるはず。
新仮説 Y: 八幡川トンネル放水路 (広島市直下流) は下流端 2 km 圏内の
推定資産価値が県内最高仮説。 これは「都市直下流の治水トンネル =
最大の経済効果」 という投資効率の物理的証拠。
課題 Z: (1) 国勢調査小地域 (町丁字) の人口データと
固定資産税課税台帳の家屋評価額を取得 (匿名化済の集計値)。
(2) 各トンネルのバッファ内人口・推定資産を計算。
(3) 「面積ベース下流恩恵」 と「資産ベース下流恩恵」 の差を比較し、
都市直下流ダム = 最高 ROI 投資の量的証拠を提示する。
発展課題 4: 河川トンネル整備史の年代分析
結果 X: 本データには建設年情報が無く、 RQ1 で年代分析を
割愛した。 一方、 道路トンネル (L67) は 1927-2018 の建設年を全件保持し、
1980-90s 集中という整備史を量的に示せる。
新仮説 Y: 河川トンネル 3 本は1980-2000s に整備された
都市河川対策第 2 期の産物仮説。 県の都市化進展で河川氾濫被害が増えた
時期に対応している。
課題 Z: (1) 県のダム史・河川史資料 (年史・記念誌等) から各トンネル
の建設年・契約金額を調査。 (2) 県の都市化指標 (DID 拡大史・市街地面積年次)
と整備史の相関を分析。 (3) 「都市河川対策の 3 期区分」 (S30s ダム期 / S50s 〜
H10s 河川改修期 / H10s〜トンネル放水路期) を量的に検証する。
発展課題 5: 都道府県別 河川トンネル整備密度比較
結果 X: H5 で県内の件数比 52.3:1 (道路 vs 河川) を
量的確認した。 一方、 大都市圏 (東京・大阪) は地下河川を多数整備しており、
52.3:1 とは大きく異なる比率を持つ可能性が高い。
新仮説 Y: 河川トンネル整備密度 (= 件数 / 県面積) は都市化率と正相関
仮説。 東京都・大阪府は地下河川群で密度が広島県より1 桁以上高い。 一方、
中山間県 (島根・鳥取) は密度ほぼゼロ。
課題 Z: (1) 各都道府県のオープンデータポータルから河川トンネル
整備状況を集約。 (2) 都市化率 (DID 人口比) ・1 級水系数・面積で
正規化した整備密度を計算。 (3) 全国 47 都道府県の整備密度ランキング
を可視化し、 「広島県は中位」 「都市県は高位」 という相対位置を実証。
県の制度的選択を全国比較で相対化する。