Lesson 66

橋梁基本情報 単独 3 研究例分析 — 4,203 橋から県の老朽化問題を読む

L66橋梁道路橋国道県道RQ×3Format BgeopandasPOINT (CSV)choropleth老朽化長大橋防災重要橋梁L07連携 (浸水)
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 11 (CSV, ~784 KB)

学習目標と問い

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

L07 (河川浸水 × 4 種インフラ) との位置付け: L07 は橋梁を浸水ハザードと交差させる視点で 4 種類のインフラ (橋梁・トンネル・ダム・ため池) を 並列に扱った記事。本記事 L66 は橋梁単独の構造分析 (= 種別・規模・年代・防災重要度) に集中する。 両者は同じ bridge_basic.csv を共有するが、 研究の問いは(L07) 「浸水との二重リスク」 vs (L66) 「橋梁台帳の内部構造」と 直交する。本記事では浸水重なりは扱わない。

橋梁データの本質: 県内の道路橋は道路法 (1952) と インフラ長寿命化基本計画 (2014) の管理対象。 2014 年改正で5 年に 1 回の点検が義務化され、 全橋梁に I (健全) 〜 IV (緊急措置) の健全度区分が付与される。 ただし本データの「判定区分」 列は全件 "?" で公開データでは伏せられている。 そのため本研究では「点検年度から経過年」 + 「架設年度から経過年」 を 健全度の代理指標として扱い、年代と老朽化を分析する。

独自用語の定義

研究の問い (3 RQ)

仮説 H1〜H5

  1. H1 (県道支配, RQ1): 県管理橋の ≥ 72% が県道。 広域幹線である国道は橋数が少なく規模大、 地域幹線の県道は橋数が多く規模小という道路階層別 件数 vs 規模トレードオフ
  2. H2 (短橋集中, RQ1): 全体の ≥ 40% が延長 5 m 未満。 県内地形の中小河川 + 谷筋分断特性を反映。
  3. H3 (1990 年代ピーク, RQ2): 架設年度ヒストグラムは1990 年代にピーク。 バブル経済期 (1986-91) の道路投資が橋梁整備のピークを生んだ。
  4. H4 (老朽橋 1,500 件超, RQ2): 築 50 年超の橋が ≥ 1,500 件。 国の「インフラ長寿命化基本計画」 が想定する更新ピーク到来の実態。
  5. H5 (国道の長大橋偏重, RQ3): 国道平均延長 / 県道平均延長 ≥ 1.5。 国道は広域幹線で大河川を渡るため長大橋が多いという階層差。

到達点

本記事を読み終えた学習者は次の 3 点を体感できる:

  1. 1 つの中規模 CSV (4,203 件 × 16 列, 全件 POINT) から、 道路種別 / 市町 / 事務所 / 路線 / 延長 / 幅員 / 架設年度 / 点検年度 を 多角度で集計するハンズオン分析を完走する。
  2. 「年代 + 老朽化 + 道路階層」の 3 軸で県内の橋梁網を読み解き、 高度成長期の集中整備 → 更新ピーク到来という日本のインフラ史を 地域データで定量化する。
  3. RQ1 (構造) → RQ2 (年代・老朽化) → RQ3 (国道 vs 県道 + 防災重要橋梁) の 3 段階で、「県の橋梁網の物理的形状 + 政策的優先順位」を 定量的に描く研究プロセスを体感する。

使用データ

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

項目
dataset_id 11
公式名 橋梁基本情報・維持管理情報
resource_id 6
ファイル bridge_basic.csv (道路_橋梁_2023)
形式 CSV (UTF-8 BOM)
ファイルサイズ 802,338 byte (~784 KB)
レコード数 4,203 行 (= 道路橋件数)
列数 19 列
種別 全件 道路橋 (鉄道橋は別データ)
道路種別 国道 1,151 + 県道 3,052
管理事務所 9 事務所 (建設事務所 + 支所)
路線数 296 異なり値
市町数 22 市町
緯度経度 全件 取得可 (100%)
架設年度 3,639 件 (86.6%) 取得可、範囲 1910-2022
点検年度 全件 取得可、範囲 2012-2023
判定区分 全件 "?" (= 公開データでは伏せられる)
延長 (m) 中央値 7.0m / 最大 540m / 最小 1.2m
幅員 (m) 中央値 9.4m / 最大 304m
座標系 (元) EPSG:4326 (WGS84) → EPSG:6671 で処理
最終更新 2023 (公表年度)
ライセンス クリエイティブ・コモンズ表示 (CC-BY)
作成主体 広島県土木建築局道路整備課
URL https://hiroshima-dobox.jp/datasets/11
DL URL https://hiroshima-dobox.jp/resource_download/6

この表から読み取れること: dataset 11 は 4,203 行 × 19 列の CSV。 道路種別 (国道/県道)・管理事務所・路線・架設年度・点検年度・延長・幅員という 多次元のメタデータを持つ。 緯度経度は全件 (100%) 取得可で、地理処理が容易。 ただし「判定区分」 列は全件マスクされており、 健全度判定値は本データから直接は取れない。

L07 (河川浸水 × 4 種インフラ) との重複回避

項目L07 (既扱)L66 (本記事)
研究の問い橋 × 浸水ハザードの二重リスク橋梁台帳の内部構造 (規模・年代・階層)
主役データ橋梁 + トンネル + ダム + ため池 (4 種類並列)橋梁単独
分析手法sjoin で浸水ポリゴンと交差判定多軸集計 + 年代分析 + 階層比較
主結論橋の浸水率最高 (河川を渡るため)1990 年代ピーク + 老朽橋 1,382 件
使用列緯度経度 + 架設年度 (二重リスク用)16 列全部 + 派生列 (延長カテゴリ・年代・老朽フラグ・長大フラグ)

この表から読み取れること: 同じ bridge_basic.csv を共有するが、 研究の問いが直交。L07 は「橋がどれだけ浸水するか」 という外部ハザード視点、 L66 は「橋自体の構造」 という内部メタデータ視点。両記事は補完関係。

データ取得手順

ステップ 操作 値 / URL
ステップ 1 DoBoX dataset 11 ページ https://hiroshima-dobox.jp/datasets/11
ステップ 2 CSV DL (resource 6) https://hiroshima-dobox.jp/resource_download/6
ステップ 3 保存先 data/extras/L66_bridges/bridge_basic.csv (or shared data/extras/bridge_basic.csv)
ステップ 4 POINT 構築 (緯度経度から) 全 4,203 橋 → POINT 4,203 件 (100%)
ステップ 5 EPSG:6671 投影 + 市町 sjoin sjoin で 3,716 件を市町分配
ステップ 6 RQ1 集計 (構造) 道路種別 + 市町 + 事務所 + 路線 + 延長 + 幅員 で多角度集計
ステップ 7 RQ2 集計 (年代・老朽化) 年代別ヒストグラム + 老朽橋抽出 (≤1974) → 1,382 件
ステップ 8 RQ3 集計 (国道 vs 県道 + 長大橋) 道路種別比較 + 長大橋 (≥100m) 135 件抽出
ステップ 9 8 図 + 13 表 出力 本スクリプト全体で ~25 秒

この表から読み取れること: DoBoX dataset 11 → resource 6 → CSV DL → POINT 構築 → 市町 sjoin → RQ1/2/3 集計、の 9 ステップで再現可能。 全工程は本スクリプト 1 本で自動実行 (~25 秒)。 共有 CSV (data/extras/bridge_basic.csv, L07 で取得済み) があれば再 DL 不要。

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

ダウンロード

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

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

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

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

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

cd "2026 DoBoX 教材"
iwr "https://hiroshima-dobox.jp/resource_download/6" -OutFile "data/extras/L66_bridges/bridge_basic.csv"
py -X utf8 lessons/L66_bridges.py

本スクリプトは data/extras/bridge_basic.csv (L07 共有 CSV) があれば それを優先使用、無ければ ensure_dataset() ヘルパで自動取得。 全工程は約 25 秒で完走 (1 分以内完走の要件 S を満たす)。

一括取得 (全レッスン共通, 推奨)

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

【RQ1】 橋梁の構造 — 県道 73% / 極短橋 39% / Top 3 で 36%

RQ1 の狙い

4,203 橋の道路橋を道路種別 / 市町 / 事務所 / 路線 / 延長 / 幅員の 6 軸で 多角度に集計し、広島県の橋梁網の物理的形状を立体化する。 特に「橋梁」 という道路と地形のクロスポイントに置かれた施設の規模・分布を 初めて定量化する。

手法 (前置き解説)

入出力の Before/After 例

段階1 橋の中身件数
(0) CSV 1 行橋梁番号=70100212, 施設名=山波跨線橋, 道路種別=国道, 路線名=2号, 延長=20.5, 幅員=12.0, 架設年度=1985, 緯度=34.41831, 経度=133.23024, 住所(市町)=尾道市4,203
(1) 緯度経度 → POINT+ geometry = Point (133.23024, 34.41831, EPSG:4326)4,203
(2) EPSG:6671 投影+ geometry = Point (X, Y, m 単位)4,203
(3) 市町 sjoin+ CITY_CD = 205 (= 尾道市)3,716
(4) 派生フラグ+ 延長カテゴリ=「中(15-30m)」, 年代=1980, is_old=False, is_long=False4,203
(5) 集計 (例: 市町別)庄原市: 600 橋 (1 位)(別)

(0)-(5) を全 4,203 橋に適用 → 6 軸で集計 → 図化。 全工程はメモリ常駐で完結し、別キャッシュは不要。

実装コード (CSV → POINT → sjoin → 多軸集計)

L66_bridges.py 行 1209–1308

 1
 2
 3
 4
 5
 6
 7
 8
 9
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
# 1. CSV 読込 + 数値列クリーニング
import pandas as pd, geopandas as gpd, numpy as np
from shapely.geometry import Point

df = pd.read_csv("data/extras/bridge_basic.csv", encoding="utf-8-sig")
print(df.shape, df["道路種別"].value_counts())  # 4203 行, 国道 1151 / 県道 3052

# 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")

# 3. POINT 構築 (緯度経度から直接)
df["geometry"] = df.apply(
    lambda r: Point(float(r["経度(10進数)"]), float(r["緯度(10進数)"]))
    if pd.notna(r["緯度(10進数)"]) and pd.notna(r["経度(10進数)"]) else None,
    axis=1,
)
gdf = gpd.GeoDataFrame(df.dropna(subset=["geometry"]),
                         geometry="geometry", crs="EPSG:4326").to_crs("EPSG:6671")

# 4. 市町 sjoin (admin_diss.gpkg = L44 既キャッシュ流用)
admin = gpd.read_file("data/extras/L44_storm_surge/_cache/admin_diss.gpkg")\
          .to_crs("EPSG:6671")
joined = gpd.sjoin(gdf[["geometry"]], admin[["CITY_CD", "geometry"]],
                   how="left", predicate="within")
joined = joined[~joined.index.duplicated(keep="first")]
gdf["CITY_CD"] = joined["CITY_CD"].fillna(-1).astype(int)

# 5. 6 軸集計
road_count = df["道路種別"].value_counts()    # 県道 3052 / 国道 1151
city_count = df["住所(市町)"].value_counts()    # 庄原市 600 / 福山市 520 / ...
office_count = df["管理事務所名"].value_counts()  # 東部建設事務所 777 / ...
route_count = df["路線名"].value_counts()       # 2号 / 184号 / ...

# 延長カテゴリ
LENGTH_BINS = [0, 5, 15, 30, 100, 1000]
LENGTH_LABELS = ["極短(<5m)", "短(5-15m)", "中(15-30m)", "長(30-100m)", "長大(≥100m)"]
df["延長カテゴリ"] = pd.cut(df["延長(m)"], bins=LENGTH_BINS,
                            labels=LENGTH_LABELS, right=False, include_lowest=True)
print(df["延長カテゴリ"].value_counts())

# 6. H1 検証: 県道シェア
print(f"県道シェア: {df['道路種別'].value_counts()['県道']/len(df)*100:.1f}%")
# H2 検証: 極短橋シェア
print(f"延長 <5m シェア: {(df['延長(m)']<5).sum()/len(df)*100:.1f}%")

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

「広島県のどの地域にどんな道路種別の橋があるか」 を 1 枚で読みたい。 全 4,203 橋を国道 (赤) + 県道 (青) で色分けし全域に描く。これにより 県の橋梁網の物理的形状が一目で読める。 点の大きさを小さく (msize=5) 設定し、密集エリアの構造を読みやすくする。

図 1 (RQ1): 広島県 道路橋 全域マップ (国道 vs 県道)
図 1 (RQ1): 広島県 道路橋 全域マップ (国道 vs 県道)

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

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

「22 市町と 9 管理事務所のうち、どこに橋梁が集中しているか」 を 左右ペアで比較したい。横棒 (件数 + 値ラベル) で並べる。 これにより市町別偏在 (上位市町集中)事務所別分担が一目で読める。

図 2 (RQ1): 市町別 + 管理事務所別 橋梁件数
図 2 (RQ1): 市町別 + 管理事務所別 橋梁件数

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

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

「市町別の橋梁件数を地図で読みたい」 ため、choropleth (主題図) を採用。 OrRd colormap (薄黄 → 濃赤) で件数を符号化。空間結合ベース (= sjoin で各橋を市町に分配) の件数で塗り分けるため、CSV 住所列とわずかにずれる場合がある (境界線上の橋等)。

図 3 (RQ1): 市町別 橋梁件数 choropleth
図 3 (RQ1): 市町別 橋梁件数 choropleth

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

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

「橋の規模分布を 1 枚で読みたい」 ため、延長 (log 軸) と幅員 (linear) の 2 ペインヒストグラム。延長は桁差が大きい (1m 〜 540m) ので log 軸、 幅員は近距離値域 (0 〜 30m が大半) なので linear 軸。 これにより「短橋集中 + 長大橋希少」「車道幅員の標準化」を同時に読める。

図 4 (RQ1): 延長 + 幅員 ヒストグラム
図 4 (RQ1): 延長 + 幅員 ヒストグラム

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

表: RQ1 全体サマリ (3 RQ 統合)

指標
総件数 (RQ1) 4,203 橋
国道橋 1,151 (27.4%)
県道橋 3,052 (72.6%)
管理事務所数 9
路線数 296
市町数 (CSV値) 22
Top 1 市町 庄原市 (600 橋)
Top 3 市町シェア (RQ1) 35.9%
極短橋 (<5m) シェア (RQ1) 39.0% (1,638 橋)
長大橋 (≥100m) (RQ1+RQ3) 135 橋 (3.21%)
延長 中央値 / 最大 (RQ1) 7.0 m / 540 m
幅員 中央値 / 最大 (RQ1) 9.4 m / 304 m
最多年代 (RQ2) 1990s (785 橋)

この表から読み取れること: 県内道路橋は 4,203 件 / 22 市町 / 9 事務所 / 296 路線 / 国道 + 県道 2 種別 / 5 規模カテゴリ の多次元管理対象。県道が件数支配 (72.6%)、規模は圧倒的に短橋寄り (中央値 7m)。

表: 道路種別 サマリ

道路種別 件数 シェア_% 平均延長_m 平均幅員_m
国道 1151 27.4 26.2 12.73
県道 3052 72.6 16.7 10.38
合計 4203 100.0 19.3 11.02

この表から読み取れること: 県道 72.6% (n=3,052) + 国道 27.4% (n=1,151)。国道は件数で 1/3 以下だが、平均延長 26.2m と県道 16.7m の 1.57 倍。「件数 vs 規模のトレードオフ」 が明確。

表: 延長カテゴリ別 サマリ

延長カテゴリ 件数 シェア_%
極短(<5m) 1638 39.0
短(5-15m) 1290 30.7
中(15-30m) 617 14.7
長(30-100m) 523 12.4
長大(≥100m) 135 3.2

この表から読み取れること: 極短橋 (39.0%) + 短橋 (5-15m: 30.7%) = 全体の 70% を占める。中山間 + 平野部の中小河川クロスポイントの集積。長大橋 (≥100m) は希少 (3.21%)。

表: 市町別 ランキング (Top 15)

順位 市町名 件数
1 庄原市 600
2 福山市 520
3 東広島市 389
4 呉市 320
5 三原市 285
6 三次市 276
7 北広島町 272
8 廿日市市 236
9 安芸太田町 220
10 尾道市 212
11 安芸高田市 198
12 神石高原町 158
13 世羅町 136
14 江田島市 113
15 府中市 99

この表から読み取れること: 件数最多は 庄原市 (600 橋)、Top 5 で 50% を占める。沿岸 + 中山間 + 平野部 + 学園都市と多様な地形類型が上位に並ぶ。

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

順位 管理事務所名 件数 シェア_%
1 東部建設事務所 777 18.5
2 三原支所 634 15.1
3 庄原支所 600 14.3
4 安芸太田支所 492 11.7
5 東広島支所 463 11.0
6 西部建設事務所 359 8.5
7 呉支所 320 7.6
8 廿日市支所 284 6.8
9 北部建設事務所 274 6.5

この表から読み取れること: 東部建設事務所 (777 橋, 18.5%) が 単独 1 位。建設事務所と支所の階層構造で 9 事務所が県全域を分担。おおよそ均等 (各 200-800 橋) なのは行政分担の合理性を反映。

表: 路線別 ランキング (Top 12)

順位 路線名 件数
1 186号 144
2 375号 131
3 432号 129
4 183号 116
5 487号 100
6 486号 96
7 433号 68
8 三原東城線 66
9 府中世羅三和線 63
10 新市七曲西城線 58
11 184号 55
12 瀬野川福富本郷線 52

この表から読み取れること: 路線別 1 位は 186号 (144 橋)、これは県内を縦貫する基幹路線。全 296 路線のうち上位 12 路線で 26% を占める。残り 284 路線は数橋〜10数橋の中小路線で、地域路としての分散性が高い。

【RQ2】 整備年代と老朽化 — 最多 1990s / 老朽橋 1,382件

RQ2 の狙い

RQ1 で抽出した 4,203 橋について、架設年度 (3,639 件 = 86.6% 取得可) を分析し、 整備年代と老朽化リスクを読み解く。 特に築 50 年超の橋を地理的に同定し、 高度成長期の集中整備が将来の更新ピークをもたらす実態を県内データで実証する。

手法 (前置き解説)

入出力の Before/After 例

段階1 橋の中身件数
(0) 橋 1 件橋梁番号=70100212, 架設年度=19853,639
(1) 年代化+ 年代 = 19803,639
(2) 老朽判定 (≤1974)+ is_old = False (1985 > 1974)3,639
(3) 市町集計(尾道市の老朽橋数 / 尾道市の全橋数)市町数 23
(4) 道路種別 × 老朽率国道 32.4% vs 県道 33.1%2

(0)-(4) を全 3,639 件 (年度既知) に適用。年度不明の 564 件は別カテゴリ扱い。

実装コード (年代化 + 老朽橋抽出 + 市町別集計)

 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
# 1. 年代化 + 老朽橋フラグ (≤ 1974 = 築 50 年超)
import numpy as np, pandas as pd

df["架設年度"] = pd.to_numeric(df["架設年度"], errors="coerce")
df.loc[df["架設年度"] <= 1800, "架設年度"] = np.nan  # 0 / 異常値除去
df["年代"] = (df["架設年度"] // 10 * 10).astype("Int64")

AGE_THRESHOLD_YEAR = 1974
df["is_old"] = df["架設年度"] <= AGE_THRESHOLD_YEAR  # bool, NaN は False
print(f"老朽橋: {df['is_old'].sum()} / {len(df)} ({df['is_old'].mean()*100:.1f}%)")

# 2. 年代別ヒストグラム
decade_count = df["年代"].value_counts().sort_index()
print(decade_count)
# 1910:4 1920:37 1930:95 1940:47 1950:239 1960:678 1970:560
# 1980:642 1990:785 2000:447 2010:102 2020:3

# 3. 市町別 老朽率
city_total = df.groupby("住所(市町)").size().rename("件数")
city_old   = df[df["is_old"]].groupby("住所(市町)").size().rename("老朽橋数")
city_rate  = (city_old / city_total * 100).rename("老朽率_%")
print(pd.concat([city_total, city_old, city_rate], axis=1)\
        .sort_values("老朽率_%", ascending=False).head(10))

# 4. 道路種別 × 老朽率
old_by_road = df.groupby("道路種別").agg(
    件数=("橋梁番号", "size"),
    老朽橋数=("is_old", "sum"),
)
old_by_road["老朽率_%"] = old_by_road["老朽橋数"] / old_by_road["件数"] * 100
print(old_by_road)

# 5. 点検年度別件数 (5 年周期点検義務化 2014 改正の効果検証)
inspect_count = df["点検年度"].value_counts().sort_index()
print(inspect_count)

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

「広島県の道路橋がどの年代に集中整備されたか」 を 1 枚で読みたい。 10 年区切りの年代別件数を棒グラフで描き、老朽閾値 (1970 年代以前) を赤色、 1980 年以降を青色で塗り分け。これにより「年代別の整備量 + 老朽橋の量」を同時に読める。

図 5 (RQ2): 年代別 橋梁件数 — 老朽 (1970s 以前) 1,382 件
図 5 (RQ2): 年代別 橋梁件数 — 老朽 (1970s 以前) 1,382 件

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

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

「築 50 年超の老朽橋がどこに集中しているか」 を地図で読みたい。 全橋を背景に薄灰 (新しい橋) + 黄 (年度不明) + 赤大 (老朽橋) で重ねる。 これにより「老朽橋の地理的集中エリア」が一目で読める。 点サイズを差別化することで老朽橋を視覚的に強調する。

図 6 (RQ2): 築 50 年超 老朽橋 地理分布 (32.9%)
図 6 (RQ2): 築 50 年超 老朽橋 地理分布 (32.9%)

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

表: 年代別 件数

年代 件数 シェア_%
1910s 4 0.1
1920s 37 1.0
1930s 95 2.6
1940s 47 1.3
1950s 239 6.6
1960s 678 18.6
1970s 560 15.4
1980s 642 17.6
1990s 785 21.6
2000s 447 12.3
2010s 102 2.8
2020s 3 0.1

この表から読み取れること: 1960s-1990s の 4 年代で全体の 73% を占める集中整備期。最多年代は 1990s (785 橋)。2010s 以降は新規整備が激減 = 維持管理時代への転換。

表: 市町別 老朽橋ランキング (Top 15)

順位 市町名 老朽橋数 件数 老朽率_%
1 庄原市 239 600 39.8
2 福山市 158 520 30.4
3 廿日市市 126 236 53.4
4 東広島市 107 389 27.5
5 呉市 105 320 32.8
6 北広島町 95 272 34.9
7 安芸太田町 71 220 32.3
8 神石高原町 69 158 43.7
9 三原市 66 285 23.2
10 三次市 65 276 23.6
11 安芸高田市 63 198 31.8
12 江田島市 55 113 48.7
13 尾道市 42 212 19.8
14 府中市 41 99 41.4
15 世羅町 23 136 16.9

この表から読み取れること: 老朽橋数最多市町は 庄原市 (239 件, 老朽率 39.8%)、老朽率最高は要検討 (件数小さい市町は率が極端化しやすい)。上位市町は今後 10-20 年で更新ピークが集中する。

表: 道路種別 × 老朽率

道路種別 件数 老朽橋数 老朽率_%
国道 1151 373 32.4
県道 3052 1009 33.1

この表から読み取れること: 国道老朽率 32.4% vs 県道老朽率 33.1%。県道のほうが老朽率が高い場合 = 県道は地域路で更新が後回しになりがちなため。更新政策の優先順位を考える上で重要な指標。

表: 点検年度別 件数 (2014 年改正 5 年周期義務化の効果)

点検年度 件数 シェア_%
2012 2 0.0
2013 2 0.0
2014 53 1.3
2015 52 1.2
2016 54 1.3
2017 8 0.2
2018 653 15.5
2019 887 21.1
2020 852 20.3
2021 920 21.9
2022 718 17.1
2023 2 0.0

この表から読み取れること: 2014 年道路法改正の5 年周期点検義務化を反映し、点検年度は 2014-2023 の 10 年に分散。最多 = 2021 (920 橋)。5 年周期で 1 サイクル完了する設計だが、実際には毎年点検されている橋もある = 老朽度や立地リスクで点検頻度が調整されている可能性。

【RQ3】 国道 vs 県道 + 防災重要橋梁 — 国道平均 26m / 長大橋 135件

RQ3 の狙い

国道 1,151 橋 と 県道 3,052 橋を比較し、 道路階層差 (広域幹線 vs 地域路) が橋梁構造にどう現れるかを抽出する。 さらに長大橋 (≥100m, n=135) の地理分布を 「災害時の代替性が低い基幹橋」 = 防災重要橋梁の代理指標として可視化。 公式の「緊急輸送道路」 指定データは公開されないため、本研究では 「国道 + 長大橋」 を防災重要橋梁の代理として扱う。

手法 (前置き解説)

実装コード (国道 vs 県道 + 長大橋)

L66_bridges.py 行 1597–1654

 1
 2
 3
 4
 5
 6
 7
 8
 9
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
# 1. 道路種別 × 規模 比較
import pandas as pd, numpy as np
LENGTH_BINS = [0, 5, 15, 30, 100, 1000]
LENGTH_LABELS = ["極短(<5m)", "短(5-15m)", "中(15-30m)", "長(30-100m)", "長大(≥100m)"]

mean_kuni_len = df[df["道路種別"]=="国道"]["延長(m)"].mean()  # 約 21m
mean_ken_len  = df[df["道路種別"]=="県道"]["延長(m)"].mean()  # 約 14m
print(f"国道 / 県道 延長比 = {mean_kuni_len/mean_ken_len:.2f}")  # 約 1.5 倍

# 2. 長大橋 (≥100m) 抽出
LONG = 100.0
df["is_long"] = df["延長(m)"] >= LONG
long_kuni = df[df["is_long"] & (df["道路種別"]=="国道")]
long_ken  = df[df["is_long"] & (df["道路種別"]=="県道")]
print(f"長大橋: 国道 {len(long_kuni)} / 県道 {len(long_ken)} / 計 {df['is_long'].sum()}")

# 3. 道路種別 × 規模 クロス表
df["延長カテゴリ"] = pd.cut(df["延長(m)"], bins=LENGTH_BINS,
                            labels=LENGTH_LABELS, right=False, include_lowest=True)
cross = df.groupby(["道路種別", "延長カテゴリ"], observed=True).size().unstack(fill_value=0)
print(cross)

# 4. 長大橋 Top 20 (詳細リスト)
long_top = df[df["is_long"]].sort_values("延長(m)", ascending=False).head(20)
print(long_top[["施設名", "路線名", "道路種別", "延長(m)",
                "幅員(m)", "架設年度", "住所(市町)"]])

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

「国道と県道の構造差を一目で読みたい」 ため、3 ペイン横並び比較図。 左 = 件数, 中 = 平均延長, 右 = 長大橋率。3 つの指標が連動して 「県道は数が多く規模が小さい」「国道は数が少なく規模が大きい」という 道路階層差を視覚化する。

図 7 (RQ3): 国道 vs 県道 — 件数 + 平均延長 + 長大橋率
図 7 (RQ3): 国道 vs 県道 — 件数 + 平均延長 + 長大橋率

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

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

「防災重要橋梁の地理分布を 1 枚で読みたい」 ため、 県道 (灰) + 国道 (赤) + 長大橋 (★ 黄) の 3 層重ね合わせマップ。 これにより「広域幹線の動脈 + 代替性低い橋」の物理的形状が一目で読める。 災害時に守るべき橋の地理的優先順位を視覚化する。

図 8 (RQ3): 防災重要橋梁マップ (国道 + 長大橋)
図 8 (RQ3): 防災重要橋梁マップ (国道 + 長大橋)

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

表: 国道 vs 県道 詳細比較

道路種別 件数 シェア_% 平均延長_m 平均幅員_m 長大橋数 長大橋率_% 老朽橋数 老朽率_%
国道 1151 27.4 26.2 12.73 62 5.39 373 32.4
県道 3052 72.6 16.7 10.38 73 2.39 1009 33.1

この表から読み取れること: 国道は件数で 1/3 以下、規模で 1.5 倍、長大橋率で 2.3 倍。老朽率は国道 32.4% vs 県道 33.1%。「件数の県道、規模の国道」という階層差が全指標で一貫。

表: 道路種別 × 延長カテゴリ クロス表

道路種別 極短(<5m) 短(5-15m) 中(15-30m) 長(30-100m) 長大(≥100m)
国道 377 341 166 205 62
県道 1261 949 451 318 73

この表から読み取れること: 国道は長大橋 (≥100m) 62 橋 (5.39%)、県道は極短橋 (<5m) 1,261 橋 (41.3%)。延長カテゴリ × 道路種別の組み合わせで、規模分布の道路階層差が明確に現れる。

表: 長大橋 (≥100m) Top 20

順位 施設名 路線名 道路種別 延長(m) 幅員(m) 架設年度 住所(市町)
1 豊島大橋 豊浜蒲刈線 県道 540.00 13.00 2008 呉市
2 広島空港大橋 本郷大和線 県道 500.00 9.80 2010 三原市
3 倉田川1号橋 487号 国道 499.90 2.40 1965 江田島市
4 芦田川大橋 水呑手城線 県道 491.00 25.80 2004 福山市
5 早瀬大橋中央径間 487号 国道 444.00 10.10 1973 呉市
6 弥栄大橋 大竹美和線 県道 422.00 11.20 1986 大竹市
7 尾道大橋 317号 国道 386.45 10.40 1968 尾道市
8 音戸大橋音戸ループ橋 487号 国道 380.00 9.00 1961 呉市
9 瀧山峡大橋 186号 国道 369.00 10.00 1997 安芸太田町
10 水呑大橋 福山鞆線 県道 358.20 20.90 1981 福山市
11 新入江大橋 水呑手城線 県道 358.00 11.25 2012 福山市
12 入江大橋 水呑手城線 県道 341.50 16.70 1972 福山市
13 加計大橋 191号 国道 338.70 11.50 1979 安芸太田町
14 西明神橋 矢野海田線 県道 335.00 14.00 1993 海田町
15 第二音戸大橋(中央径間) 487号 国道 292.00 26.20 2013 呉市
16 坪井大橋 487号 国道 285.00 11.20 2010 呉市
17 三原大橋(鋼I桁) 185号 国道 281.90 20.60 1974 三原市
18 不明065-05 大崎上島循環線 県道 280.00 3.00 1970 大崎上島町
19 新西条陸橋(上り) 375号 国道 270.00 10.50 2012 東広島市
20 東城第一大橋 314号 国道 255.00 10.50 1993 庄原市

この表から読み取れること: 最長橋は 豊島大橋 (540m, 豊浜蒲刈線, 呉市)。Top 20 中の国道率 = 55% = 長大橋は確かに国道偏重。これらは県の防災重要橋梁の代理リスト

仮説検証総合

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

仮説 観測値 判定 解釈
H1 県道シェア ≥ 72% (RQ1) 観測 = 72.6% (県道 3,052 / 国道 1,151) 強支持 H1 強支持: 県道が 72.6% を占める。国道は広域幹線で橋が少ない (1,151 橋)、県道は地域路で橋が多い (3,052 橋)。「件数 vs 規模のトレードオフ」: 件数で支配する県道が平均延長 16.7m と短く、国道は平均延長 26.2m と長い。これは道路階層の「広域 vs 地域」の物理的差を反映。
H2 延長 <5m が ≥ 40% (RQ1) 観測 = 39.0% (1,638 / 4,203) 反証 H2 反証: 極短橋 (延長 < 5m) が 39.0%。これは県内地形が多数の中小河川 + 谷筋を含むことを反映。対比すると長大橋 (≥100m) は 135 橋 (3.21%)のみ。中央値 7.0m から見て、「県内の橋は地形分断の小規模クロスポイントに集中」する構造。
H3 1990 年代ピーク (RQ2) 観測 最多年代 = 1990s (785 橋) 強支持 H3 強支持: 架設年代の最多は 1990s。バブル経済期 (1986-91) を含む 1990 年代の道路投資ブームが橋梁整備のピークを生んだ。 1960s-1990s の 4 年代で全体の 73% を占める集中整備期 = 高度成長 + バブルの社会基盤拡充期と一致。
H4 老朽橋 (≤1974) ≥ 1,500 件 (RQ2) 観測 = 1,382 件 (全体の 32.9%) 反証 H4 反証: 築 50 年超 (= 1974 年以前架設) の橋が1,382 件 = 全体の 32.9%。国の「インフラ長寿命化基本計画」 (2014) が想定する更新ピークの到来を県内データで実証。市町別老朽率トップは 庄原市 (39.8%)。これらの市町では橋梁更新コストが今後 10-20 年で集中発生する。
H5 国道平均延長 ≥ 県道の 1.5 倍 (RQ3) 観測 = 国道 26.2m / 県道 16.7m / 比 1.57 強支持 H5 強支持: 国道の平均延長は県道の 1.57 倍長大橋率は国道 5.39% vs 県道 2.39%= 国道の方が約 2.3 倍。これは「国道は大河川を渡る広域幹線」「県道は地域の中小河川を渡る分散幹線」という道路階層の物理的差。防災時には国道の長大橋 = 「代替性が低い基幹橋」が機能維持の最重要対象。

3 RQ × 3 結論

橋梁データから読める日本のインフラ史

本研究の最重要発見は「3 つの時代の波」。第 1 の波 = 1960-70 年代の高度成長期一斉整備 (1960s 678 + 1970s 560 = 1,238 橋)、第 2 の波 = 1980-90 年代のバブル経済期再投資 (1980s 642 + 1990s 785 = 1,427 橋)、第 3 の波 = 2010 年代の維持管理時代への転換 (2010s 102 橋, 新規激減 + 点検義務化)。本データはこの 3 つの波を県内 4,203 橋で実証する。

第 1 の波の橋が今築 50 年超に達し、第 4 の波 = 更新ピークが始まる。県内 1,382 橋 (32.9%) が更新候補で、これは過去 10 年の新規整備(102 橋) の 14 倍。既存ストックの維持が新規投資を遥かに上回る時代に入った。これは日本全国に共通する課題で、本研究は広島県という 1 県を通じてその縮図を可視化した。

道路階層差と防災重要度

国道 vs 県道の階層差は「件数 vs 規模のトレードオフ」として一貫した構造を示す。国道は件数で 1/3 以下だが、平均延長 1.57 倍 + 長大橋率 2.3 倍。これは「広域幹線は数本で大規模、地域路は多数で小規模」という道路網の階層原則を反映。防災投資の優先順位もこの階層に従う = 国道の長大橋 (62 橋) が第一級防災重要橋梁として優先補強対象になる。

発展課題

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

発展課題 1 (RQ1 由来): 政令市 (広島市) 管理橋との統合

発展課題 2 (RQ2 由来): 判定区分 ("?") の解明

発展課題 3 (RQ3 由来): 緊急輸送道路公式指定との照合

発展課題 4 (RQ2 + RQ3 連携): 老朽 × 防災重要 = ダブルリスク橋

発展課題 5 (RQ2 + L40 連携): 標高 + 橋位置の統合分析

発展課題 6 (RQ3 拡張): L7 浸水分析との統合

発展課題 7 (展望): 全国インフラ長寿命化との比較