Lesson 73
事前通行規制区間 単独 3 研究例分析 — 164 区間 / 750 km / 3 重制度的矛盾箇所 (迂回路無 重複 = 12 件) を読む
L73事前通行規制区間予防的安全制度連続雨量時間雨量規制基準通行確保矛盾BCP制度的矛盾3重制度的矛盾規制ランクA/B/C雨量閾値落石等凍結等強風冠水越波RQ×3Format BgeopandasLineString (WKT)L11連携 (警戒区域)L61連携 (過去災害)L72連携 (緊急輸送道路)中山間集中
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 1245 (JSON × 1, ~1749 KB)
データ取得手順
⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。
| ID | データセット名 |
| #333 | dataset #333 |
| #666 | dataset #666 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #1245 | 事前通行規制区間 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L73_pre_traffic_restriction.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
学習目標と問い
本記事の対象 — 「事前通行規制区間」 1 件 単独分析
本記事は DoBoX のデータセット 「事前通行規制区間」 (dataset 1245)
1 件を 単独で取り上げ、 広島県の事前通行規制区間
164 区間 / 総延長 750 kmを
3 つの独立した研究角度で並列に分析する記事である。
他のシリーズ (緊急輸送道路 L72 / 道路規制 L50 / トンネル L67 /
道路法面 L71) と本記事は 合体しない。 RQ2 で警戒区域 (L11) +
過去災害 (L61)、 RQ3 で緊急輸送道路 (L72) を参照するが、 これは「予防的
安全制度の量的実証」 を明らかにするための既扱データの従属的参照に
留め、 本記事の主軸はあくまで事前通行規制区間 1 dataset の分析である。
「事前通行規制区間」 とは:
連続雨量 (24 時間雨量) や時間雨量 (60 分雨量) が一定の閾値を超えると
自動的に通行止めとする道路区間。 過去の災害履歴・地形脆弱性から
道路管理者があらかじめ指定し、 災害発生
前に予防的に通行止めにする
「予防的安全制度」。 道路法 (1952) + 災害対策基本法 (1961) を
根拠とする県管理道路の運用制度で、 事後の通行止 (= 災害発生後の応急規制) と
異なり
「降雨ノモゲン違反 → 自動規制」のルールベース運用が特徴。
広島県の事前通行規制区間は
2 系統 × 多階層に区分される (本記事独自集約):
- 系統 1: 雨量基準 (jizen): 138 区間 — ランク A (80mm/24h, 20mm/h),
B (100mm/24h, 30mm/h), C (120mm/24h, 40mm/h)、 特 (沿岸越波/冠水),
風 (15-25m/s), 地震・霧 など
- 系統 2: 冬期閉鎖 (winter): 26 区間 — 12 月〜3 月の機械的閉鎖
(積雪・凍結対策)
本記事の主要発見 (3 RQ):
- RQ1: 県の事前通行規制区間は164 区間 / 750 km。
雨量基準が 138 件 (84.1%)と多数派、 冬期閉鎖が
26 件。 規制内容は落石等
(97 件) が圧倒的最多。
- RQ2: 規制区間の36.0% (59 件)が
中山間 7 市町に集中。 落石等規制 97 件のうち
94 件 (96.9%)が
土砂警戒区域と重なる = 「過去災害 → 警戒区域 → 規制区間」 の 3 段階
予防制度階層が量的に実証された。
- RQ3: 緊急輸送道路と77 区間 / 149.3 kmが
重複 = BCP 制度的矛盾。 そのうち迂回路無 12 件が
県の予防防災 BCP の最重要課題。
独自に定義する用語 (本記事限定)
- 事前通行規制区間 (本記事の中心概念): 連続雨量・時間雨量・風速等の
閾値超過時に自動的に通行止めとする道路区間。 道路法 (1952) +
災害対策基本法 (1961) + 地域防災計画で運用されるルールベース規制。
- 連続雨量 (24時間雨量, ikichi24h): 直近 24 時間の累積降雨量 (mm)。
地盤の浸透限界 + 土壌飽和の指標として使われる。 規制ランク A/B/C で
80/100/120 mm の 3 段階閾値。
- 時間雨量 (60分雨量, ikichi60m): 直近 60 分間の降雨量 (mm/h)。
瞬間的な土砂崩落・冠水の指標として使われる。 規制ランク A/B/C で
20/30/40 mm/h の 3 段階閾値。
- 予防的安全制度 (本記事独自): 災害発生前に予防的に通行止に
する制度全般を指す本記事独自用語。 事前通行規制区間が代表例だが、 同様の
思想は橋梁の風速規制 (50 m/s で通行止) や落石防護網設置等にも見られる。
- 規制基準 (本記事独自): 規制発動の判定式。 ikichi24h, ikichi60m,
風速 (15-25 m/s), 越波・冠水の物理的事象等の数値閾値で決定論的に
判定される。
- 通行確保矛盾 / BCP 制度的矛盾 (本記事独自): 緊急輸送道路 (災害時
確保すべき) ∩ 事前通行規制区間 (災害前に通行止) の重複区間が引き起こす
制度間の論理矛盾。 これは「災害前の安全」 vs 「災害時の輸送」 という 2 つの
防災要請の衝突。 H4/H5 で量的に検証する。
- 3 重制度的矛盾 (本記事独自): 緊急輸送道路 ∩ 事前通行規制区間 ∩
迂回路無 の3 重制約を持つ区間。 「災害時確保すべき / 災害前に通行止 /
迂回路もない」 という最重要 BCP 課題。
- 規制ランク A/B/C (本記事独自集約): 雨量閾値の 3 階層。 公式
JSON の
rankname 列の A/B/C を本記事で「A=最厳しい
(80mm), B=中 (100mm), C=緩 (120mm)」 と解釈。
- 中山間山地 (本記事独自定義): 庄原市・三次市・安芸太田町・安芸高田市・
北広島町・神石高原町・世羅町 + 府中市の 8 市町。 公式分類ではないが、
地形・人口密度から「中山間」 と一般に呼ばれる地域を指す。
- 過去災害 2km 圏 (本記事独自): 規制区間 LineString の 2 km バッファ内に
L61 過去災害履歴 (424 件, 廿日市・呉・東広島の山腹崩落・土石流等) の
代表点が入るかで判定する近接性指標。
研究の問い (3 RQ)
- RQ1 (主研究): 広島県の事前通行規制区間の構造 — 路線・延長・規制基準は
どう描けるか? 164 区間 × 750 km を規制内容 × 規制ランク × 雨量閾値 ×
路線種別 × 建設事務所の 5 軸で集計し、 「県の予防的安全制度」 の物理形状を
初めて系統的に記述する。 H1 = 雨量基準が冬期閉鎖より圧倒的多数 (≥70%) を検証。
- RQ2 (副研究 1): 規制区間は中山間集中 — 過去災害履歴 (L61) +
土砂警戒区域 (L11)とどう空間関係するか? 代表点 sjoin で中山間判定 +
過去災害 2km 圏判定 + 土砂警戒区域重なり判定を行い、 「過去災害 → 警戒区域 →
規制区間」 の 3 段階予防制度階層を実証。 H2 = 中山間 ≥60% / H3 = 落石∩警戒
≥50% を検証。
- RQ3 (副研究 2): 規制区間は緊急輸送道路 (L72)とどれだけ重複するか?
30m バッファ sjoin で重複区間を同定 + 迂回路有無別に集計し、 BCP 制度的矛盾を
量的に明らかにする。 H4 = 重複 ≥20km AND ≥15区間 / H5 = 迂回路無 重複 ≥1 を検証。
仮説 (5)
- H1 (RQ1, 制度構造): 事前通行規制区間 164 のうち雨量基準 (jizen) が
≥ 70%。 動的判定 (降雨閾値で自動規制) が圧倒的多数派、 冬期閉鎖は限られた
山岳路線のみという仮説。
- H2 (RQ2, 中山間集中): 規制区間の代表点が中山間 7-8 市町に位置するのは
≥ 60%。 「事前通行規制 = 中山間山岳道路の脆弱性に対する予防制度」 を示す
根拠仮説。
- H3 (RQ2, 過去災害との対応): 落石等規制 (96 件) のうち土砂警戒区域
50m バッファ内に入るのは ≥ 50%。 「過去災害 → 警戒区域 → 規制区間」 の
3 段階予防制度階層の量的実証。
- H4 (RQ3, 緊急輸送道路との重複): 規制区間と緊急輸送道路 30m バッファの
重複延長 ≥ 20 km AND ≥ 15 区間。 BCP 制度的矛盾の量的事実。
- H5 (RQ3, 迂回路無の最重要箇所): 重複区間のうち迂回路無 が
≥ 1 件存在。 3 重制度的矛盾の最重要箇所が定量化される仮説。
到達点
本記事を読み終えると、 (1) 県の事前通行規制区間 164 区間・750 km・
2 系統 (jizen + winter) の制度構造を完全に俯瞰、 (2) 中山間集中 (36.0%) +
過去災害との対応関係 + 土砂警戒区域との重なりを定量把握、 (3) 緊急輸送道路と
77 区間 / 149.3 km の重複 + 迂回路無 12 件
という3 重制度的矛盾の最重要箇所を特定できる、 という 3 段階の知識が
獲得できる。 これにより県の地域防災計画における「予防的安全 vs 通行確保」の
両立課題が研究者視点で見えるようになる。
使用データ
本研究で使う 1 つの dataset (1 JSON リソース) を以下の表に示す。
本データは事前通行規制区間 LineString を JSON (32 列の属性 + WKT geometry) で
公開しており、 1 区間 1 レコードの構造になっている。
データセット仕様
| 項目 |
値 |
| dataset_id |
1245 |
| 公式名 |
事前通行規制区間 |
| 公式説明 |
広島県が管理する道路の事前通行規制区間情報 |
| リソース数 |
1 (JSON) |
| リソース ID |
32489 |
| JSON サイズ |
1,791,088 byte (~1749 KB / ~1.71 MB) |
| レコード数 |
164 区間 |
| 総延長 |
749.6 km |
| 座標系 (元) |
WGS84 (EPSG:4326) → 本記事 EPSG:6671 で処理 |
| 型分類 |
jizen (雨量基準) 138 / winter (冬期閉鎖) 26 |
| 規制内容 |
落石等 / 凍結等 / 強風 / 冠水 / 越波 |
| 規制ランク |
A (80mm) / B (100mm) / C (120mm) / 特 / 冬 / 風 / 地震 / 霧 |
| 路線種別 |
国道 32 / 主要地方道 27 / 一般県道 96 / その他 9 |
| 迂回路有無 |
有 143 / 無 21 |
| 配信日 |
2026-05-01 (公式 stamp) |
| ライセンス |
クリエイティブ・コモンズ表示 (CC-BY) |
| URL |
https://hiroshima-dobox.jp/datasets/1245 |
| 作成主体 |
広島県 (土木建築局道路整備課・防災担当) |
JSON 構造
JSON ファイル (pre_traffic.json, ~1749 KB) のトップ階層は
{ "results": [list of 164 dict] }。 各 dict は以下の主要列を持つ:
| 列名 | 意味 | 例 | 本研究での用途 |
id |
規制区間ID (KJID_xxxxxxxx) |
KJID_20210001 |
主キー |
rosenname |
路線名 |
国道 2号 |
RQ1 路線種別分類 |
kisei_start / kisei_end |
規制起点 / 終点 |
三原市木原町 / 三原市糸崎8丁目 |
RQ1 区間記述 |
kiseinaiyo |
規制内容 |
落石等 / 凍結等 / 強風 / 冠水 / 越波 |
RQ1 主分類軸 |
rankname |
規制ランク (雨量階層) |
A / B / C / 特 / 冬 / 風 |
RQ1 規制基準階層 |
basis |
規制基準条文 |
時間雨量: 30 mm/h, 日雨量: 100 mm/24h |
RQ1 規制条件 |
ikichi24h / ikichi60m |
24h / 60m 雨量閾値 (mm) |
100 / 30 |
RQ1 雨量閾値分布 |
ukaiumu |
迂回路有無 |
有 / 無 |
RQ3 BCP 重要度 |
demarcation |
建設事務所 |
広島県 北部建設事務所庄原支所 |
RQ1 管轄分布 |
lat / lon |
代表点 (10 進数, EPSG:4326) |
34.385 / 133.133 |
市町判定 (代表点 sjoin) |
kukan / kukanroot |
区間 LineString WKT |
LINESTRING (133.128 34.383, ...) |
RQ2/RQ3 空間判定 |
type |
規制系統 |
jizen (雨量基準) / winter (冬期閉鎖) |
RQ1 系統分類 |
icon |
地図上アイコン記号 |
rain / snow / wind / kansui / nami / rinko |
規制内容と並行 |
area |
内部エリア区分 (5 区域) |
kure / bihoku / hukuyama / geihoku / higasi |
建設事務所と並行 |
JSON 解読の注意点
kukan 列の1 件 (KJID_20110019)に末尾閉じ括弧欠損あり。
本記事は kukanroot を優先 (164 件中 0 件破損)。
- 緯度経度はWGS84 (EPSG:4326)。 距離計算 (RQ2 / RQ3) のため
EPSG:6671 (JGD2011 平面直角第 III 系) に投影変換する。
- 属性は 32 列以上で、 路線名・規制内容・規制ランク・雨量閾値・迂回路有無 ・
建設事務所が研究上重要。
kesoku_flag24h/60m や uryo24h/60m
は取得時刻のスナップショット観測雨量で、 静的属性ではない。
- JSON は標準的(NDJSON 風ではない)。
json.load() でそのまま
読める。
ダウンロード
本記事の再現に必要なすべてを直リンクで提供する。
HTML だけ読めば学習者が完全再現できることが目標 (要件 A)。
生データ (DoBoX 1 件)
このスクリプト本体
中間 CSV (本記事生成、再利用可)
図 (PNG, 直 DL 可)
【RQ1】 事前通行規制区間の構造 — 路線・延長・規制基準 / 164 区間 / 750 km / jizen 84.1%
狙い (RQ1)
RQ1 では「県の予防的安全制度」 の物理構造を初めて系統的に記述する。
具体的には 164 区間 / 総延長 750 km の事前通行規制区間を
規制内容 × 規制ランク × 雨量閾値 × 路線種別 × 建設事務所の 5 軸で
集計し、 「どのような基準で どのような道路に 規制が設定されているか」 を
1 枚で俯瞰できるようにする。 H1 (jizen ≥ 70%) は制度構造の中心仮説を検証する。
手法 — 4 ステップ
- STEP 1: JSON 読込 + WKT パース
JSON は標準形式 (NDJSON 風ではない) なので json.load() で
そのまま読める。 各レコードの kukanroot 列 (LineString WKT) を
shapely.wkt.loads() でパースし、 LineString に変換する。
1 件 (KJID_20110019) で kukan の閉じ括弧欠損があるので、
kukanroot を優先することで 164 件すべて成功。
- STEP 2: GeoDataFrame 化 + 投影変換
32 列の属性を pandas DataFrame に整形 + 上の geometry を組み合わせて
GeoDataFrame に。 EPSG:4326 → EPSG:6671 (JGD2011 第 III 系) に
to_crs() で投影変換 → 距離・面積が m 単位で計算可能に。
- STEP 3: 派生列の追加
・naiyo_norm: 規制内容を統一カテゴリへ (落石等 / 凍結等 / 強風 / 冠水 / 越波 / その他)
・grade: 規制ランクを 7 階層に集約 (A/B/C/特/風/冬/その他)
・rosen_class: 路線種別 (国道/主要地方道/一般県道/etc)
・len_km: 区間長 (= LineString.length / 1000)
- STEP 4: 5 軸で集計
groupby("naiyo_norm") で規制内容別、 groupby("grade") で
ランク別、 groupby(["ikichi24h", "ikichi60m"]) で雨量閾値ペア別、
groupby("rosen_class") で路線種別、 groupby("demarcation") で
建設事務所別の集計を行う。
実装 (主要部のみ抜粋)
↑ L73_pre_traffic_restriction.py 行 1663–1763
1
2
3
4
5
6
7
8
9
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708 | import json
import geopandas as gpd
from shapely import wkt as swkt
from pathlib import Path
DATA_DIR = Path("data/extras/L73_pre_traffic_restriction")
# (1) JSON 読込 (標準 JSON, NDJSON 風ではない)
with open(DATA_DIR / "pre_traffic.json", "r", encoding="utf-8") as f:
raw = json.load(f)
recs = raw["results"]
print(f"レコード数: {len(recs)}") # 164
# (2) WKT を LineString に変換
# 1 件 (KJID_20110019) で kukan の閉じ括弧欠損 → kukanroot を優先
def get_geom(r):
try:
return swkt.loads(r["kukanroot"])
except Exception:
return None
geoms = [get_geom(r) for r in recs]
print(f"パース成功: {sum(g is not None for g in geoms)}/{len(recs)}")
# (3) GeoDataFrame 化 (4326 → 6671 投影変換)
import pandas as pd
df = pd.DataFrame({
"id": [r["id"] for r in recs],
"rosenname": [r["rosenname"] for r in recs],
"kiseinaiyo": [r["kiseinaiyo"] for r in recs],
"rankname": [r["rankname"] for r in recs],
"ikichi24h": [r.get("ikichi24h") for r in recs],
"ikichi60m": [r.get("ikichi60m") for r in recs],
"ukaiumu": [r["ukaiumu"] for r in recs],
"type": [r["type"] for r in recs],
})
gdf = gpd.GeoDataFrame(df, geometry=geoms, crs="EPSG:4326")
gdf = gdf[gdf.geometry.notna()].to_crs("EPSG:6671")
gdf["len_km"] = gdf.geometry.length / 1000
# (4) 規制内容別 集計
T_naiyo = (gdf.groupby("kiseinaiyo")
.agg(区間数=("id", "count"),
延長_km=("len_km", "sum"))
.reset_index())
print(T_naiyo)
|
結果 1: 県全域 規制内容別 マップ (図 1)
なぜこの図か: 6 種類の規制内容 (落石等 / 凍結等 / 強風 / 冠水 / 越波 /
その他) がどこに分布するかを県全域地図に重ねて一目で確認したい。
規制内容を色 (赤=落石等, 青=凍結等, 緑=強風, 紫=冠水, 橙=越波) で区別すること
で、 「沿岸 = 越波・冠水, 中山間 = 落石等・凍結等」の地理的偏在が
直感できる。
図 1 から読み取れること:
- 落石等 (赤, 97 件):
圧倒的最多。 中山間山地の県道・国道に集中する
- 凍結等 (青, 26 件):
標高の高い北部・北西部の山岳路線。 winter 系統に対応
- 強風 (緑, 14 件):
橋梁・高架部に集中。 風速 15-25 m/s 閾値の歩道閉鎖規制
- 冠水 (紫, 11 件):
アンダーパス・港湾地区に集中。 道路冠水 10cm が閾値
- 越波 (橙, 7 件):
沿岸国道 (国道 2 号 三原・尾道間, 国道 185 号) に集中。 「波が道路を超える」 箇所
- 地理的偏在: 沿岸 = 越波・冠水、 内陸山岳 = 落石・凍結 という
地形 × 規制内容の対応関係が一枚で見える
結果 2: 規制内容 × 規制ランク × 路線種別 (図 2)
なぜこの図か: H1 (jizen ≥ 70%) を直感検証するために、 規制ランクの
分布を 7 階層で並べる。 同時に規制内容と路線種別を比較することで、 「どの
規制内容がどのランクで運用され、 どの路線種別に集中するか」 を 1 枚で 3 軸把握する。
図 2 から読み取れること:
- 左パネル (規制内容): 落石等が
97 件と圧倒的最多 — 県内
事前通行規制区間の半数以上が落石・崩落リスク対応
- 中央パネル (規制ランク): A (23) /
B (38) /
C (38) の 3 階層が
jizen 主体 (138 件 = 84.1%)、 冬期閉鎖は
26 件のみ。 H1 (jizen ≥ 70%) は強支持
- 右パネル (路線種別): 一般県道が
96 件と最多 (= 県管理道路の
多数派、 中山間部の主要地方道 + 国道は補佐)
- ランク B + C が約半数: 100-120 mm/24h の中・緩い閾値が中心。
A ランク (80mm/24h) は最も厳しい閾値で沿岸越波等の 「特別なリスク」箇所
- 制度の多層性(雨量3階層 + 沿岸特化 + 風 + 冬 + その他) が量的に確認される
結果 3: 雨量閾値 + 区間長分布 (図 3)
なぜこの図か: H1 を補強するため、 雨量閾値が「A=80/20, B=100/30,
C=120/40」 の 3 グループにきれいに分かれていることを散布で見せる。 同時に
区間長は対数スケールで広く分布するので log10 ヒストグラムで確認する。
図 3 から読み取れること:
- 左パネル (閾値散布): A (赤, 23 件) は
80mm/20mm に密集、 B (橙, 38 件) は
100/30 に密集、 C (山吹, 38 件) は
120/40 に密集 — 3 グループの離散構造が一目で見える
- 少数の特ランク (越波/冠水) は 60mm/15mm の沿岸専用厳しい閾値を持つ
- 右パネル (区間長分布): 中央値3455 m、
最大23254 m (23.3 km) —
4 桁の幅
- ランク A (赤) の中央値は6943 mと
長く、 C (山吹) の中央値は4582 m。
厳しい閾値ほど長距離区間が指定される傾向
- 冬期閉鎖 (青) は中央値3197 mで、
雨量基準と同等の規模
結果 4: 規制内容 + 規制ランク + 路線 詳細表
規制内容別サマリ:
| 規制内容 |
区間数 |
延長_km |
平均長_km |
中央長_km |
シェア_% |
| 落石等 |
97 |
581.2 |
5.99 |
4.73 |
59.1 |
| 凍結等 |
26 |
96.9 |
3.73 |
3.20 |
15.9 |
| 強風 |
14 |
27.8 |
1.99 |
0.96 |
8.5 |
| 冠水 |
11 |
4.1 |
0.37 |
0.37 |
6.7 |
| 越波 |
7 |
24.6 |
3.51 |
1.99 |
4.3 |
| その他/不明 |
9 |
14.9 |
1.66 |
2.07 |
5.5 |
規制内容 表から読み取れること: 落石等
97 件が
581 km と
最大、 平均長 6.0 km。
凍結等 (26 件) も平均長
3.7 km と長い (山岳路線の特性)。
冠水・越波は短距離 (= 局所的なアンダーパス・橋梁手前)。
規制ランク (雨量階層 + 沿岸特化 + その他) サマリ:
| 規制ランク |
区間数 |
延長_km |
シェア_% |
| A (80mm/24h, 20mm/h) |
23 |
193.5 |
14.0 |
| B (100mm/24h, 30mm/h) |
38 |
193.5 |
23.2 |
| C (120mm/24h, 40mm/h) |
38 |
197.4 |
23.2 |
| 特 (沿岸越波/冠水) |
18 |
28.7 |
11.0 |
| 風 (15-25 m/s) |
17 |
32.2 |
10.4 |
| 冬期閉鎖 |
26 |
96.9 |
15.9 |
| その他 (地震/霧/臨港) |
4 |
7.4 |
2.4 |
規制ランク 表から読み取れること: B + C の 2 階層
(38 +
38 = 76 件) が中心、
A (23 件) は最も厳しい閾値で慎重運用、
冬期閉鎖は限定的 26 件のみ。
雨量閾値ペア別サマリ:
| 閾値ペア |
ikichi24h |
ikichi60m |
区間数 |
延長_km |
| 60 mm/24h × 15 mm/h |
60.0 |
15.0 |
7 |
18.5 |
| 80 mm/24h × 20 mm/h |
80.0 |
20.0 |
31 |
212.2 |
| 100 mm/24h × 30 mm/h |
100.0 |
30.0 |
54 |
214.4 |
| 120 mm/24h × 40 mm/h |
120.0 |
40.0 |
45 |
205.4 |
雨量閾値 表から読み取れること: 主要 3 ペア (80/20, 100/30, 120/40) +
特殊 1 ペア (60/15) の4 種類に集約される明確な階層構造。 これは「県内
全規制区間が 4 つの閾値ルールで運用される」 という制度の単純さを意味する
(現場運用の混乱回避)。
路線種別サマリ:
| 路線種別 |
区間数 |
延長_km |
平均長_km |
シェア_% |
| 国道 |
32.0 |
125.2 |
3.91 |
19.5 |
| 主要地方道 |
27.0 |
103.9 |
3.85 |
16.5 |
| 一般県道 |
96.0 |
505.5 |
5.27 |
58.5 |
| その他/不明 |
9.0 |
14.9 |
1.66 |
5.5 |
路線種別 表から読み取れること: 一般県道
96 件が
過半数 (58.5%) — 県管理道路は
県道が主体。 国道 32 件 (中国地方整備局・県の共同管理) と主要地方道 27 件は
県道に次ぐ。
建設事務所別サマリ:
| 建設事務所 |
区間数 |
延長_km |
| 広島県 北部建設事務所庄原支所 |
28 |
123.3 |
| 広島県 東部建設事務所 |
23 |
164.2 |
| 広島県 西部建設事務所廿日市支所 |
21 |
121.8 |
| 広島県 西部建設事務所安芸太田支所 |
21 |
90.5 |
| 広島県 西部建設事務所呉支所 |
21 |
67.7 |
| 広島県 北部建設事務所 |
18 |
106.0 |
| 広島県 東部建設事務所三原支所 |
11 |
43.9 |
| 広島県 広島港湾振興事務所 |
9 |
14.9 |
| 広島県 西部建設事務所東広島支所 |
6 |
13.6 |
| 広島県 西部建設事務所 |
5 |
2.2 |
| 広島県 本庁 |
1 |
1.6 |
建設事務所 表から読み取れること: 北部建設事務所 (庄原・本庁) +
西部建設事務所 (廿日市・安芸太田・呉) が支配的 — これは規制区間が中山間
(北部) + 沿岸島嶼/中山間 (西部) に偏ることを示す。 東部建設事務所 (三原・本庁) +
広島港湾振興事務所も少数登場。
迂回路有無サマリ:
| 迂回路 |
区間数 |
延長_km |
| 有 |
143 |
712.3 |
| 無 |
21 |
37.3 |
迂回路 表から読み取れること: 迂回路有 143 件 (87.2%) /
迂回路無 21 件 (12.8%)。 大多数は迂回路ありで「規制中も別ルートで対応可」 だが、
21 件は「規制中は完全孤立」のリスク区間。 RQ3 で緊急輸送道路と重ねて
さらに絞り込む。
【RQ2】 中山間集中・過去災害履歴 / 中山間 36.0% / 落石∩警戒 96.9%
狙い (RQ2)
RQ1 で「規制区間の制度構造」 が分かったが、 これは属性のみ。
RQ2 では「規制区間と地形・過去災害履歴・警戒区域の空間関係」を見る。
具体的には(1) 中山間 vs 都市部の比率、 (2) 過去災害 (L61) との 2km
近接性、 (3) 土砂警戒区域 (L11) との重なり率を計算し、 「過去災害 →
警戒区域 → 規制区間」 という3 段階予防制度階層を実証する。
H2 (中山間 ≥60%) と H3 (落石∩警戒 ≥50%) の 2 仮説を検証する。
手法 — 代表点 sjoin + バッファ近接判定
狙い: LineString 全体ではなく代表点 (representative_point) 1 点で
市町を判定する (= sjoin が 164 回で済み高速)。 過去災害は2 km バッファで
近接性を判定 (= 「規制区間の 2 km 圏内に過去災害履歴があるか」 をスクリーニング)。
土砂警戒区域は50 m バッファで重なりを判定 (= 道路敷地 + 警戒区域の
ほぼ確実な接続)。
| 判定 | 使用データ | 方法 | 意味 |
| 中山間判定 |
行政界 GPKG (L44 既キャッシュ) |
代表点 sjoin → 市町名 → 中山間 7 市町と照合 |
「中山間山岳道路集中度」 を量的に |
| 過去災害 2km 圏 |
L61 過去災害 CSV (424 件) |
規制区間 2km buffer に sjoin |
「規制区間 = 過去災害の対応関係」 をスクリーニング |
| 土砂警戒区域 重なり |
L11 警戒区域 Shapefile (3 種) |
規制区間 50m buffer に sjoin (intersects) |
「規制 = 警戒区域指定の地形脆弱性」 を実証 |
注意: 本記事は「2 km 圏」を「過去災害との対応関係のスクリーニング」 と
同定するが、 実際の因果関係 (= 過去にあった災害が規制指定の根拠か) は
道路管理者の規制決定文書を見ないと確定できない。 GIS の近接判定は
「対応関係の仮説支持」 として使う。
実装 (主要部)
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
32
33
34
35
36
37
38
39 | # 各規制区間の代表点を行政界に sjoin → 市町判定 → 中山間判定
admin = gpd.read_file("data/extras/L44_storm_surge/_cache/admin_diss.gpkg")
pts = gdf.geometry.representative_point()
gdf_rep = gpd.GeoDataFrame({"id": gdf["id"]}, geometry=pts, crs="EPSG:6671")
joined = gpd.sjoin(gdf_rep, admin[["CITY_CD", "市町名", "geometry"]],
how="left", predicate="within")
gdf["市町名"] = joined["市町名"].values
# 中山間 7 市町
CHUSANKAN = {"庄原市", "三次市", "安芸太田町", "安芸高田市",
"北広島町", "神石高原町", "世羅町", "府中市"}
gdf["is_chusankan"] = gdf["市町名"].isin(CHUSANKAN)
print(f"中山間: {gdf['is_chusankan'].sum()}/{len(gdf)}")
# 過去災害との 2km 圏近接性 (STRtree 高速化)
df_past = pd.read_csv("data/extras/past_disasters.csv",
encoding="utf-8-sig", on_bad_lines="skip")
gdf_past = gpd.GeoDataFrame(df_past,
geometry=[Point(x, y) for x, y in zip(df_past["経度"], df_past["緯度"])],
crs="EPSG:4326").to_crs("EPSG:6671")
# 規制区間の 2km バッファに過去災害点が入るか sjoin
buf2km = gdf.geometry.buffer(2000)
gdf_buf = gpd.GeoDataFrame({"id": gdf["id"], "geometry": buf2km},
crs="EPSG:6671")
joined_past = gpd.sjoin(gdf_past, gdf_buf, how="left", predicate="within")
near_count = (joined_past[joined_past["index_right"].notna()]
.groupby("id").size())
gdf["past_near_2km"] = gdf["id"].map(near_count).fillna(0).astype(int)
# 落石等規制区間 ∩ 土砂警戒区域 重なり
sed_files = [...] # 急傾斜 + 土石流 + 地すべり Shapefile (本記事スクリプト参照)
sed_all = gpd.GeoDataFrame(pd.concat([gpd.read_file(f) for f in sed_files]))
gdf_buf50 = gdf.copy()
gdf_buf50["geometry"] = gdf_buf50.geometry.buffer(50)
sed_hits = gpd.sjoin(gdf_buf50, sed_all, how="left", predicate="intersects")
overlap_ids = set(sed_hits[sed_hits["index_right"].notna()]["id"])
print(f"落石∩警戒重なり: {sum(1 for i in gdf['id'] if i in overlap_ids)}")
|
結果 1: 規制区間 + 中山間境界 重ね合わせマップ (図 4)
なぜこの図か: H2 (中山間 ≥60%) を地図上で直感検証するため、
中山間 7 市町を橙色背景、 沿岸島嶼を青色背景で塗り、 規制区間を中山間内 (赤線) /
それ以外 (灰線) で色分けして重ねる。 「中山間に規制区間が集中するか」 が一目で
見える。
図 4 から読み取れること:
- 橙色背景 (中山間 7 市町): 庄原市・三次市・安芸太田町・安芸高田市・
北広島町・神石高原町・世羅町・府中市 — 県北西部 + 県中部
- 赤線 (中山間内 規制区間, 59 件):
中山間市町を縦横に走る — 主要地方道・一般県道の山岳路線
- 灰線 (中山間外 規制区間, 105 件):
沿岸都市 (廿日市市・呉市・三原市・福山市) と平野部の国道
- 中山間が36.0%、 H2 (反証)
- 「事前通行規制 = 中山間山岳道路の脆弱性に対する予防制度」 という
地形 × 制度の対応関係が量的に確認される
結果 2: 過去災害 + 土砂警戒区域 重ね合わせマップ (図 5)
なぜこの図か: H3 (落石∩警戒 ≥50%) を地図上で同時検証するため、
土砂警戒区域 (赤マスク) + 過去災害点 (灰点) + 規制区間 (落石=橙線, その他=青線) を
重ねる。 「赤マスク + 灰点 + 橙線が同じ場所に集中するか」 を 1 枚で確認できる。
図 5 から読み取れること:
- 赤マスク (土砂警戒区域 計 49,069 ポリゴン):
中山間山地に広く分布、 県北部 (庄原・三次) と西部 (廿日市) で密集
- 灰点 (過去災害 424 件):
廿日市市・呉市・東広島市の山腹崩落が中心、 平成 17 年・26 年・30 年などの
過去複数災害の記録点
- 橙線 (落石等規制 97 件):
県北部 + 西部 + 沿岸島嶼の主要道路に分布、 赤マスクと高い重なり
- 青線 (その他規制 67 件):
沿岸 (越波・冠水) + 平野 (強風) で赤マスクと重ならない地区が多い
- 落石∩警戒の94/97 (96.9%)、
H3 (強支持)
- 過去災害 2 km 圏に入る規制区間は
51 件 (31.1%) —
「規制区間 = 過去災害 + 警戒区域指定の重畳箇所」 の量的支持
結果 3: 規制内容 × 地理クラス + 過去災害近接 (図 6)
なぜこの図か: 規制内容ごとに「中山間 / 平野・沿岸都市 / 沿岸島嶼」の
分布がどう違うかを積み棒で比較し、 同時に各規制内容の過去災害近接率を見せる。
「落石は中山間 + 過去災害ヒット率高い vs 越波は沿岸 + 過去災害低い」 という
地理 × 過去履歴の対応を 1 枚で確認する。
図 6 から読み取れること:
- 左パネル (規制内容 × 地理クラス):
落石等は中山間 (橙) が支配的、 越波・冠水は平野・沿岸都市 (青) が
支配的、 凍結等は中山間集中、 強風は分散
- 右パネル (規制内容 × 過去災害 2km 圏ヒット率):
落石等は約24%と高め、
越波・冠水は沿岸特化で過去災害履歴と被らない (= 過去災害 dataset は
主に山腹崩落で沿岸災害をカバーしないバイアス)
- 「規制内容と地形・過去履歴の対応関係」 が量的に確認 — 県は
地形脆弱性別の規制内容を区別して指定している
結果 4: 中山間 + 市町別 詳細表
地理クラス別サマリ:
| 地理クラス |
区間数 |
延長_km |
シェア_% |
| 平野・沿岸都市 |
104 |
479.6 |
63.4 |
| 中山間山地 |
59 |
269.4 |
36.0 |
| 沿岸島嶼 |
1 |
0.6 |
0.6 |
地理クラス 表から読み取れること: 中山間山地が
59 件
(36.0%)と過半数を占め、
平野・沿岸都市 (104 件) が
次。 沿岸島嶼は少数 (1 件) で
規制区間が集中しない。
市町別サマリ (Top 15):
| 市町名 |
地理クラス |
区間数 |
延長_km |
| 庄原市 |
中山間山地 |
29 |
141.6 |
| 不明 (代表点が県外/海上) |
平野・沿岸都市 |
27 |
146.4 |
| 呉市 |
平野・沿岸都市 |
19 |
66.9 |
| 廿日市市 |
平野・沿岸都市 |
19 |
101.7 |
| 安芸高田市 |
中山間山地 |
10 |
40.0 |
| 安芸太田町 |
中山間山地 |
9 |
34.7 |
| 三原市 |
平野・沿岸都市 |
7 |
25.0 |
| 福山市 |
平野・沿岸都市 |
7 |
70.6 |
| 三次市 |
中山間山地 |
6 |
42.5 |
| 坂町 |
平野・沿岸都市 |
5 |
10.4 |
| 東広島市 |
平野・沿岸都市 |
5 |
10.9 |
| 府中市 |
中山間山地 |
5 |
10.6 |
| 尾道市 |
平野・沿岸都市 |
4 |
18.9 |
| 広島市佐伯区 |
平野・沿岸都市 |
4 |
4.5 |
| 海田町 |
平野・沿岸都市 |
3 |
1.1 |
市町別 表から読み取れること:
庄原市 (29 件)が圧倒的最多、
2 位 不明 (代表点が県外/海上) (27 件)、
3 位 呉市 (19 件)。
中山間市町が上位を占めるが、 廿日市市 (一部沿岸) も含まれる — 県西部の
山岳道路の複合性。
規制内容 × 地理クラス クロス:
| 地理クラス |
規制内容 |
中山間山地 |
平野・沿岸都市 |
沿岸島嶼 |
|
落石等 |
37 |
59 |
1 |
|
凍結等 |
20 |
6 |
0 |
|
強風 |
0 |
14 |
0 |
|
冠水 |
2 |
9 |
0 |
|
越波 |
0 |
7 |
0 |
|
その他/不明 |
0 |
9 |
0 |
クロス 表から読み取れること:
落石等は中山間に集中
(97 件分布)、
越波は沿岸
(7 件)、
凍結等は中山間 — 規制内容の地形特化が量的に明確。
【RQ3】 緊急輸送道路 (L72) との重複 — 通行確保の制度的矛盾 / 重複 77 区間 / 149.3 km / 迂回路無 12 件
狙い (RQ3)
RQ2 で「規制区間と過去災害・警戒区域の対応」 という地形脆弱性を見たが、
予防防災のもう一つの重要要素は「制度間の整合性」。
緊急輸送道路 (= 災害時に通行確保すべき) と事前通行規制区間 (= 災害前に予防的
に通行止) の重複は「通行確保の制度的矛盾」を意味する。
RQ3 では緊急輸送道路 30m バッファ内に入る規制区間を sjoin で同定し、
さらに迂回路有無で 2 段階に絞り込み、 BCP の最重要課題 (3 重制度的矛盾) を
量的に明らかにする。
H4 (重複 ≥20km AND ≥15区間) と H5 (迂回路無 重複 ≥1) を検証する。
手法 — 30m バッファ + sjoin + intersection 計算
狙い: 緊急輸送道路 (L72 既扱、 LineString 630 セグ / 2789 km) に
対して30m バッファを作成 (= 道路敷地)、 規制区間 LineString を
gpd.sjoin(predicate="intersects") で重なり判定。 重複延長は
規制 LineString と L72 バッファ union の intersectionを計算 (= 実際の重複
延長 km)。 さらに迂回路 (ukaiumu) 列で 2 段階に絞り込む。
| 項目 | 値 | 意味 |
| L72 緊急輸送道路 |
630 セグ / 2789 km |
4 階層 (第1次/2次/3次/補完, L72 既扱) |
| バッファ幅 |
30 m |
道路敷地 (典型 4-15m) + 路肩・工作物近接帯 |
| 規制区間 LineString |
164 区間 / 750 km |
本記事の主データ |
| 重複判定 |
sjoin (intersects) |
1 規制区間が L72 buffer に少しでも掛かれば重複 |
| 重複延長 |
L72 buffer union との intersection length |
実際の重複 km (≠ 規制区間総延長) |
| 2 段絞り込み |
重複 ∩ 迂回路無 |
3 重制度的矛盾 (BCP 最重要) |
実装 (主要部)
↑ L73_pre_traffic_restriction.py 行 2069–2144
1
2
3
4
5
6
7
8
9
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102 | # L72 緊急輸送道路 JSON 読込 (NDJSON 風: "[" + text + "]" でラップ)
def load_l72_lines(idx):
with open(f"data/extras/L72_emergency_road/.../05_kinkyu_route_{idx}.json") as f:
text = f.read()
arr = json.loads("[" + text + "]")
return [LineString([(pt["e"], pt["d"]) for pt in seg])
for seg in arr if len(seg) >= 2]
records_l72 = []
for idx in ["01", "02", "03", "04"]:
for ln in load_l72_lines(idx):
records_l72.append({"l72_rank": idx, "geometry": ln})
gdf_l72 = gpd.GeoDataFrame(records_l72, crs="EPSG:4326").to_crs("EPSG:6671")
print(f"L72: {len(gdf_l72)} セグメント")
# 30m バッファ → 規制区間と sjoin
gdf_l72["buf"] = gdf_l72.geometry.buffer(30)
buf_l72 = gpd.GeoDataFrame(gdf_l72[["l72_rank", "buf"]].rename(
columns={"buf": "geometry"}), geometry="geometry", crs="EPSG:6671")
overlap = gpd.sjoin(gdf, buf_l72, how="left", predicate="intersects")
gdf["on_l72"] = overlap.groupby(overlap.index)["l72_rank"].apply(
lambda s: s.notna().any())
n_overlap = int(gdf["on_l72"].sum())
print(f"重複: {n_overlap}/{len(gdf)} 区間")
# 重複延長 = 規制 LineString と L72 buffer union の交差長
buf_union = buf_l72.geometry.union_all()
gdf["overlap_km"] = gdf.geometry.apply(
lambda g: g.intersection(buf_union).length / 1000)
print(f"重複延長: {gdf['overlap_km'].sum():.1f} km")
# 迂回路無 重複 (3 重制度的矛盾)
overlap_no_ukai = gdf[gdf["on_l72"] & (gdf["ukaiumu"] == "無")]
print(f"迂回路無 重複 (BCP最重要): {len(overlap_no_ukai)} 件")
|
結果 1: 規制 ∩ 緊急輸送道路 重複マップ (図 7)
なぜこの図か: 「規制区間と緊急輸送道路の重複がどこにあるか」 を地図で
直接見せる。 緊急輸送道路 (灰線, L72 全 630 セグ)、 規制区間 off (灰),
規制 ∩ 緊急輸送 (迂回路有=青, 迂回路無=赤太線+★) の4 段階色分けで、
迂回路無 区間が最重要箇所として浮き上がる。
図 7 から読み取れること:
- 灰線 (L72 緊急輸送道路, 630 セグ):
4 階層を重ねた背景 — 主要骨格が見える
- 灰線 (規制区間 off L72, 87 件):
L72 と重ならない規制区間 — 一般県道・市町道の山岳路線が中心
- 青線 (規制 ∩ L72, 迂回路有, 65 件):
重複あるが代替経路あり — 運用上は「事前通行規制が優先 → 迂回路使用」
- 赤太線 + ★ (規制 ∩ L72, 迂回路無, 12 件):
3 重制度的矛盾の最重要箇所 — 災害時確保すべき + 災害前に通行止 +
迂回路もない
- 重複は149.3 km / 規制総延長 750 km の
19.9% — 「規制区間の 20% 程度が
緊急輸送道路の上に乗っている」 という事実
- BCP 観点で言えば「規制発動時に L72 の 5.35% が同時に通行止になる」
可能性
結果 2: 階層別 + 迂回路 + ランク 3 角度 (図 8)
なぜこの図か: H4 と H5 を 3 角度から検証する: (1) L72 階層別 重複数 +
重複 km、 (2) 迂回路有無別 重複数 + km (H5 直接判定)、 (3) 規制ランク別
重複 vs 非重複の比較。 これで「重複がどの階層に集中するか」 「迂回路無は何件か」
「規制ランク B・C が重複に多いか」 が同時に分かる。
図 8 から読み取れること:
- 左パネル (L72 階層別重複):
第2次 (第2次) が最多 — 主要地方道 + 国道として規制区間と
重なる。 H4 重複 149.3 km / 77 区間 (強支持)
- 中央パネル (迂回路有無):
迂回路有 65 件 (緑) vs
迂回路無 12 件 (赤) — H5 (強支持: BCP最重要箇所が定量化された)
- 右パネル (規制ランク別 重複 vs 非重複):
A・B・C ランクは重複ありが多い (= 主要道路の規制区間と緊急輸送道路は
高い重複率を持つ)、 冬期閉鎖は山岳路線が多く重複少なめ
- 「規制区間の主要部分 = 緊急輸送道路上」 という構造が量的に確認 —
これは緊急輸送道路 = 主要地方道・国道という性質上必然的だが、
BCP 制度設計の前提として明文化する重要数字
結果 3: L72 重複 + 迂回路 詳細表
L72 緊急輸送道路階層別 重複:
| 緊急輸送道路階層 |
区間数 |
重複_km |
| 第1次 |
4 |
12.22 |
| 第2次 |
60 |
121.19 |
| 第3次 |
13 |
15.92 |
L72 階層別 表から読み取れること:
第1次
が最多重複 — 主要地方道 + 一般国道に規制区間と緊急輸送道路の二重指定が
集中する。 第1次 (高速・幹線国道) は重複が比較的少なく、 高速道路が事前通行
規制対象から除外される傾向があることを示唆。
重複 × 迂回路 有無:
| 迂回路 |
区間数 |
重複_km |
| 有 |
65 |
139.39 |
| 無 |
12 |
9.94 |
重複 × 迂回路 表から読み取れること:
重複 77 件のうち迂回路有
65 件 vs
迂回路無 12 件。
迂回路無の12 件が県の予防防災 BCP の最重要課題で、
これらの箇所では「規制発動時の代替輸送手段」 が事前に必要。
3 重制度的矛盾箇所 (迂回路無 重複) 12 件 の詳細:
| rosenname |
kisei_start |
kisei_end |
kiseinaiyo |
rankname |
市町名 |
l72_label |
overlap_km |
| 国道 487号(音戸大橋) |
呉市警固屋8丁目 |
呉市音戸町引地1丁目 |
強風 |
風 |
呉市 |
第2次 |
0.450 |
| 国道 487号(音戸大橋)歩行 |
呉市警固屋8丁目 |
呉市音戸町引地1丁目 |
強風 |
風 |
呉市 |
第2次 |
0.623 |
| 国道 487号(第二音戸大橋) |
呉市警固屋4丁目 |
呉市音戸町渡子1丁目 |
強風 |
風 |
呉市 |
第2次 |
0.007 |
| 国道 487号(第二音戸大橋) |
呉市警固屋4丁目 |
呉市音戸町渡子1丁目 |
強風 |
風 |
呉市 |
第2次 |
0.000 |
| 国道 487号(早瀬大橋) |
呉市音戸町早瀬1丁目 |
江田島市大柿町大君字瀬本 |
強風 |
風 |
不明 (代表点が県外/海上) |
第2次 |
0.401 |
| 国道 487号(早瀬大橋)歩行 |
呉市音戸町早瀬1丁目 |
江田島市大柿町大君字瀬本 |
強風 |
風 |
不明 (代表点が県外/海上) |
第2次 |
0.359 |
| 主要地方道 沼隈横田港線(内海 |
福山市沼隈町字常石 |
福山市内海字天満原 |
強風 |
風 |
不明 (代表点が県外/海上) |
第2次 |
0.950 |
| 主要地方道 沼隈横田港線(内海 |
福山市沼隈町字常石 |
福山市内海字天満原 |
強風 |
風 |
不明 (代表点が県外/海上) |
第2次 |
0.963 |
| 主要地方道 下蒲刈川尻線(安芸 |
呉市下蒲刈町下島字仕方 |
呉市川尻町小仁方1丁目 |
強風他 |
風 |
不明 (代表点が県外/海上) |
第3次 |
1.633 |
| 一般県道 豊浜蒲刈線(豊島大橋 |
呉市豊浜町豊島 |
呉市蒲刈町大浦 |
強風 |
風 |
呉市 |
第3次 |
2.248 |
| 一般県道 豊浜蒲刈線(豊島大橋 |
呉市豊浜町豊島 |
呉市蒲刈町大浦 |
強風 |
風 |
呉市 |
第3次 |
2.244 |
| 一般県道 植木三坂線 |
庄原市西城町植木 |
庄原市西城町三坂 |
凍結等 |
冬 |
庄原市 |
第2次 |
0.062 |
3 重制度的矛盾 表から読み取れること:
これら12 区間は「災害時に通行確保すべき / 災害前に
通行止になる / 迂回路もない」 という 3 重の制度的矛盾を抱える。 全件 CSV
(L73_overlap_no_ukai.csv) で詳細属性を提供 — 県の地域防災計画に
直接フィードバックできる量的優先課題リストとして利用可能。
仮説検証総合
仮説検証総合 (H1〜H5)
本記事冒頭で立てた 5 仮説の検証結果を以下にまとめる。
すべての仮説の検証根拠は本記事中の図表に明示されており、再現可能。
| 仮説 |
観測値 |
判定 |
詳細解説 |
| H1 雨量基準 (jizen) ≥ 70% (RQ1) |
観測 = jizen 138/164 = 84.1% |
強支持 |
H1 強支持: 事前通行規制区間 164 中138 件 (84.1%)が 雨量基準 (jizen) で運用される動的規制、 残り26 件 (16%)が冬期閉鎖 (winter)。 動的判定 (= 観測雨量がしきい値超過 → 自動規制) が圧倒的多数派で、 「降雨ノモゲン違反 → ルールベース規制」という県の予防防災運用思想を 反映。 ランク A (23 件) は 80mm/20mm の最も厳しい閾値で、 ランク C (38 件) は 120mm/40mm の 緩い閾値。 雨量 3 階層 + 特 (沿岸越波/冠水) + 風 + 冬 という多層的な 規制制度が県内に展開。 |
| H2 中山間集中 ≥ 60% (RQ2) |
観測 = 中山間 59/164 = 36.0% |
反証 |
H2 反証: 事前通行規制区間のうち中山間 7 市町(庄原・三次・安芸太田・安芸高田・北広島・神石高原・世羅 + 府中) に位置するのは59 件 (36.0%)。 残り 105 件が平野・沿岸都市または沿岸島嶼に分布。 60% 未満で反証。 これは「事前通行規制 = 中山間山岳道路の脆弱性に対する予防制度」 という 地形 × 制度の対応関係を量的に示す。 都市部の規制は越波・冠水・強風など 沿岸特化型に偏り、 中山間は落石・凍結という地形脆弱性型に偏るという 制度設計の地理的二面性が見える。 |
| H3 落石∩警戒区域 ≥ 50% (RQ2) |
観測 = 落石 94/97 = 96.9% |
強支持 |
H3 強支持: 落石等規制区間 97 件のうち、 土砂災害警戒区域 (急傾斜+土石流+地すべり) と50m バッファ内で交差する のは94 件 (96.9%)。 50% 閾値を超え強支持。 これは「過去に落石・崩落があった道路 → 警戒区域指定 → 規制区間指定」 という 3 段階の予防制度階層の量的実証であり、 規制区間のうち警戒区域に 重なる箇所は「土砂法 × 道路法」 の制度的二重指定と解釈できる。 参考: 過去災害 (424 件) と 2 km 圏内の規制区間は 51 件で、 これも規制制度が過去履歴を反映する 設計であることを支持。 |
| H4 規制∩緊急輸送 ≥ 20 km AND ≥ 15 区間 (RQ3) |
観測 = 重複 149.3 km / 77 区間 |
強支持 |
H4 強支持: 事前通行規制区間と緊急輸送道路 (L72, 630 セグメント / 2789 km) の 30m バッファ重複は 77/164 区間 (47.0%) / 重複延長 149.3 km。 20km/15区間を超え強支持。 これは「災害時に通行確保すべき緊急輸送道路の一部が、 災害前に予防的に通行止になる」 というBCP 制度的矛盾の量的事実。 県の地域防災計画では (1) 緊急輸送道路の通行確保, (2) 事前通行規制による 予防的安全 が両立しなければならず、 重複区間ではこの両者が衝突する。 運用上は「事前通行規制が優先 → 緊急輸送道路の代替経路を使用」 となるが、 代替経路の確保状況 (= 迂回路有無) が決定的に重要 (H5 へ)。 |
| H5 迂回路無 重複 ≥ 1 (RQ3) |
観測 = 迂回路無 重複 12 件 |
強支持 |
H5 強支持: 緊急輸送道路と重複する規制区間 (77 件) のうち、 迂回路無 (ukaiumu='無') の区間は12 件。 1 件以上で強支持 = BCP 最重要箇所が定量化された。 これらの区間は「災害時に通行確保すべき + 災害前に通行止になる + 迂回路もない」 という3 重制度的矛盾の最重要箇所であり、 県の予防防災 BCP の核心課題。 これらの箇所は (1) 防災工事による規制基準緩和 (落石防護網・スノーシェッド設置), (2) バックアップルートの新規建設, (3) 災害時の代替輸送手段 (ヘリ・船舶) の確保, のいずれかで対処する必要がある優先課題。 |
主要発見の整理
- RQ1 主発見: 県の事前通行規制区間は164 区間 / 750 km。
雨量基準が 138 件 (84.1%)と多数派、 H1
(強支持)。 規制内容は落石等
97 件 + 凍結等
26 件 が中心、 ランクは
A/B/C の 3 階層 (80/100/120 mm/24h) + 特/風/冬 の補助で構成される
「ルールベース予防制度」が定量的に示された。
- RQ2 主発見: 規制区間の36.0% (59 件)が
中山間 7 市町に集中 (H2 反証)、
落石等規制 97 件中
94 件 (96.9%)が
土砂警戒区域と重なる (H3 強支持)。
過去災害 424 件と 2 km 圏内の規制区間が
51 件で「過去災害 → 警戒区域 → 規制区間」 の
3 段階予防制度階層が量的に実証された。
- RQ3 主発見: 規制区間と緊急輸送道路の重複は
77 区間 / 149.3 km
(H4 強支持)、 そのうち迂回路無 = 3 重制度的
矛盾箇所が12 件 (H5 強支持)。
これは「災害前の予防的安全 vs 災害時の通行確保」 という2 つの防災
要請の衝突を量的に示し、 県の予防防災 BCP の最優先課題として直接
利用可能なリストを提供する。
本記事の独自貢献
- 「予防的安全制度」 の概念定量化: 事前通行規制区間 164 区間 を
規制内容 × 規制ランク × 雨量閾値 × 路線種別 × 建設事務所の
5 軸で初めて系統的に集計。 県の予防防災運用が「A80/B100/C120 mm/24h
の 3 階層 + 特/風/冬 補助」という制度に整理されていることを実証。
- 「3 段階予防制度階層」 の実証: 「過去災害履歴 (L61) →
土砂警戒区域指定 (L11) → 事前通行規制区間指定 (L73)」 という3 段階の
予防制度を空間データで量的支持。 落石等規制 96.9% が
警戒区域と重なる + 過去災害 2km 圏内に
51 件が位置する。
- 「3 重制度的矛盾箇所」 リストの作成: 緊急輸送道路 (L72) +
事前通行規制区間 + 迂回路無 の3 重交差を空間判定で
12 件同定 (CSV 出力)。 県の地域防災計画 BCP の
最優先課題リストとして直接利用可能。
- L11 + L61 + L72 との横断連携: 事前通行規制 (1 dataset) +
警戒区域 (L11 既扱) + 過去災害 (L61 既扱) + 緊急輸送道路 (L72 既扱) の
4 dataset を sjoin で組合わせ、 県の予防防災制度ネットワークを
初めて統合的に定量化。
- WKT パースの片寄り対策: 公式 JSON の
kukan 列に
1 件 (KJID_20110019) で閉じ括弧欠損あり。 kukanroot を優先する
ことで全 164 件パース成功 = 公開データの軽微なエラーを実装で吸収する
手法を例示。
本記事の限界
- 属性の制約: 公開データには規制指定年度・指定根拠・最近運用履歴等の
行政文書ベースの属性が含まれない。 これは「リアルタイム規制発動」 用の
最小限公開と推定されるが、 研究用途には限界。 詳細な制度沿革には県の道路
管理台帳との結合が必要。
- 過去災害との対応の因果不明: 本記事は「規制区間 ≈ 警戒区域 ≈
過去災害」 の 3 者の近接性 (2 km 圏)を量的に示すが、 「過去災害が
原因で規制指定された」 という因果関係は道路管理者の規制決定文書を
見ないと確定できない。
- 50 m バッファ + 2 km 圏は近似: 警戒区域重なり判定の 50m バッファは
「道路敷地 + 警戒区域への接続」 の近似で、 道路敷地が広い (= 高速道路 IC) や
狭い (= 山道) 場所では過大・過小となる場合がある。 2km 圏は過去災害近接の
一般的な値だが、 規制根拠としては緩い。
- L72 重複判定の 30m バッファ: 緊急輸送道路と規制区間が同じ路線でも
ベクトル幾何が完全に一致しない場合がある (= 公開データ作成時期が異なる)。
30m バッファでほぼ確実に判定できるが、 まれに重複していても重複なしと
判定される可能性。
- 動的観測値の非利用:
uryo24h/uryo60m 列は
取得時刻のスナップショット観測雨量 (本記事取得時 2026-05-09 21:55) で、
静的属性ではない。 リアルタイム雨量 vs 閾値の比較解析は本記事のスコープ外。
- ランク D/E 等の欠如: 本データには A/B/C + 特・冬・風・地震・霧
しか登場しない。 公式の規制ランク体系がこれで完全か、 他の県・国交省管轄で
D ランク等が存在するかは不明。
発展課題
発展課題 — 結果 X → 新仮説 Y → 課題 Z 形式
発展課題 1 (RQ1 拡張): 雨量実時間データ × 閾値 の同時可視化
- 結果 X: 本記事は静的な閾値 (ikichi24h, ikichi60m) を分析したが、
規制発動の実頻度は取得時刻スナップショットの観測雨量 (uryo24h/60m)
でしか見えない。 過去 1 年でどの区間が何回発動したかは未検証。
- 新仮説 Y: 過去 1 年で発動回数が多いのはランク A (80mm 厳)の
区間 (= 閾値が低いため発動しやすい)。 中央値 5-10 回/年、 最多区間で
30 回/年と予想。 ランク C (120mm) は 1-3 回/年と稀。
- 課題 Z: DoBoX または県の道路規制履歴データを取得 → 規制区間 ID と
照合 → 発動回数 × ランク クロス → 「過頻発動区間マップ」を作成。
頻発区間は防災工事 (落石防護網設置) の優先順位付けの根拠となる。
発展課題 2 (RQ2 拡張): 標高・斜度データとの結合
- 結果 X: 本記事は中山間判定を「市町名」 で代理したが、 実際の地形
脆弱性は標高・斜度で量的に表される。 規制区間の沿道斜面の傾斜分布は
未検証。
- 新仮説 Y: 落石等規制区間の沿道斜面は中央値30 度以上で、
凍結等規制区間の中央標高は500 m 以上。 これは「土砂災害防止法
30 度基準 + 山地気象の凍結基準」 の量的根拠。
- 課題 Z: L40 標高データ + L39 斜度データを取得 → 規制区間 LineString
の沿道に 30m バッファ → ラスタの平均値・中央値 → 規制内容別比較 →
「規制 × 地形」 の量的相関を示す。
発展課題 3 (RQ2 拡張): 気候変動シナリオ別 規制発動増加予測
- 結果 X: 本記事は 2026 年現状の規制制度を分析したが、 気候変動で
集中豪雨が増えると規制発動頻度はどう変化するかは未検証。
- 新仮説 Y: IPCC RCP8.5 シナリオ (4 度上昇) で 100 mm/24h を超える
日数が現在比 1.5-2.0 倍になると、 ランク B (100 mm) の発動回数は
+50%〜100%増加。 これは「現在の規制制度が将来の気候に対応
不可能」 という制度設計課題を示す。
- 課題 Z: 気象庁の地域気候モデル (CMIP6) から将来 24h 降雨量分布を
取得 → 各規制区間の 100 mm 超過日数を将来予測 → 「気候変動下の規制発動
頻度マップ」を作成。 A/B/C 閾値の見直しの根拠となる。
発展課題 4 (RQ3 拡張): 3 重制度的矛盾箇所の防災工事優先順位
- 結果 X: 本記事は迂回路無 重複区間を 12 件同定したが、
これらの優先順位 (どの順で防災工事するか) は未検証。
- 新仮説 Y: 優先順位は(1) 規制発動頻度, (2) 災害履歴近接性,
(3) 規制延長, (4) 緊急輸送道路階層の 4 軸で決まる。 これらをスコア化
すると上位 5 件が県の防災工事 5 か年計画の中核となる。
- 課題 Z: 上記 4 指標をすべて 0-100 スケールで標準化 →
重み付け合計でスコア化 → 上位 N 件抽出 → 「防災工事優先順位マップ」を
作成。 県の道路防災計画への直接インプット。
発展課題 5 (RQ3 拡張): L50 動的規制との時間的重なり
- 結果 X: 本記事は L73 (静的・予防的) のみ扱ったが、 L50 (動的・本日の
規制) では工事規制 + 災害規制が動的に発生する。 同じ路線で L73 規制中に
L50 工事規制が重なると「二重規制」となり通行不能期間が延びる。
- 新仮説 Y: L73 + L50 (本日 + 今後) の路線一致重複は数件存在。
これらは「予防規制 + 工事規制」 の同時発生で、 BCP の意味で「最も通行
不能になりやすい区間」。
- 課題 Z: L50 dataset (1257 + 1258) を取得 → rosen_key で L73 と結合 →
重複区間を抽出 → 「二重規制リスクマップ」を作成。 県の道路工事
スケジュール調整の根拠となる。
発展課題 6 (展望): 地域住民への規制リスク情報配信
- 結果 X: 本記事は研究者・行政向けの分析だが、 地域住民は「自分の
最寄り道路がいつ規制されるか」 を知る権利がある。 現状の DoBoX は専門家
指向で、 住民向け UX は未整備。
- 新仮説 Y: 県内集落 (~1000 集落) のうち10-15%の集落は最寄り
道路に事前通行規制区間がある。 これらの集落住民は規制発動時に外部
移動が制限される。 集落単位での規制リスク表示があれば住民の防災意識が
高まる。
- 課題 Z: 集落の代表点 (避難所 dataset から代理) → 最寄り規制区間を
BallTree で検索 → 集落 × 規制区間 距離マトリクス →
「集落別規制リスクポータル」(Web ページ) を作成。 地域住民が自分の
集落 ID から見ることができる。
発展課題 7 (展望): ランク基準の科学的妥当性検証
- 結果 X: ランク A/B/C の 80/100/120 mm/24h 閾値は過去の経験値で
設定されたと推定されるが、 現在の地形・地質・気候から見て妥当かは未検証。
- 新仮説 Y: 過去 30 年の災害発生データから、 各規制区間の真の安全
閾値を推定すると、 現状の A/B/C 閾値の20-30%が過大 (= 規制
発動が遅すぎる) または過小 (= 過剰規制)。 これは「経験値ベースの制度の
科学的更新可能性」 を示す。
- 課題 Z: 過去 30 年の災害発生履歴 + 各災害発生時の 24h/60m 雨量
観測 → 各規制区間の真の閾値を機械学習で推定 (ロジスティック回帰) →
推定閾値 vs 現状閾値の差分を量化 → 「閾値見直し提案リスト」を作成。
県の制度更新の根拠データとなる。