Lesson 68

シェッド基本情報 単独 3 研究例分析 — 22 件から県の道路保護階層を読む

L68シェッド覆道洞門防雪覆道ロックシェッド国道県道RQ×3Format BgeopandasPOINT (CSV)中山間山腹通過道路保護階層L66連携 (橋梁)L67連携 (トンネル)L11連携 (土砂・雪崩)
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 13 (CSV, ~4.8 KB)

学習目標と問い

本記事は DoBoX のシリーズ「シェッド基本情報・維持管理情報」 1 件 (dataset_id = 13) を 単独で取り上げ、広島県が管理する 道路シェッド (覆道) 全 22 件 / 7 市町 / 5 事務所 / 8 路線を 3 つの独立した研究角度 (RQ1 / RQ2 / RQ3) で並列に分析する。 本データは CSV 形式 (4,892 byte / 16 列) で、緯度経度は 21 / 22 件取得可。

L66 (橋梁) / L67 (トンネル) との位置付け — 道路保護三層構造: 本記事 L68 はシリーズ「○○基本情報・維持管理情報」 のうちシェッド版で、 L66 橋梁 (4,203 件) / L67 トンネル (157 件) / L68 シェッド (22 件) は同じ管理体系・同じ事務所階層で扱われる「道路保護施設の三兄弟」。 ただし機能・地形対象・規模は明確に分かれる: 橋梁 = 平野・川越え (網状多数)トンネル = 山岳貫通 (希少大規模)シェッド = 山腹通過 (超希少特殊解)。 本記事 RQ3 はこの三層構造を県全域で実証する。

シェッドの本質: 道路の上部を覆う構造物で、 落石・雪崩・崩土から道路と通行車両を守る。トンネルが「貫通」 して山の中を通すのに対し、 シェッドは道路を残したまま上から覆うことで開放感と低コストを両立する。 急傾斜地・雪崩多発区間・崩落履歴区間にピンポイント設置される。 2014 年改正の道路法で5 年に 1 回の点検が義務化され、 判定区分 I (健全) 〜 IV (緊急措置) が付与されるが、 本データの「判定区分」 列は全件 "?" でマスクされている。 そのため本研究では「築年数」 を健全度の代理指標として扱う。

独自用語の定義

研究の問い (3 RQ)

仮説 H1〜H5

  1. H1 (シェッド 3 分類, RQ1): シェッド 22 件は 洞門 (一般落石覆道)を過半数とし、防雪覆道 + ロックシェッドがそれに次ぐ 3 分類構造。施設名から自動分類して検証。
  2. H2 (中山間 + 山岳路線集中, RQ1): シェッドの80% 以上が 中山間 9 市町の国道 186/191/182 号 + 山岳県道に集中。平野部にはほぼ存在しない。
  3. H3 (危険箇所近接, RQ2): シェッドの過半数が 500m 以内に 急傾斜地・土石流・雪崩のいずれかを持つ (前半)。 特に防雪覆道は雪崩危険箇所に近接する (後半)。
  4. H4 (件数の三層比, RQ3): 橋:トン:シェ ≒ 191:7:1。 橋梁=網状多数、トンネル=希少大規模、シェッド=超希少特殊解。
  5. H5 (規模の段階差, RQ3): 平均延長 橋 < シェ < トン。 シェッドは橋梁 (19m) より大きく、トンネル (314m) より小さい中間規模。

到達点

  1. 1 つの超小規模 CSV (22 件 × 16 列, 全件 POINT) から、 シェッド種別 / 道路種別 / 市町 / 事務所 / 路線 / 延長 / 幅員 / 建設年度 を 多角度で集計し、施設名からの種別自動分類という実データ加工技を身につける。
  2. シェッド × 急傾斜・土石流・雪崩の空間結合 (geopandas sjoin) を体験し、 L11 既扱データを再活用する横断分析の技を獲得する。
  3. RQ3 で橋梁 + トンネル + シェッド の道路保護三層構造を完成させ、 「県の道路インフラ」 の物理的形状の全景を一望する。

使用データ

DoBoX のシリーズ「シェッド基本情報・維持管理情報」 1 件のみを単独で扱う。 リソースは CSV 1 ファイル (4.8 KB)。

項目
dataset_id 13
公式名 シェッド基本情報・維持管理情報
ファイル shed_basic.csv
形式 CSV (UTF-8 BOM)
ファイルサイズ 4,892 byte (~4.8 KB)
レコード数 22 行 (= 道路シェッド件数)
列数 19 列
種別 全件 シェッド (本記事で 3 分類: 洞門/防雪/ロックシェッド)
道路種別 国道 14 + 県道 8
管理事務所 5 事務所
路線数 8 異なり値
市町数 (正規化済) 7 市町
緯度経度 21 / 22 件取得可 (1 件 = 16 番津浪洞門のみ欠損で地図に出ない)
建設年度 21 / 22 件取得可、範囲 1933-2007 (1 件 = 22 番杉ノ泊防雪トンネルが '0' で不明)
点検年度 全件 取得可、範囲 2018-2022
判定区分 全件 "?" (= 公開データでは伏せられる)
延長 (m) 中央値 77m / 最大 322m / 最小 17.0m
幅員 (m) 中央値 7.0m / 最大 10.50m / 最小 6.50m
座標系 (元) EPSG:4326 (WGS84) → EPSG:6671 で処理
ライセンス クリエイティブ・コモンズ表示 (CC-BY)
作成主体 広島県土木建築局道路整備課
URL https://hiroshima-dobox.jp/datasets/13

この表から読み取れること: dataset 13 は 22 行 × 19 列の超軽量 CSV。 列構成は L66 橋梁・L67 トンネルとほぼ同型で、 種別 / 路線 / 道路種別 / 建設年度 / 延長 / 幅員 / 緯度経度 / 点検年度 / 判定区分を持つ。 緯度経度は 21 / 22 件取得可、建設年度は 21 / 22 件。 判定区分は全件マスクされており、健全度値は本データから直接は取れない。

L66 (橋梁) / L67 (トンネル) との関係 — 道路保護三層構造

項目L66 橋梁L67 トンネルL68 シェッド (本記事)
研究の問い 橋梁台帳 (種別・規模・年代・防災) トンネル台帳 + 二極構造 シェッド台帳 + 三層構造
主役データ dataset 11 (4,203 件) dataset 12 (157 件) dataset 13 (22 件)
地形対象 河川・谷を渡る (平野・低地) 山岳を貫く (中山間) 山腹を覆う (急峻地形)
機能 道路の連続性確保 (橋渡し) 山岳バイパス (貫通) 落石・雪崩・崩土からの保護
規模 中央値 ~ 7m, 短橋多数 中央値 ~ 206m, 中・長尺中心 中央値 ~ 77m, 中尺中心
道路種別偏向 県道 72.6% (件数支配) 国道 52.9% (規模支配) 国道 63.6% (山岳幹線保護)
共通点 同じ管理体系 (道路法 + 5 年周期点検) + 健全度区分マスク + 同じ事務所階層

この表から読み取れること: L66/L67/L68 は同じシリーズの三兄弟データセット。 研究の問いは似ているが、対象地形・規模・偏向が階段状に変化する。 本記事 RQ3 でこれを「道路保護三層構造」として定量化する。

データ取得手順

ステップ 操作 値 / URL
ステップ 1 DoBoX dataset 13 ページ https://hiroshima-dobox.jp/datasets/13
ステップ 2 CSV DL (リソースリンク) ページ内の 1 リソースから「ダウンロード」
ステップ 3 保存先 data/extras/L68_sheds/shed_basic.csv
ステップ 4 POINT 構築 + EPSG:6671 投影 21/22 件 → POINT (1 件は緯度経度欠損)
ステップ 5 種別自動分類 施設名から 防雪/ロックシェッド/洞門 の 3 分類
ステップ 6 市町同定 (テキスト + sjoin) sjoin 18/21 直接, 残りは最近隣
ステップ 7 RQ1 集計 (構造) 種別 + 道路種別 + 市町 + 事務所 + 路線 + 延長 + 幅員 + 年代
ステップ 8 RQ2 危険近接判定 (500m バッファ) 急傾斜 29,756 + 土石流 13,337 + 雪崩 2,169 と sjoin
ステップ 9 RQ3 集計 (L66/L67 比較) 件数比 191:7:1
ステップ 10 8 図 + 12 表 出力 本スクリプト全体で ~10 秒

この表から読み取れること: DoBoX dataset 13 → CSV DL → POINT 構築 → 種別自動分類 → 市町同定 → 危険箇所 sjoin → RQ1/2/3 集計、の 10 ステップで再現可能。 全工程は本スクリプト 1 本で自動実行 (~10 秒)。

関連データセットとの対応

ダウンロード

本レッスンの再現に必要な全データ・中間 CSV・図 PNG・スクリプトを以下から直接 DL できる:

生データ (DoBoX 直リンク + 本日取得分)

本記事の中間 CSV (再現用)

図 PNG (8 枚) と Python スクリプト

個別取得 (PowerShell, このレッスンだけ)

cd "2026 DoBoX 教材"
# DoBoX のページから shed_basic.csv をブラウザで DL し、
# data/extras/L68_sheds/shed_basic.csv に置く (~5 KB)
py -X utf8 lessons/L68_sheds.py

本スクリプトは data/extras/L68_sheds/shed_basic.csv が無ければ ensure_dataset() ヘルパで自動取得を試みる。 全工程は約 10 秒で完走 (要件 S 余裕クリア)。

【RQ1】 シェッドの構造 — 国道 64% / 中央値 77m / 中山間 82%

RQ1 の狙い

22 件の道路シェッドをシェッド種別 / 道路種別 / 市町 / 事務所 / 路線 / 延長 / 幅員 / 建設年代の 8 軸で多角度に集計し、広島県のシェッド網の 物理的形状を立体化する。 特に「シェッド」 という急峻地形保護の特殊インフラの規模・分布を 初めて定量化する。

手法 (前置き解説)

入出力の Before/After 例

段階1 件 (= 18番 君田洞門) の中身件数
(0) CSV 1 行 施設番号=18, 施設名=君田洞門, 種別=シェッド, 路線名=三次高野線, 道路種別=県道, 延長=50.0, 幅員=6.75, 建設年度=1979, 緯度=34.885, 経度=132.851, 住所=三次市 君田町 西入君 22
(1) 種別 自動分類 + シェッド種別 = 「洞門 (一般落石覆道)」 (← 「防雪」「ロックシェッド」 含まない) 22
(2) 市町正規化 + 市町名 = 三次市 (← 「三次市 君田町 西入君」 の先頭 = 三次市) 22
(3) POINT 構築 + EPSG:6671 + geometry = Point (X, Y, m 単位) 21
(4) sjoin 検証 + CITY_CD = 209 (= 三次市) — テキストと整合 21
(5) 派生フラグ + 年代=1970, is_old=False, is_long=False (50m < 150m), 地形分類=中山間 22
(6) 集計 (例: 種別別) 洞門: 16 件 (1 位) (別)

(0)-(6) を全 22 件に適用 → 8 軸で集計 → 図化。

実装コード (CSV → 数値正規化 → 種別自動分類 → 集計)

L68_sheds.py 行 1571–1688

 1
 2
 3
 4
 5
 6
 7
 8
 9
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
# 1. CSV 読込 + 数値列クリーニング
import pandas as pd, geopandas as gpd, numpy as np
from shapely.geometry import Point

df = pd.read_csv("data/extras/L68_sheds/shed_basic.csv", encoding="utf-8-sig")
print(df.shape, df["道路種別"].value_counts())  # 22 行, 国道 14 / 県道 8

# 2. 数値列をきれいに
df["建設年度"] = pd.to_numeric(df["建設年度"], errors="coerce")
df.loc[df["建設年度"] <= 1800, "建設年度"] = np.nan  # "0" を NaN
df["延長(m)"] = pd.to_numeric(df["延長(m)"], errors="coerce")
df["幅員(m)"] = pd.to_numeric(df["幅員(m)"], errors="coerce")
df["緯度(10進数)"] = pd.to_numeric(df["緯度(10進数)"], errors="coerce")
df["経度(10進数)"] = pd.to_numeric(df["経度(10進数)"], errors="coerce")

# 3. シェッド種別 自動分類 (施設名ベースの 3 分類)
def classify_shed(name):
    s = str(name)
    if "防雪" in s: return "防雪覆道 (雪崩対策)"
    if "ロックシェッド" in s: return "ロックシェッド (明示的落石対策)"
    return "洞門 (一般落石覆道)"
df["シェッド種別"] = df["施設名"].apply(classify_shed)
print(df["シェッド種別"].value_counts())
# 洞門 (一般落石覆道):       16
# 防雪覆道 (雪崩対策):        5
# ロックシェッド (明示的落石対策): 1

# 4. POINT 構築 + 投影
geom_ok = df["緯度(10進数)"].notna() & df["経度(10進数)"].notna()
df_geom = df[geom_ok].copy()
df_geom["geometry"] = df_geom.apply(
    lambda r: Point(float(r["経度(10進数)"]), float(r["緯度(10進数)"])), axis=1)
gdf = gpd.GeoDataFrame(df_geom, geometry="geometry",
                       crs="EPSG:4326").to_crs("EPSG:6671")

# 5. 市町正規化
def parse_city(addr):
    head = str(addr).replace("広島県", "").strip().split(" ")[0].strip()
    for c in ["広島市","呉市","三原市","尾道市","福山市","三次市","庄原市",
              "東広島市","廿日市市","府中市","大竹市","安芸高田市",
              "竹原市","江田島市"]:
        if head.startswith(c): return c
    return head  # 「北広島町」「安芸太田町」 等はそのまま
df["市町名"] = df["住所(市町)"].apply(parse_city)

# 6. RQ1 多軸集計
print(df.groupby("市町名").size().sort_values(ascending=False).head(5))
print(df["路線名"].value_counts())
print(f"国道シェア: {(df['道路種別']=='国道').sum()/len(df)*100:.1f}%")
print(f"中山間シェア: {df['市町名'].isin(['庄原市','三次市','北広島町','安芸太田町','神石高原町','世羅町','府中市','安芸高田市','大崎上島町']).sum()/len(df)*100:.1f}%")

# 7. 長尺シェッド (>=150m)
LONG = 150.0
df["is_long"] = df["延長(m)"] >= LONG
print(f"長尺シェッド: {df['is_long'].sum()} / {len(df)}")

図 1: なぜこの図か (RQ1)

「広島県のどこにどんな種別のシェッドがあるか」 を 1 枚で読みたい。 全 22 件のうち緯度経度有 21 件を、 洞門 (青) / 防雪 (緑) / ロックシェッド (赤)の 3 色で大三角に描く。 これにより県内シェッド網の物理的形状 + 種別偏在が一目で読める。 点を大きめ (msize=85) + 三角マーカーで設定し、 橋梁・トンネルとは別の「特殊解インフラ」感を出す。

図 1 (RQ1): 広島県 道路シェッド 全域マップ — 種別 3 分類 (洞門/防雪/ロック)
図 1 (RQ1): 広島県 道路シェッド 全域マップ — 種別 3 分類 (洞門/防雪/ロック)

この図から読み取れること:

図 2: なぜこの図か (RQ1)

「7 市町と 8 路線のうち、どこに集中しているか」 を 左右ペアで比較したい。横棒 (件数 + 値ラベル) で並べ、市町は 中山間 (青) vs 平野・沿岸 (橙)で塗り分け。 これにより市町別偏在 + 路線別偏在が一目で読める。

図 2 (RQ1): 市町別 + 路線別 シェッド件数
図 2 (RQ1): 市町別 + 路線別 シェッド件数

この図から読み取れること:

図 3: なぜこの図か (RQ1)

「シェッドの3 分類の比率 + 規模 (延長 + 幅員) 分布」 を 1 枚で読みたい。 左 = 種別棒グラフ (H1 検証)、中 = 延長ヒスト + 長尺閾値 (150m) + 中央値線、 右 = 幅員ヒスト + 中央値線。3 ペインで構造を網羅。

図 3 (RQ1): 種別 + 延長 + 幅員 分布
図 3 (RQ1): 種別 + 延長 + 幅員 分布

この図から読み取れること:

図 4: なぜこの図か (RQ1)

「シェッドがどの年代に集中整備されたか」 を 1 枚で読みたい。 10 年区切りの建設年代別件数を棒グラフで描き、 老朽閾値 (1970 年代以前) を赤色、1980 年以降を青色で塗り分け。

図 4 (RQ1): 建設年代別 シェッド件数
図 4 (RQ1): 建設年代別 シェッド件数

この図から読み取れること:

表: RQ1 全体サマリ

指標
総件数 (RQ1) 22 件
国道シェッド 14 (63.6%)
県道シェッド 8 (36.4%)
管理事務所数 5
路線数 8
市町数 7
Top 1 市町 (RQ1) 北広島町 (8 件)
中山間 9 市町シェア (RQ1) 81.8% (18 件)
最頻種別 (RQ1) 洞門 (一般落石覆道) (16 件, 72.7%)
長尺シェッド (≥150m) (RQ1) 6 件 (27.3%)
延長 中央値 / 最大 (RQ1) 77 m / 322 m
幅員 中央値 / 最大 (RQ1) 7.0 m / 10.50 m
最多年代 (RQ1) 2000s (7 件)
老朽シェッド (≤1974) (RQ1) 4 件 (19.0%)

この表から読み取れること: 県内道路シェッドは 22 件 / 7 市町 / 5 事務所 / 8 路線 / 国道 + 県道 / 3 種別 の超小規模管理対象。国道シェア 63.6% で件数支配、規模は中尺集中 (中央値 77m)。中山間シェア 81.8% は L66 (橋梁) の中山間率より圧倒的に高い。

表: シェッド種別 サマリ (3 分類, H1 検証)

シェッド種別 件数 シェア_% 平均延長_m
洞門 (一般落石覆道) 16 72.7 108.7
防雪覆道 (雪崩対策) 5 22.7 110.6
ロックシェッド (明示的落石対策) 1 4.5 72.0

この表から読み取れること: 洞門 16 件 (73%, 過半数) + 防雪覆道 5 件 (23%) + ロックシェッド 1 件 (5%)。3 分類の共存はシェッドの呼称の歴史的変遷を反映。古い覆道は「洞門」、雪深い地域は「防雪○○」、新規は「ロックシェッド」。平均延長は種別ごとに異なり、設計思想の差を示す。

表: 道路種別 サマリ

道路種別 件数 シェア_% 平均延長_m 平均幅員_m
国道 14 63.6 117.9 7.85
県道 8 36.4 89.3 6.89
合計 22 100.0 107.5 7.50

この表から読み取れること: 国道 63.6% (n=14) + 県道 36.4% (n=8)。国道は件数も規模も優勢: 平均延長 118m vs 県道 89m。これは L67 トンネル (国道偏重) と同じパターンで、「広域幹線でこそ大規模保護施設」の事業構造を反映。

表: 市町別 ランキング (全件)

順位 市町名 件数
1 北広島町 8
2 安芸太田町 4
3 三次市 3
4 大竹市 3
5 庄原市 2
6 安芸高田市 1
7 廿日市市 1

この表から読み取れること: 件数最多は 北広島町 (8 件)、Top 3 で 68% を占める。中山間市町 (青色市町) が上位を独占し、「シェッド = 中山間+山岳道路の特殊解」のパターンが鮮明。

表: 管理事務所別 ランキング

順位 管理事務所名 件数 シェア_%
1 安芸太田支所 12 54.5
2 廿日市支所 4 18.2
3 北部建設事務所 3 13.6
4 庄原支所 2 9.1
5 西部建設事務所 1 4.5

この表から読み取れること: 安芸太田支所 (12 件, 54.5%) が単独 1 位 = 西部山地 (国道 186 号沿線) の中山間道路網担当。事務所間で大きな偏りがある = シェッド整備が地形に強く依存することを反映。

表: 路線別 ランキング (全件)

順位 路線名 件数 シェア_%
1 186号 11 50.0
2 三次高野線 3 13.6
3 182号 2 9.1
4 八幡雲耕線 2 9.1
5 浜田八重可部線 1 4.5
6 甲田作木線 1 4.5
7 191号 1 4.5
8 弁財天加計線 1 4.5

この表から読み取れること: 路線別 1 位は 186号 (11 件) で全体の 50%。残り 7 路線は 1-3 件のみ。「主要 1 路線にシェッドが集中する」偏在は橋梁・トンネルより極端で、国道 186 号の優先度が際立つ。

表: 建設年代別 件数

年代 件数 シェア_%
1930s 1 4.8
1960s 2 9.5
1970s 5 23.8
1980s 2 9.5
1990s 4 19.0
2000s 7 33.3

この表から読み取れること: 建設年代は1930s から 2000s に分散、最多は 2000s (7 件)。老朽 (1970s 以前) は 4 件 (19%)。2000s も新規整備があり 「シェッドは現在進行形のインフラ」。これは橋梁・トンネルが「維持管理時代」 に入ったのと対照的。

【RQ2】 危険箇所との関係 — いずれか近接 48% / 防雪覆道の雪崩近接 0% (反直観!)

RQ2 の狙い

RQ1 で抽出した 22 件のシェッド (うち緯度経度有 21 件) について、 急傾斜地・土石流・雪崩の 3 種類の危険箇所と 500m バッファで sjoin し、「シェッドが危険箇所をピンポイント保護している」仮説を検証する。 特に防雪覆道が雪崩危険箇所に近接するパターンを追う。

手法 (前置き解説)

入出力の Before/After 例

段階1 件 (= 18番 君田洞門) の中身件数
(0) シェッド POINT geometry = Point(X, Y), 種別=洞門, 延長=50m 21
(1) 500m バッファ geometry = Polygon (半径 500m の円, 面積 ~ 0.79 km²) 21
(2) 急傾斜 sjoin + near_急傾斜 = True (バッファ内に急傾斜 polygon 重なり) 10
(3) 土石流 sjoin + near_土石流 = True 8
(4) 雪崩 sjoin + near_雪崩 = True 5
(5) 危険スコア + hazard_count = 3 (3 種すべて近接 — 君田洞門は最高ランク) 4

(0)-(5) を全 21 件に適用。 hazard_count = 0/1/2/3 の 4 段階で各シェッドのリスクを評価。

実装コード (バッファ → sjoin → 種別 × 危険 集計)

L68_sheds.py 行 1867–1947

 1
 2
 3
 4
 5
 6
 7
 8
 9
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
# 1. シェッド POINT を 500m バッファ
gdf_buf = gdf.copy()
gdf_buf["geometry"] = gdf_buf.geometry.buffer(500.0)

# 2. 土砂災害 + 雪崩 Shapefile を読込 (L11 既扱を再利用)
import geopandas as gpd
sed_dir = ROOT / "data" / "extras" / "sediment_shp"
ava_dir = ROOT / "data" / "extras" / "avalanche_shp"
kyukei = gpd.read_file(sed_dir / "kyukeisha" / "..." / "73_031krp_34_20260427.shp"
                       ).to_crs("EPSG:6671")
doseki = gpd.read_file(sed_dir / "doseki" / "..." / "73_031drp_34_20260427.shp"
                       ).to_crs("EPSG:6671")
ava = gpd.read_file(ava_dir / "..." / "74_34_20260427.shp").to_crs("EPSG:6671")

# 3. sjoin で各バッファに hazard が交差するかを bool で取得
def has_within(buf, hz):
    j = gpd.sjoin(buf[["geometry"]].reset_index(),
                  hz[["geometry"]],
                  how="inner", predicate="intersects")
    hit = set(j["index"].tolist())
    return [i in hit for i in range(len(buf))]

gdf["near_急傾斜"] = has_within(gdf_buf, kyukei)
gdf["near_土石流"] = has_within(gdf_buf, doseki)
gdf["near_雪崩"]   = has_within(gdf_buf, ava)
gdf["hazard_count"] = (gdf["near_急傾斜"].astype(int)
                        + gdf["near_土石流"].astype(int)
                        + gdf["near_雪崩"].astype(int))

# 4. 種別 × 雪崩近接率 (H3 検証)
print(gdf.groupby("シェッド種別")["near_雪崩"].mean() * 100)
# 洞門:        25.0%   (4/16)
# 防雪覆道:     0.0%   (0/5)  <-- 名前は「防雪」 だが公式雪崩危険箇所には近接せず
# ロックシェッド: 100.0% (1/1, 注意: n=1)

# 5. hazard_count > 0 のシェッド (= 何らかの危険近接) の割合
print(f"いずれか近接: {(gdf['hazard_count']>=1).sum()} / {len(gdf)}")

図 5: なぜこの図か (RQ2)

「シェッドと急傾斜・土石流・雪崩の位置関係」 を 1 枚で読みたい。 背景に 3 種類のハザード (急傾斜=薄赤、土石流=薄橙、雪崩=薄青) を重ね、 シェッドを前景の三角マーカー、hazard_count (0-3 = 近接危険種類数) で 色分け (灰=0, 緑=1, 橙=2, 赤=3)。 これにより「どのシェッドが多重リスク区間にあるか」が一目で読める。

図 5 (RQ2): シェッド × 急傾斜+土石流+雪崩 重ね合わせマップ
図 5 (RQ2): シェッド × 急傾斜+土石流+雪崩 重ね合わせマップ

この図から読み取れること:

図 6: なぜこの図か (RQ2)

「シェッド種別ごとにどの危険箇所への近接率が異なるか」 を比較したい。 3 種別 × 3 危険の 9 組み合わせをグループ棒グラフで並べる。 これによりH3 (防雪覆道は雪崩近接偏重) の検証が直感的にできる。

図 6 (RQ2): シェッド種別 × 危険箇所近接率 (H3 検証)
図 6 (RQ2): シェッド種別 × 危険箇所近接率 (H3 検証)

この図から読み取れること (反直観的な研究発見):

表: シェッド種別 × 危険近接 クロス表

シェッド種別 件数 急傾斜n 土石流n 雪崩n 急傾斜_% 土石流_% 雪崩_%
ロックシェッド (明示的落石対策) 1 1 1 1 100.0 100.0 100.0
洞門 (一般落石覆道) 16 7 6 4 43.8 37.5 25.0
防雪覆道 (雪崩対策) 5 2 1 0 40.0 20.0 0.0

この表から読み取れること: 種別ごとに危険対応パターンが異なる。防雪覆道は雪崩近接率 0% で偏重あり。洞門 (16 件) は急傾斜近接率が最高で「古来の落石+崩落対応」の典型。全体として急傾斜近接 48% > 土石流 38% > 雪崩 24% の順位。

表: 各シェッドの危険近接プロファイル (22 件)

施設番号 施設名 シェッド種別 道路種別 路線名 市町名 延長(m) 急傾斜500m 土石流500m 雪崩500m 危険箇所数 (0-3)
17 南雨洞門 洞門 (一般落石覆道) 県道 三次高野線 三次市 79.5 3
1 七谷ロックシェッド ロックシェッド (明示的落石対策) 県道 甲田作木線 安芸高田市 72.0 3
19 第二南雨洞門 洞門 (一般落石覆道) 県道 三次高野線 三次市 54.0 3
18 君田洞門 洞門 (一般落石覆道) 県道 三次高野線 三次市 50.0 3
22 杉ノ泊防雪トンネル 防雪覆道 (雪崩対策) 県道 弁財天加計線 安芸太田町 130.0 2
12 黒滝洞門 洞門 (一般落石覆道) 国道 186号 安芸太田町 122.0 2
21 久代洞門 洞門 (一般落石覆道) 国道 182号 庄原市 69.0 2
4 栗栖洞門 洞門 (一般落石覆道) 国道 186号 廿日市市 51.0 2
20 名倉洞門 洞門 (一般落石覆道) 国道 182号 庄原市 42.0 2
11 下山防雪トンネル 防雪覆道 (雪崩対策) 国道 186号 北広島町 95.0 1
9 滝山洞門(上) 洞門 (一般落石覆道) 国道 186号 北広島町 322.0 0
16 津浪洞門 洞門 (一般落石覆道) 国道 191号 安芸太田町 245.0 0
6 本三坂トンネル 洞門 (一般落石覆道) 県道 浜田八重可部線 北広島町 183.0 0
8 王泊防雪トンネル 防雪覆道 (雪崩対策) 国道 186号 北広島町 182.0 0
7 八神洞門 洞門 (一般落石覆道) 国道 186号 北広島町 174.5 0
10 滝山洞門(下) 洞門 (一般落石覆道) 国道 186号 北広島町 156.5 0
13 後平洞門 洞門 (一般落石覆道) 国道 186号 安芸太田町 108.0 0
15 八幡防雪トンネル(下) 防雪覆道 (雪崩対策) 県道 八幡雲耕線 北広島町 73.6 0
14 八幡防雪トンネル(上) 防雪覆道 (雪崩対策) 県道 八幡雲耕線 北広島町 72.5 0
3 弥栄洞門(2-3) 洞門 (一般落石覆道) 国道 186号 大竹市 40.0 0
2 弥栄洞門(1-2) 洞門 (一般落石覆道) 国道 186号 大竹市 26.0 0
5 弥栄洞門(3-4) 洞門 (一般落石覆道) 国道 186号 大竹市 17.0 0

この表から読み取れること: 多重リスク (hazard_count ≥ 2) は 9 件、三重リスク (=3) は 4 件。特に君田洞門 (三次市, 県道, 50m, 1979 年) は 3 種すべて近接で県内最危険シェッド区間。老朽化 + 多重リスク シェッドは耐震・覆工補修の最優先対象。半数のシェッドは hazard_count=0 だが、これは警戒区域の指定論理上の特性 (受け側を指定) によるもので、シェッド自体が安全という意味ではない点に注意。

【RQ3】 道路保護三層構造 — 件数比 191:7:1 / 規模 19→107→314m

RQ3 の狙い

L66 橋梁 (4,203) + L67 トンネル (157) + L68 シェッド (22) を比較し、 道路保護三層構造を実証する。三者は同じ管理体系・同じ事務所階層を共有するが、 機能・地形・規模が階段状に分かれる。 本研究はこの違いを件数 / 規模 / 道路種別 / 地理の 4 軸で定量化する。

手法 (前置き解説)

実装コード (L66 + L67 中間 CSV 流用 + 三層比較)

L68_sheds.py 行 2021–2092

 1
 2
 3
 4
 5
 6
 7
 8
 9
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
# 1. L66 + L67 中間 CSV を読込 (既存の出力を流用)
import pandas as pd
df_bridge = pd.read_csv("lessons/assets/L66_all_bridges.csv", encoding="utf-8-sig")
df_tunnel = pd.read_csv("lessons/assets/L67_all_tunnels.csv", encoding="utf-8-sig")
print(f"橋梁: {len(df_bridge):,} 件, トンネル: {len(df_tunnel)} 件, "
      f"シェッド: {len(df)} 件")

# 2. 件数 + 平均延長 比較
n_b = len(df_bridge); n_t = len(df_tunnel); n_s = len(df)
mean_b = df_bridge["延長(m)"].mean()  # ~ 19m
mean_t = df_tunnel["延長(m)"].mean()  # ~ 360m
mean_s = df["延長(m)"].mean()         # ~ 100m
print(f"件数比: 橋:トン:シェ = {n_b//n_s} : {round(n_t/n_s)} : 1")
print(f"平均延長: {mean_b:.0f}m → {mean_s:.0f}m → {mean_t:.0f}m")
# 階段状に並ぶ: 橋 (短) < シェ (中) < トン (長)

# 3. 道路種別偏向の三層対比
for name, d in [("橋梁", df_bridge), ("トンネル", df_tunnel), ("シェッド", df)]:
    print(f"{name} 国道率: {(d['道路種別']=='国道').sum()/len(d)*100:.1f}%")

# 4. 規模分布の三層密度ヒスト
import matplotlib.pyplot as plt, numpy as np
bins = np.logspace(0, 4, 35)
for name, d, c in [("橋梁", df_bridge, "#0969da"),
                    ("トンネル", df_tunnel, "#7c3aed"),
                    ("シェッド", df, "#cf6f00")]:
    counts, _ = np.histogram(d["延長(m)"].dropna(), bins=bins)
    pct = 100 * counts / counts.sum()
    plt.bar(bins[:-1], pct, width=np.diff(bins), color=c,
            alpha=0.45, align="edge", label=name)
plt.xscale("log"); plt.xlabel("延長 (m)"); plt.ylabel("%")
plt.legend()

図 7: なぜこの図か (RQ3)

「橋梁・トンネル・シェッドの三層構造を 1 枚で読みたい」 ため、 件数比 (191 : 7 : 1) に合わせ 橋梁を背景灰小点 (n=4,203, msize=2)、 トンネルを中景紫円 (n=157, msize=22)、 シェッドを前景大三角 (n=22, msize=160) で重ねる。 z-order でレイヤー順序を厳密に制御し、シェッドが必ず最上位に見えるようにした。

図 7 (RQ3): 道路保護三層構造マップ — 橋梁 + トンネル + シェッド
図 7 (RQ3): 道路保護三層構造マップ — 橋梁 + トンネル + シェッド

この図から読み取れること:

図 8: なぜこの図か (RQ3)

「3 種類の件数 + 規模分布を 1 枚で対比したい」 ため、 左 = 件数比較 (log y 棒, 桁差を視覚化)、右 = 延長分布の密度正規化ヒスト (log x) の 2 ペイン。 3 系列を重ねることで三層の規模ニッチを直感化する。

図 8 (RQ3): 三層 規模分布対比 (件数 + 延長)
図 8 (RQ3): 三層 規模分布対比 (件数 + 延長)

この図から読み取れること:

表: 道路保護三層構造比較 (L66 / L67 / L68)

指標 L66 橋梁 (4,203) L67 トンネル (157) L68 シェッド (22) 三層構造の意味
件数 4,203 157 22 比 = 191 : 7 : 1
平均延長_m 19.3 314.5 107.5 段階差: 橋 19 < シェ 107 < トン 314
中央値_m 7.0 206.0 76.5 中央値も 3 層差あり
最長_m 540 2212 322 シェッドの最長は 322m (滝山洞門上) で長大とは別格
国道シェア_% 27.4 52.9 63.6 シェッドは国道偏重 (急峻峠の幹線保護)
地形対象 中小河川クロス 山岳貫通 山腹通過 (急傾斜・雪崩) 三層: 平野・山岳・山腹
機能 道路の連続性 (橋渡し) 山岳バイパス (貫通) 落石・雪崩・崩土からの保護 (覆い) 保護の方向性が異なる

この表から読み取れること: 件数比 191 : 7 : 1、規模は橋 19m → シェ 107m → トン 314m と階段状。国道シェアは橋 27.4% → トン 52.9% → シェ 63.6% で「規模が大きくなるほど国道偏重」のパターン。地形対象は平野 → 山岳 → 山腹と異なり、機能も橋渡し → 貫通 → 保護と分業。これらが「県の道路インフラ三層構造」を構成する。

表: シェッド延長 Top 10

順位 施設名 シェッド種別 路線名 道路種別 延長(m) 幅員(m) 建設年度 市町名
1 滝山洞門(上) 洞門 (一般落石覆道) 186号 国道 322.0 7.0 1984.0 北広島町
2 津浪洞門 洞門 (一般落石覆道) 191号 国道 245.0 10.5 2003.0 安芸太田町
3 本三坂トンネル 洞門 (一般落石覆道) 浜田八重可部線 県道 183.0 8.4 1933.0 北広島町
4 王泊防雪トンネル 防雪覆道 (雪崩対策) 186号 国道 182.0 7.0 1979.0 北広島町
5 八神洞門 洞門 (一般落石覆道) 186号 国道 174.5 7.5 1992.0 北広島町
6 滝山洞門(下) 洞門 (一般落石覆道) 186号 国道 156.5 7.0 1984.0 北広島町
7 杉ノ泊防雪トンネル 防雪覆道 (雪崩対策) 弁財天加計線 県道 130.0 7.0 - 安芸太田町
8 黒滝洞門 洞門 (一般落石覆道) 186号 国道 122.0 7.0 1990.0 安芸太田町
9 後平洞門 洞門 (一般落石覆道) 186号 国道 108.0 7.1 1990.0 安芸太田町
10 下山防雪トンネル 防雪覆道 (雪崩対策) 186号 国道 95.0 7.5 1975.0 北広島町

この表から読み取れること: 最長は 滝山洞門(上) (322m, 186号, 北広島町)。Top 10 中の国道率 = 80% = 長尺シェッドは国道偏重。これらは県の山岳幹線インフラの基幹であり、覆工補修の最優先対象。

仮説検証総合

本記事の 5 仮説と観測結果の照合:

仮説 観測値 判定 解釈
H1 シェッド 3 分類が共存 (RQ1) 洞門 16 + 防雪 5 + ロック 1 = 22 強支持 H1 強支持: 施設名から自動分類した結果、洞門 16 件 (73%, 過半数)防雪覆道 5 件 (23%)ロックシェッド 1 件 (5%)。3 分類が共存し、洞門が支配的。「シェッドの大半は古い『洞門』 呼称、近年新設は明示分類」という呼称の歴史的変遷が読み取れる。防雪覆道は雪深い北部、ロックシェッドは岩盤崩落多発地点に配置。
H2 中山間 9 市町に ≥ 80% 集中 (RQ1+2) 観測 = 81.8% (18/22) 強支持 H2 強支持: 中山間 9 市町に 81.8% 集中。残り 18.2% も大竹市山間部・廿日市市西部の山地。「シェッドは平野部にゼロ」という地形依存性は L67 トンネルの 「中山間集中」 よりさらに極端。市町別 Top: 北広島町 (8 件) / 安芸太田町 (4 件) / 三次市 (3 件)。路線では国道 186 号 (廿日市〜安芸太田〜大竹を貫く山岳幹線) が 11 件と過半数を占め、「186 号 = 県内シェッドのメイン路線」
H3 ≥ 50% が 500m 以内に危険 + 防雪は雪崩偏重 (RQ2) 観測 = いずれか 48% / 防雪 雪崩近接率 0% vs 洞門 25% 前半部分支持/後半反証 H3 前半 部分支持 (47.6% で 50% 閾値の境界): 500m バッファで急傾斜近接 10/21 (48%) + 土石流 8 (38%) + 雪崩 5 (24%)いずれか近接 = 10/21 (48%) で過半数を超える。H3 後半は反証: 防雪覆道の雪崩近接率は0% (0/5)で、洞門 (25%) より低い「防雪覆道は名前と機能の対応 ≠ 雪崩危険箇所への偏在」という反直観的発見。理由は: ① 防雪覆道は雪崩発生地点ではなく雪庇・吹雪・路面凍結の影響を主目的とする, ② 公式雪崩危険箇所 (2,169 点) は 過去の発生履歴ベースで、防雪覆道整備の指定とは独立, ③ 防雪覆道は豪雪地帯の路線全体を保護する設計思想で、ピンポイント警戒区域近接が必須でない。これは「インフラ命名と災害区域指定論理のズレ」を浮かび上がらせる重要な研究発見。
H4 件数比 ≒ 橋:トン:シェ = 191:7:1 (RQ3) 観測 = 4,203 : 157 : 22 = 191 : 7.1 : 1 強支持 H4 強支持: 橋梁 4,203 : トンネル 157 : シェッド 22、件数比 191 : 7.1 : 1。橋梁は分散型多数 (中小河川クロス)、トンネルは希少大規模 (山岳貫通)、シェッドは超希少特殊解 (山腹通過)という件数の指数的階層が定量化された。
H5 規模に段階差: 橋 < シェ < トン (RQ3) 観測 平均 = 19m → 107m → 314m / 中央値 = 7m → 77m → 206m 強支持 H5 強支持: 平均延長は 橋梁 19m → シェッド 107m → トンネル 314m ときれいな段階差。中央値も 7 → 77 → 206m「シェッドはトンネルとボックスカルバートの中間規模」という設計の論理が現れている。規模順は橋 (短) < シェ (中) < トン (長) で、地形対象は平野 < 山腹 < 山岳。規模と地形の連動が見える。

3 RQ × 3 結論

道路保護三層構造から見る県土像

本研究の最重要発見は「橋梁・トンネル・シェッドの完全三層構造」。三者は同じ DoBoX シリーズ (基本情報・維持管理情報) ・同じ管理体系・同じ事務所階層で扱われるが、対象地形が完全に異なる: 橋梁は4,203 件の点的多数で県全土の中小河川クロスを覆い、トンネルは157 件の集中型大規模で中山間 9 市町の山岳道路網を支え、シェッドは22 件の希少特殊解で急峻峠の道路保護をピンポイントで担う。件数比 191:7:1, 規模差 19m / 107m / 314m の桁違いの偏向は、地形が道路インフラの形態を決定する地理学的根拠を提示する。

政策的含意 — 整備・維持・防災の三層別戦略

橋梁・トンネル・シェッドは「同じ機能 (道路の連続性確保)、異なる地形、異なる規模」のため、政策戦略も三分割が必要:

発展課題

結果 X → 新仮説 Y → 課題 Z (3 RQ × 1 課題以上)

発展課題 1 (RQ1 由来): NEXCO + 国管理シェッドとの統合

発展課題 2 (RQ2 由来): L56 急傾斜防止施設とのシェッド-斜面対策の協調分析

発展課題 3 (RQ3 拡張): 路線単位の橋-トン-シェ 連続性パターン

発展課題 4 (RQ2 + L40 連携): 標高 × シェッド位置の統合分析

発展課題 5 (RQ3 拡張): 判定区分 ("?") の解明

発展課題 6 (展望): シェッド防災重要度ランキングの構築

発展課題 7 (RQ2 拡張): 過去崩落履歴とのシェッド配置関係