Lesson 75
道路カメラ・冬期道路情報 単独 3 研究例分析 — 142 観測地点 / 国道+主要 88.0% × 標高 ≥ 200m 75.4% × 中山間 63.4% / L02 ↔ L75 一致 92.3% を読む
L75道路カメラ冬期道路情報リアルタイム監視凍結注意チェーン規制監視ネットワーク道路特化監視重要路線優先設計凍結リスク監視ネットワーク機能分化データ層別化RQ×3Format BgeopandasPOINT (CSV)L02連携 (県内カメラ)L73連携 (winter冬期閉鎖)L74連携 (走行注意)中山間集中
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 1260 (4 リソース, ~9.8 MB)
データ取得手順
⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。
| ID | データセット名 |
| #333 | dataset #333 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #1260 | 道路カメラ・冬期道路情報 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L75_road_cameras.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
学習目標と問い
本記事の対象 — 「道路カメラ・冬期道路情報」 1 件 単独分析
本記事は DoBoX のデータセット 「道路カメラ・冬期道路情報」 (dataset 1260)
1 件を 単独で取り上げ、 広島県の道路カメラ・冬期道路情報
142 観測地点 / カメラ画像 ~129 枚 / 雪情報 25 地点を
3 つの独立した研究角度で並列に分析する記事である。
他のシリーズ (県内カメラ L02 / 事前通行規制 L73 / 走行注意 L74 / 緊急輸送
道路 L72) と本記事は 合体しない。 RQ2 で L73 winter (冬期閉鎖) と
L74 (走行注意, 落石)、 RQ3 で L02 (県内カメラ, 351 台) を参照するが、 これは
「県の道路特化監視ネットワークの位置付け」 を明らかにするための既扱データの
従属的参照に留め、 本記事の主軸はあくまで道路カメラ・冬期道路情報
1 dataset の分析である。
「道路カメラ・冬期道路情報」 とは:
広島県土木建築局道路整備課が管理する道路の
ライブ監視カメラと
路面状況リアルタイム情報(積雪深・圧雪深・気温・路面温度・路面状態)
を 1 つのデータセットに統合した
「道路特化リアルタイム監視ネットワーク」。
ドライバーへの情報提供 (DoBoX Web ポータル) と道路管理者の運用判断 (除雪
出動・チェーン規制決定・交通規制) の双方に使われる。
本データセットの 3 構成要素:
- 観測所一覧 CSV (resource 32516): 142 観測地点の
位置 (緯度経度) + 路線名 + 路線番号 + 設置場所 (標高埋込) + 表示情報
- カメラ画像 ZIP (resource 32519): ~135 枚の jpg ライブ画像
(~10 分更新) + camera_time.csv (撮影時刻)
- 冬期道路情報 ZIP (resource 32518): 25 観測地点の
路面状態リアルタイム CSV (圧雪深・積雪深・気温・路面温度・路面状態)
本記事の主要発見 (3 RQ):
- RQ1: 県の道路カメラは142 地点、 国道 + 主要地方道が
125 (88.0%)、 標高 ≥ 200m が
107 (75.4%)。 中山間山地に 90 地点
(63.4%)が集中、 「重要路線優先 + 山岳重点」 の物理形が確認。
- RQ2: 雪情報 25 地点のうち L73 winter 冬期閉鎖
5km 圏内は 7 (28.0%)のみで
H2 (≥ 70%) 反証 — 雪情報範囲 ≫ 冬期閉鎖範囲という2 層の冬期
道路安全制度を発見。 道路カメラ全 142 地点の L74 走行注意 5km 圏内は
132 (93.0%)で H3 (< 30%) 反証 —
県の脆弱山岳路線でL75 + L74 + L73 が多重監視する集中配置を発見。
- RQ3: L02 道路カメラ 131 台 と L75 142 地点の 100m 圏
一致は 131 (92.3%) = 同じ物理カメラの
二重公開。 L75 独自属性 (路線番号 + 路線名 + 標高 + 表示情報 + 雪情報) で
L02 の汎用カメラ網を道路特化 5 種属性で強化。
独自に定義する用語 (本記事限定)
- 道路カメラ (本記事の中心概念): 広島県管理道路に設置された
ライブ監視カメラ。 国道 + 県道 + 主要地方道に重点配置され、 ドライバーと
道路管理者の両方が ~10 分更新の路面状況をリアルタイム把握できる。
L02 (汎用カメラ 351 台) のサブセットだが、 本データセットは道路特化属性
(路線番号 + 標高 + 路面状態) を付加した別系統公開。
- 冬期道路情報 (本記事の副概念): 12 月〜3 月の冬期に道路カメラ
観測点で測定される圧雪深 + 積雪深 + 気温 + 路面温度 + 路面状態
の 5 指標。 道路カメラと一体運用され、 除雪出動・チェーン規制・路線
閉鎖の判断基準として機能。
- 凍結注意 (本記事独自): 「路面状態」 列に出現するカテゴリ値。
春季 (4 月) 観測では「乾燥」 が支配的だが、 冬期は「凍結」 「圧雪」 「シャ
ーベット」 等のカテゴリが現れ、 ドライバーへの注意喚起情報として
DoBoX Web ポータルに表示される。
- チェーン規制 (本記事独自背景説明): 路面状態が一定の積雪・凍結
状態に達した際に道路管理者が発動する規制。 タイヤチェーン未装着車の通行
禁止。 道路カメラ + 雪情報はこの規制発動判断の根拠データ。
- 監視ネットワーク (本記事独自): 142 観測地点 (117 カメラ
+ 13 雪情報 + 12 両方) を統合的に捉えた本記事独自
フレーム。 単独カメラではなく「県内全域の道路状況をリアルタイム俯瞰
する監視網」 として機能。
- 道路特化監視 (本記事独自): 路線番号 + 路線名 + 標高 + 路面状態
の 4 種属性で道路管理に特化した監視概念。 L02 (汎用カメラ:
道路+河川+ため池+海岸+港湾) と異なり、 L75 は道路のみに焦点を絞り、
ドライバー情報提供と道路管理運用に最適化された属性セットを提供。
- 表示情報 (本記事独自呼称): 公式 CSV の「表示情報」 列に格納
される 3 値分類: camera (117, ライブ画像のみ提供) /
slip (13, 路面状態のみ提供) / slip_camera
(12, 両方提供 = 重要監視点)。 slip_camera は冬期重要路線の
重複設置で、 「映像 + 数値」 の二重情報提供箇所。
- 路線種別 (本記事独自分類): CSV 路線名先頭から判定する
国道 / 主要地方道 / 一般県道 / その他の 4 分類。 公式分類ではないが、
道路の「重要度・通行量・管理予算」 を反映する事実上の階層構造。
- 標高クラス (本記事独自分類): 設置場所列に「標高Nm」 形式で
埋め込まれた値を抽出し、 低 (<100m) / 中 (100-300m) / 高 (300-500m)
/ 山岳 (≥500m)の 4 クラスに分割。 道路カメラの「山岳監視特化度」 を
量化する独自指標。
- 重要路線優先設計 (本記事独自フレーム): 道路カメラが国道 +
主要地方道に重点配置され、 標高 ≥ 200m の中山間 + 山岳道路に過半数集中する
設置思想。 限られた予算で「県内交通の動脈の状態を最大限把握する」
ための制度設計。 H1 で量的検証。
- 凍結リスク監視ネットワーク (本記事独自): L73 winter (冬期閉鎖) +
L75 雪情報点 (slip + slip_camera) を統合した広域凍結監視概念。 規制発動
(26 区間 / 97 km) と前線情報 (25 地点) が
補完関係を成す2 層の冬期道路安全制度。 H2 で量的検証。
- 機能分化 (本記事独自フレーム): 県の道路情報を「リアルタイム情報
提供 (L75 道路カメラ・雪情報) vs 静的予防情報 (L74 走行注意, L73 事前
通行規制)」 と分けて捉えるフレーム。 H3 (L75 ⊥ L74) で量的支持。
- データセット二重公開 (本記事独自): 同じ物理カメラが L02 (汎用
横断 dataset) と L75 (道路特化 dataset) の両方に登録される
公開設計。 用途別ユーザ (汎用検索 vs 道路管理者) に異なる属性レベルを
提供する「データ層別化」戦略の事例。 H4 で量的検証。
- 中山間山地 (本記事独自定義): 庄原市・三次市・安芸太田町・
安芸高田市・北広島町・神石高原町・世羅町・府中市の 8 市町。 公式分類
ではないが、 地形・人口密度から「中山間」 と一般に呼ばれる地域。 L73 / L74
と同じ定義を採用。
研究の問い (3 RQ)
- RQ1 (主研究): 広島県の道路カメラ・冬期道路情報の地理分布と設置構造
— 路線種別 × 標高 × 市町 × 表示情報はどう描けるか? 142 観測地点を
4 軸で集計し、 「県の道路特化監視ネットワーク」 の物理形状を初めて系統的に
記述する。 H1 (国道+主要 ≥ 60% かつ 標高 ≥ 200m が ≥ 50%) を検証。
- RQ2 (副研究 1): 道路カメラ・冬期道路情報と冬期通行止め (L73 winter)
との関連 — 雪道監視ネットワークはどう描けるか? 雪情報 25 地点と
L73 winter 26 区間を 5km 圏で sjoin、 さらに L74 走行注意 (381 区間)
との対比で「機能的差 — 落石 vs 凍結」 を分離する。 H2 (雪情報 winter 近接
≥ 70%), H3 (L74 近接 < 30%) を検証。
- RQ3 (副研究 2): L02 県内カメラ (351 台) と L75 道路カメラ (142 地点)
の棲み分け — 道路特化監視はどう描けるか? L02 の道路区分 + 県所管
(131 台) と L75 を 100m 圏で照合 → 一致率 + 属性差を量化する。
H4 (一致 ≥ 70%), H5 (L75 独自属性 ≥ 3 種) を検証。
仮説 (5)
- H1 (RQ1, 路線種別 + 標高): 国道 + 主要地方道 ≥ 60%、 標高 ≥ 200m が
≥ 50%。 「重要路線優先 + 山岳重点」 設置思想仮説。
- H2 (RQ2, 雪情報 ⊂ 冬期閉鎖近接): 雪情報 25 地点のうち
L73 winter 5km 圏内 ≥ 70%。 雪情報 = 冬期閉鎖の前線監視仮説。
- H3 (RQ2, 落石とは独立): L75 道路カメラの L74 (落石注意) 5km 圏内
< 30%。 道路カメラは凍結・路面に特化、 落石注意とは独立分布仮説。
- H4 (RQ3, L02 道路カメラとの一致): L02 道路区分 (131 台) と
L75 の 100m 圏一致 ≥ 70%。 同じ物理カメラの二重公開仮説。
- H5 (RQ3, L75 独自属性): L75 が L02 にない独自属性を ≥ 3 種提供。
道路特化監視に必要な属性層別化の量的事例仮説。
到達点
本記事を読み終えると、 (1) 県の道路カメラ 142 観測地点・カメラ画像
~129・雪情報 25 の物理構造を完全に俯瞰、 (2) 雪情報と
L73 winter (冬期閉鎖) の補完関係 + L74 走行注意との独立性を量的に把握、
(3) L02 (汎用) と L75 (道路特化) の二重公開設計と道路特化属性の付加価値を
特定できる、 という 3 段階の知識が獲得できる。 これにより県の道路情報配信制度
における「リアルタイム情報提供 (動的) vs 静的予防情報 (規制 + 注意)」
という機能分化、 および「汎用カメラ網 (L02) ⊃ 道路特化監視 (L75)」という
データ層別化設計が研究者視点で見えるようになる。
使用データ
本研究で使う 1 つの dataset (4 リソース) を以下の表に示す。
本データは「道路カメラ + 冬期道路情報」 を 1 つのカタログ単位で公開しており、
内部に 4 つの異なる形式のリソース (CSV + xlsx + winter ZIP + image ZIP) が
格納されている統合データセット。
データセット仕様
| 項目 |
値 |
| dataset_id |
1260 |
| 公式名 |
道路カメラ・冬期道路情報 |
| 公式説明 |
広島県が管理する道路のカメラ画像,路面状況(積雪深・圧雪深・気温・路面温度・路面状態) |
| リソース数 |
4 (CSV + xlsx + winter ZIP + image ZIP) |
| リソース ID |
32516 (一覧 CSV) / 32517 (仕様 xlsx) / 32518 (winter ZIP) / 32519 (image ZIP) |
| 総サイズ |
10,311,855 byte (~9.8 MB) |
| CSV 列 |
観測地点ID, 観測所名, 設置場所 (標高埋込), 路線名, 緯度, 経度, 路線番号, 表示情報 |
| レコード数 |
観測地点 142 (camera=117 / slip=13 / slip_camera=12) |
| カメラ画像数 |
~135 jpg (camera + slip_camera = 129) |
| 雪情報レコード数 |
25 (slip + slip_camera = 25) |
| 座標系 (元) |
WGS84 (EPSG:4326) → 本記事 EPSG:6671 で処理 |
| ライセンス |
クリエイティブ・コモンズ表示 (CC-BY) |
| URL |
https://hiroshima-dobox.jp/datasets/1260 |
| 作成主体 |
広島県 (土木建築局道路整備課・冬期道路担当) |
4 リソースの内訳
| リソース | 形式 | 役割 | 件数 |
| resource 32516 (観測所一覧) |
CSV (UTF-8 BOM) |
142 観測地点の位置 + 属性 |
142 行 × 8 列 |
| resource 32517 (仕様説明) |
xlsx (~11 KB, 拡張子は .bin で配信) |
N_snow.csv と camera_time.csv の列定義 |
2 sheet |
| resource 32518 (冬期道路情報) |
ZIP (~4 KB, 拡張子は .json で配信) |
25 観測地点の路面状態 CSV (cp932) |
25 ファイル |
| resource 32519 (道路カメラ画像) |
ZIP (~10 MB, 拡張子は .json で配信) |
129 観測地点のライブ画像 jpg + 撮影時刻 CSV |
~135 jpg + 1 CSV |
観測所 CSV の列定義
| 列名 | 例 | 意味 |
| 観測地点ID | 131 | 1〜158 のうち本データに含まれる ID。 N_snow.csv のファイル名にも使われる |
| 観測所名 | 中畑 | 地名・施設名等 |
| 設置場所 | 呉市安浦町大字中畑【標高106m】 | 住所 + 標高埋込文字列。 標高は正規表現抽出 |
| 路線名 | 主要地方道 矢野安浦線 | 路線種別 (国道/主要地方道/一般県道) を含む |
| 緯度 | 34.30031 | WGS84 |
| 経度 | 132.71399 | WGS84 |
| 路線番号 | 広島県道34号 | 個別路線の識別子 |
| 表示情報 | camera | camera (画像のみ) / slip (路面のみ) / slip_camera (両方) |
N_snow.csv の列定義 (cp932 エンコーディング)
| 列番号 | 意味 | 例 |
| 1 | 観測日 (yyyy-mm-dd) | 2026-04-01 |
| 2 | 観測時間 (hh:mm:ss) | 07:50:00 |
| 3 | 圧雪深 (cm) | 0 (4 月時点 = 凍結期外) |
| 4 | 積雪深 (cm) | 0 |
| 5 | 気温 (℃) | 11 |
| 6 | 路面温度 (℃) | 13 |
| 7 | 路面状態 | 乾燥 / 湿潤 / 凍結 / 圧雪 / シャーベット / --- |
形式特性の注意点
- resource 32517 (xlsx) と resource 32518 / 32519 (ZIP)
は拡張子が .bin / .json で配信される。 magic 判定 (PK\x03\x04) で
ZIP を確認、 xlsx として再保存して openpyxl で読む手順が必要。
- N_snow.csv はcp932 (シフト JIS) エンコーディングで配信。
read.decode("cp932") で読み込む。 ヘッダ行なし、 1 ファイル
= 1 行 = 7 カラム CSV。
- 標高は CSV の独立列ではなく「設置場所」 列に「標高Nm」 形式で埋込。
正規表現
r"標高(\d+)m" で抽出する。 これは住所表記の
文化的慣習で、 山岳道路の地点表現として「呉市〇〇【標高Nm】」 と書く
地理学的表現を踏襲。
- 観測地点 ID は離散的 (1, 2, ..., 158 のうち 142 個) で連番ではない。
欠番は廃止された観測地点 (機材故障・観測終了) と推定。
- カメラ画像は ~10 分更新のスナップショット配信。 連続動画ではない。
過去画像のアーカイブも本 dataset には含まれない (リアルタイム配信のみ)。
- 雪情報は冬期 (12 月〜3 月) に活動が集中、 春季 (4 月以降) は気温・路面温度
観測のみで「圧雪深 = 0 / 積雪深 = 0」 が普通。 本記事の観測時刻
(2026-04-01 07:50) は凍結期外のスナップショット。
ダウンロード
本記事の再現に必要なすべてを直リンクで提供する。
HTML だけ読めば学習者が完全再現できることが目標 (要件 A)。
生データ (DoBoX 1 dataset, 4 リソース)
このスクリプト本体
中間 CSV (本記事生成、 再利用可)
図 (PNG, 直 DL 可)
【RQ1】 道路カメラの地理分布と設置構造 — 路線種別 × 標高 × 市町 / 142 観測地点 / 国道+主要 88.0% / 標高 ≥ 200m 75.4%
狙い (RQ1)
RQ1 では「県の道路特化監視ネットワーク」 の物理構造を初めて系統的に
記述する。 具体的には 142 観測地点を路線種別 (国道/主要地方道/一般県道)
× 標高クラス × 市町 × 表示情報 (camera/slip/slip_camera)の 4 軸で集計し、
「カメラがどの路線・どの標高・どの市町に重点配置されるか」 を 1 枚で俯瞰
できるようにする。 H1 (国道+主要 ≥ 60% かつ 標高 ≥ 200m が ≥ 50%) は
「重要路線優先 + 山岳重点設計」 の中心仮説を検証する。
手法 — 4 ステップ
- STEP 1: CSV パース + 路線種別判定
観測所一覧 CSV (UTF-8 BOM, 142 行 × 8 列) を read_csv()
で読込み、 路線名 列の先頭から「国道」 「主要地方道」 「一般県道」
を文字列マッチで判定する。 これは公式分類ではなく本記事の独自分類。
- STEP 2: 標高の正規表現抽出
標高は CSV の独立列ではなく設置場所列に「標高Nm」 と埋込されている
(例: 「呉市安浦町大字中畑【標高106m】」 → 106)。 正規表現
r"標高(\d+)m" で抽出し、 標高_m 列を派生。
欠損 (標高表記なし) は NaN。
- STEP 3: GeoDataFrame 化 + 投影変換
緯度経度 → shapely.geometry.Point → GeoDataFrame に変換、
to_crs("EPSG:6671") で平面直角第 III 系に投影 → 距離・面積が
m 単位で計算可能に。
- STEP 4: 4 軸で集計 + 中山間判定
代表点 sjoin で市町判定 → 中山間 8 市町 vs 平野・沿岸都市 vs 沿岸島嶼を
区別。 路線種別 × 標高クラス × 表示情報 のクロス集計で監視ネットワークの
物理構造を量化。
実装 (主要部のみ抜粋)
↑ L75_road_cameras.py 行 1594–1679
1
2
3
4
5
6
7
8
9
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632 | import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
import re
# (1) 観測所 CSV を読込み (UTF-8 BOM)
df = pd.read_csv("data/extras/L75_road_cameras/station_list.csv",
encoding="utf-8-sig")
# (2) 設置場所列から「標高Nm」 を正規表現で抽出
def extract_alt(s):
m = re.search(r"標高(\d+)m", str(s))
return int(m.group(1)) if m else None
df["標高_m"] = df["設置場所"].apply(extract_alt)
# (3) 路線名から路線種別 (国道/主要地方道/一般県道) を判定
def route_class(name):
s = str(name)
if "国道" in s: return "国道"
if "主要地方道" in s: return "主要地方道"
if "一般県道" in s: return "一般県道"
return "その他"
df["路線種別"] = df["路線名"].apply(route_class)
# (4) GeoDataFrame 化 + EPSG:6671 投影変換
geom = [Point(lon, lat) for lon, lat in zip(df["経度"], df["緯度"])]
gdf = gpd.GeoDataFrame(df, geometry=geom, crs="EPSG:4326").to_crs("EPSG:6671")
# (5) 標高クラスでビニング
import pandas as pd
gdf["標高クラス"] = pd.cut(gdf["標高_m"],
bins=[-1, 100, 300, 500, 1000],
labels=["低 (<100m)", "中 (100-300m)",
"高 (300-500m)", "山岳 (>=500m)"])
# (6) 路線種別 × 標高 集計
print(gdf.groupby("路線種別").size())
print(gdf.groupby("標高クラス", observed=True).size())
print(f"総地点数: {len(gdf)}")
|
結果 1: 県全域 路線種別別 マップ (図 1)
なぜこの図か: 4 種の路線種別が県内にどう分布するかを県全域地図に
重ねて一目で確認したい。 国道 (赤) + 主要地方道 (橙) + 一般県道 (青) +
その他 (灰) で色分けすることで、 「国道・主要地方道に重点配置」 の物理形状が
直感できる。
図 1 から読み取れること:
- 国道 (赤, 75 地点):
国道 186 / 191 / 375 / 432 / 433 等の主要国道に集中
- 主要地方道 (橙, 50 地点):
県北部・西部の主要地方道 (廿日市佐伯線・矢野安浦線等) に分布
- 一般県道 (青, 17 地点):
支線県道に少数。 沿岸島嶼 (蒲刈島循環線等) も含む
- 地理的偏在: 県北部 (庄原・三次・安芸太田) + 西部山岳 (廿日市) +
島嶼部 (江田島・蒲刈・倉橋) に集中、 平野部 (広島市・福山市) では
限定的
結果 2: 標高色分けマップ (図 2)
なぜこの図か: H1 の標高仮説を直感検証するため、 142 地点を標高
カラーマップ (青=低 → 黄=中 → 赤=山岳) で色分けし、 県北部・西部の山岳道路
に重点配置されているかを地形に重ねて確認する。
図 2 から読み取れること:
- 標高分布: 中央 318 m / 最大
784 m (廿日市市吉和の国道 186 号 700m 級峠) /
標高 ≥ 200m の地点が 107 (75.4%)
- 赤色点 (標高 ≥ 500m): 廿日市吉和 + 安芸太田 + 庄原 + 神石高原 等
の山岳峠 — チェーン規制発動の重点監視箇所
- 青色点 (標高 < 100m): 沿岸国道 2 号 + 県道 (廿日市・呉) 等の
平地路線 — 雪情報よりライブ画像主体の監視
- 標高勾配 = 県北部山岳から沿岸への高度低下が地図上で明確 = 道路カメラは
地形に応じた監視特性を持つ
結果 3: 路線 + 標高 + 地理クラス 3 角度 (図 3)
なぜこの図か: H1 (路線種別 + 標高) を 3 パネルで多角検証。 (1) 路線
種別別件数で「国道+主要地方道」 の支配率、 (2) 標高ヒストで 200m 閾値、
(3) 地理クラスで中山間集中度を 1 枚で見る。
図 3 から読み取れること:
- 左パネル (路線種別件数): 国道 + 主要地方道 = 88.0%
で多数派支配。 H1 第 1 条件
成立
- 中央パネル (標高ヒスト): 中央318 m、
標高 200m 以上が75.4%。 H1 第 2 条件
成立
- 右パネル (地理クラス): 中山間山地が63.4%で
最多 — 「監視ネットワーク = 中山間山岳道路重点」 が量的に確認
- 3 軸で見ると道路カメラは「国道+主要地方道 × 標高 ≥ 200m × 中山間」と
整理できる
結果 4: 表示情報 + 中山間境界 重ね合わせマップ (図 4)
なぜこの図か: camera (青○) / slip (橙△) / slip_camera (赤■) の 3 種を
中山間境界 (橙背景) と沿岸島嶼 (青背景) と重ねて、 表示情報の地理分布パターン
(camera は全域、 slip + slip_camera は山岳集中) を地図で直接見せる。
図 4 から読み取れること:
- 橙色背景 (中山間 8 市町): 庄原・三次・安芸太田・安芸高田・北広島・
神石高原・世羅・府中
- 青○ (camera のみ, 117 地点): 県全域に分散 —
ライブ画像のみ提供で雪情報なし
- 橙△ (slip のみ, 13 地点): 中山間山岳に集中 — 雪情報のみ
(ライブ画像なし)。 機材コスト削減で雪深センサ + 気温計のみ設置
- 赤■ (slip_camera, 12 地点): 中山間最重要箇所 —
ライブ画像 + 雪情報の二重情報提供。 冬期重要路線の監視中核
- slip + slip_camera (25 地点) はほぼすべて中山間 ≥ 200m に集中 =
雪情報 = 山岳監視特化の物理形が明確
結果 5: 路線・標高・地理・市町 詳細表
表示情報サマリ:
| 表示情報 |
ラベル |
地点数 |
シェア_% |
| camera |
カメラのみ |
117 |
82.4 |
| slip |
雪情報のみ |
13 |
9.2 |
| slip_camera |
両方 (camera + slip) |
12 |
8.5 |
表示情報 表から読み取れること:
camera (117, 82.4%) が圧倒的多数。 slip (13) と
slip_camera (12) を合わせた雪情報持ち = 25 地点
(17.6%) は中山間山岳道路に集中する冬期監視の中核。
路線種別サマリ:
| 路線種別 |
地点数 |
標高平均_m |
標高中央_m |
標高最大_m |
シェア_% |
| 国道 |
75 |
362.0 |
346.0 |
784 |
52.8 |
| 主要地方道 |
50 |
328.0 |
310.0 |
667 |
35.2 |
| 一般県道 |
17 |
307.0 |
293.0 |
774 |
12.0 |
路線種別 表から読み取れること:
国道 が 75 (52.8%)
で最多、 国道 + 主要地方道で88.0%。 標高中央値は路線種別で
異なり、 国道は中央 346 m と
山岳重点、 一般県道は低標高 (沿岸島嶼路線) を含むため中央値が低い。
標高クラスサマリ:
| 標高クラス |
地点数 |
シェア_% |
| 低 (<100m) |
16 |
11.3 |
| 中 (100-300m) |
47 |
33.1 |
| 高 (300-500m) |
47 |
33.1 |
| 山岳 (>=500m) |
32 |
22.5 |
標高クラス 表から読み取れること:
標高 ≥ 200m が75.4%。 山岳 (≥500m) が
32
地点 — チェーン規制重要箇所。 低 (<100m) は沿岸国道 + 県道に限定される。
地理クラス別サマリ:
| 地理クラス |
地点数 |
シェア_% |
| 中山間山地 |
90 |
63.4 |
| 平野・沿岸都市 |
51 |
35.9 |
| 沿岸島嶼 |
1 |
0.7 |
地理クラス 表から読み取れること:
中山間山地 が 90 (63.4%)
で最多。 中山間集中度 63.4%は L73 / L74 と比較しても道路カメラが
最高水準で、 「監視ネットワーク = 中山間道路重視」 の制度設計を量的支持。
路線種別 × 標高クラス クロス:
| 標高クラス |
路線種別 |
低 (<100m) |
中 (100-300m) |
高 (300-500m) |
山岳 (>=500m) |
|
一般県道 |
5 |
4 |
4 |
4 |
|
主要地方道 |
3 |
21 |
17 |
9 |
|
国道 |
8 |
22 |
26 |
19 |
クロス 表から読み取れること:
国道 + 主要地方道は標高 200-500m に集中 (山岳幹線重点)、
一般県道は標高分布が広い (沿岸-山岳混在)。 これは「国道 = 主要交通路の山岳越え
監視」 の制度位置付けを示す。
市町別サマリ (Top 15):
| 市町名 |
地理クラス |
地点数 |
| 三次市 |
中山間山地 |
26 |
| 安芸太田町 |
中山間山地 |
25 |
| 庄原市 |
中山間山地 |
24 |
| 不明 (代表点が県外/海上) |
平野・沿岸都市 |
17 |
| 安芸高田市 |
中山間山地 |
13 |
| 廿日市市 |
平野・沿岸都市 |
13 |
| 福山市 |
平野・沿岸都市 |
9 |
| 東広島市 |
平野・沿岸都市 |
5 |
| 呉市 |
平野・沿岸都市 |
4 |
| 府中市 |
中山間山地 |
2 |
| 三原市 |
平野・沿岸都市 |
2 |
| 大竹市 |
平野・沿岸都市 |
1 |
| 江田島市 |
沿岸島嶼 |
1 |
市町別 表から読み取れること:
三次市 (26 地点)が最多、
2 位 安芸太田町 (25 地点)、
3 位 庄原市 (24 地点)。
中山間市町 + 沿岸島嶼が上位を独占し、 平野都市部 (広島市・福山市) は限定的。
路線番号別 Top 10 (個別路線):
| 路線番号_clean |
路線種別 |
地点数 |
標高中央_m |
| 国道186号 |
国道 |
13 |
588.0 |
| 国道375号 |
国道 |
9 |
199.0 |
| 国道183号 |
国道 |
8 |
319.0 |
| 国道432号 |
国道 |
8 |
422.0 |
| 国道191号 |
国道 |
8 |
542.0 |
| 国道261号 |
国道 |
6 |
395.0 |
| 国道182号 |
国道 |
6 |
294.0 |
| 広島県道40号 |
主要地方道 |
6 |
544.0 |
| 国道433号 |
国道 |
5 |
328.0 |
| 広島県道39号 |
主要地方道 |
5 |
438.0 |
路線番号 表から読み取れること:
国道186号 が
13 地点で最多 — 県内で最も重点監視される路線。
国道 186 号 (廿日市〜山口県境の山岳越え) や 国道 375 号 (尾道〜三次の中山間縦貫)
などが上位を占め、 これらは「冬期チェーン規制候補 + 落石歴あり + 主要県外接続」
の三重要素を持つ路線。
【RQ2】 冬期道路情報ネットワーク — 雪情報 ⊂ L73 winter / L75 ⊥ L74 落石注意 / 雪情報 winter 近接 28.0%
狙い (RQ2)
RQ1 で「道路カメラの構造」 が分かったが、 これはL75 単独の話。
RQ2 では「冬期道路情報ネットワーク」を 2 軸で見る:
(1) 雪情報点 と L73 winter (冬期閉鎖) の補完関係(雪情報 = 冬期閉鎖の前線監視か?)、
(2) 道路カメラ全 142 地点 と L74 走行注意 (落石注意) との独立性(機能分化の検証)。
H2 (雪情報 winter 近接 ≥ 70%) と H3 (L74 近接 < 30%) の 2 仮説を検証する。
手法 — 5km バッファ + sjoin (intersects)
狙い: L73 winter (26 区間) に対して5km バッファを作成 (= 冬期
閉鎖区間 + 周辺の前線監視範囲)、 雪情報持ち地点を intersects で
近接判定。 同様に L74 (走行注意 381 区間) に対しても 5km バッファで全
142 地点の近接を判定し、 機能分化を量化。
| 項目 | 値 | 意味 |
| L75 道路カメラ |
142 地点 (camera + slip + slip_camera) |
本記事の主データ |
| L73 winter (既扱) |
26 区間 / 97 km |
12-3 月の冬期閉鎖区間 (機械的閉鎖) |
| L74 走行注意 (既扱) |
381 区間 |
落石注意 (rakuseki_03 + rakuseki_04) |
| バッファ幅 |
5000 m (5 km) |
冬期閉鎖区間 + 周辺の前線監視範囲 / 落石区間 + 周辺の地質類似範囲 |
| 近接判定 |
sjoin (intersects) |
1 観測地点が L73/L74 buffer に含まれれば近接 |
注意: なぜ 5km バッファか — 道路カメラは点配置 (POINT)、 L73/L74 は
LineString。 道路は山岳谷沿いに連続するため、 「同じ路線・同じ流域・同じ
地形条件」 を判定する範囲として 5 km が適切。 L74 で使った 30m / 100m は
道路敷地直近の判定だったが、 RQ2 では「機能の同一範囲かどうか」 という
広域近接性が問題。 5km は「同じ山岳谷 = 同じリスク条件」 を含む広域空間判定。
実装 (主要部)
↑ L75_road_cameras.py 行 1821–1956
1
2
3
4
5
6
7
8
9
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884 | import json, zipfile, re
import geopandas as gpd
from shapely import wkt as swkt
from shapely.geometry import LineString
# (1) 雪情報 (N_snow.csv) を ZIP から読み込み (cp932)
snow_rows = []
with zipfile.ZipFile("data/extras/L75_road_cameras/winter_road.json") as z:
for name in z.namelist():
m = re.search(r"snow_data/snow/(\d+)_snow.csv", name)
if not m: continue
sid = int(m.group(1))
with z.open(name) as f:
text = f.read().decode("cp932").strip()
parts = text.split(",")
if len(parts) < 7: continue
snow_rows.append({
"観測地点ID": sid, "雪_観測日": parts[0],
"圧雪深_cm": parts[2], "積雪深_cm": parts[3],
"気温_C": parts[4], "路面温度_C": parts[5],
"路面状態": parts[6],
})
# (2) L73 winter (冬期閉鎖) を読込み LineString 化
with open("data/extras/L73_pre_traffic_restriction/pre_traffic.json",
"r", encoding="utf-8") as f:
raw = json.load(f)
geoms_w, rows_w = [], []
for r in raw["results"]:
if r.get("type") != "winter": continue
try:
geoms_w.append(swkt.loads(r.get("kukanroot") or r.get("kukan", "")))
except Exception: continue
rows_w.append({"id_l73": r.get("id"), "rosen": r.get("rosenname")})
gdf_winter = gpd.GeoDataFrame(rows_w, geometry=geoms_w, crs="EPSG:4326")
gdf_winter = gdf_winter.to_crs("EPSG:6671")
# (3) 5km バッファ → 雪情報持ち地点 sjoin
gdf_winter_buf = gdf_winter.copy()
gdf_winter_buf["geometry"] = gdf_winter.geometry.buffer(5000)
buf_union = gdf_winter_buf.geometry.union_all()
gdf["near_winter_5km"] = gdf.geometry.intersects(buf_union)
# 雪情報持ち地点のうち winter 5km 圏内
mask_snow = gdf["表示情報"].isin(["slip", "slip_camera"])
n_snow_near = (mask_snow & gdf["near_winter_5km"]).sum()
print(f"雪情報点 winter 5km: {n_snow_near}/{mask_snow.sum()}")
# (4) L74 走行注意 5km 圏内 (落石注意との独立性検証)
def load_l74_lines():
lines = []
for level in ("rakuseki_03", "rakuseki_04"):
p = f".../L74_caution_segments/.../04_warning_{level}.json"
with open(p, encoding="utf-8") as f:
text = f.read()
for seg in json.loads("[" + text + "]"):
if isinstance(seg, list) and len(seg) >= 2:
lines.append(LineString([(pt["e"], pt["d"]) for pt in seg]))
return lines
gdf_l74 = gpd.GeoDataFrame(geometry=load_l74_lines(),
crs="EPSG:4326").to_crs("EPSG:6671")
buf_l74 = gdf_l74.geometry.buffer(5000).union_all()
gdf["near_l74_5km"] = gdf.geometry.intersects(buf_l74)
print(f"道路カメラ 142 地点 L74 5km: {gdf['near_l74_5km'].sum()}/{len(gdf)}")
|
結果 1: 雪情報点 + L73 winter 重ね合わせマップ (図 5)
なぜこの図か: 「雪情報 = 冬期閉鎖の前線監視」 仮説 (H2) を
地図で直接見せる。 L73 winter (青線) + 5km バッファ (薄青塗り)、 雪情報点
(slip 橙△ + slip_camera 赤■) を重ねて、 雪情報点と冬期閉鎖区間の
空間関係 (近接 or 広域分散) を確認する。
図 5 から読み取れること:
- 青線 (L73 winter, 26 区間 / 97 km):
冬期閉鎖区間 — 県北山岳の主要地方道 + 国道に限定的分布
- 薄青塗り (5km バッファ): 冬期閉鎖区間 + 周辺の前線監視範囲
- 橙△ (slip のみ, 13) + 赤■ (slip_camera, 12):
雪情報持ち 25 地点
- 灰○ (camera のみ): 県全域に分散、 雪情報非対応 = 「画像のみで
路面判断する箇所」
- 雪情報持ち 25 地点のうち 7 地点
(28.0%)が winter 5km 圏内 — H2 (反証)。
H2 反証 は重要な発見: 雪情報点は冬期閉鎖区間よりはるかに
広い範囲に分布し、 「雪情報 = 全県凍結監視」 vs 「L73 winter = 限定
自動規制」 という2 層制度を量的に同定
- 制度的解釈: L73 winter は機械的閉鎖 (12-3 月一律閉鎖)で
限定路線のみ、 L75 雪情報は動的監視 (リアルタイム路面状態判定)で
広域配置 — 県の冬期道路安全は「規制 (狭い) + 監視 (広い)」 の補完設計
結果 2: L74 走行注意 + 道路カメラ 重ね合わせマップ (図 6)
なぜこの図か: 「道路カメラと落石注意は独立分布」 仮説 (H3) を
地図で直接見せる。 L74 (薄橙線) + 道路カメラ全 142 地点 (路線種別色) を
重ねて、 「両者が同じ路線で重なるか? 別路線か?」 を確認する。
図 6 から読み取れること:
- 薄橙線 (L74 走行注意, 381 区間): 中山間 + 沿岸地質脆弱地に
連続的分布
- 道路カメラ (路線種別色): L74 と地理的に重なる地点が大部分
- L74 5km 圏内地点: 132/142 (93.0%) —
H3 (反証)。 H3 仮説は「30% 未満」 で、 観測値
93.0% は大幅反証
- H3 反証 の意味: 道路カメラは機能的には凍結・路面
状態に特化するが、 物理的にはL74 走行注意 (落石注意) と同じ
山岳重要路線群に集中する。 これは「同じ脆弱地形 = 同じ路線」 という
地理学的必然 — 中山間山岳道路は落石も凍結も同時にリスクを持つ
- 制度的発見: 県の脆弱山岳道路網にはL74 静的予防情報 (落石注意)
+ L75 動的監視 (カメラ + 雪情報) + L73 winter 自動規制 (冬期閉鎖)の
3 制度が多重に配置される — 「重要路線への制度集中投資」 の物理形
結果 3: 雪情報 × 冬期閉鎖 + L74 4 カテゴリ詳細表
雪情報点 ↔ L73 winter 近接:
| カテゴリ |
地点数 |
シェア_% |
| 雪情報持ち + winter 5km 圏内 |
7 |
28.0 |
| 雪情報持ち + winter 5km 圏外 |
18 |
72.0 |
雪情報 winter 表から読み取れること:
雪情報持ち 25 地点のうち、 winter 5km 圏内が
7 (28.0%)。 H2 仮説 70% 閾値に
対して非成立。 雪情報 = 冬期閉鎖の前線
監視という制度的補完関係が
反証された (前線監視より広域分散)。
142 地点 × L74 / L73 winter 4 カテゴリ:
| カテゴリ |
地点数 |
シェア_% |
| winter 5km 圏内のみ |
3 |
2.1 |
| L74 5km 圏内のみ |
109 |
76.8 |
| 両方 5km 圏内 |
23 |
16.2 |
| どちらも 5km 圏外 |
7 |
4.9 |
4 カテゴリ 表から読み取れること:
142 地点を「L73 winter / L74 走行注意」 の 2 軸で 4 カテゴリ分類した。
winter 5km 圏内のみはチェーン規制重点、
L74 5km 圏内のみは落石注意路線にあるカメラ、
両方 5km 圏内はチェーン規制 + 落石二重リスク箇所、
どちらも 5km 圏外は平地都市部のライブカメラ。
これは「カメラがどの目的別ネットワークに属するか」 を量化する。
雪情報持ち地点の路面状態分布 (本記事観測時刻 2026-04 = 凍結期外):
路面状態 表から読み取れること:
本記事の観測時刻は2026-04-01 07:50 (凍結期外)のため、 路面状態は
「乾燥」 「---」 (欠測) が支配的。 冬期 (12-3 月) であれば「凍結」 「圧雪」
「シャーベット」 等のカテゴリが出現するはずで、 これらは DoBoX Web ポータルで
ドライバーへリアルタイム表示される。 4 月の「乾燥」 多数は冬期センサが
通年運用されている証拠でもある。
【RQ3】 L02 県内カメラとの棲み分け — 道路特化監視 / 100m 圏一致 92.3% / L75 独自属性 5 種
狙い (RQ3)
RQ1, RQ2 で「道路カメラの構造と機能」 が分かった。 RQ3 では別 dataset
L02 県内カメラ (351 台横断) との棲み分けを量化する。 L02 は
道路 + 河川 + ため池 + 海岸 + 港湾 + その他の汎用カメラ網で、 L75 は道路特化。
両者の関係は「重複か独立か」、 「L02 ⊃ L75 か L75 ⊃ L02 か」、 「属性差は
何か」 を量的に解明する。 H4 (一致率 ≥ 70%) と H5 (L75 独自属性 ≥ 3 種) を
検証する。
手法 — 100m 距離マッチ + 属性差量化
狙い: L02 のうち管理区分=道路 + 所管=広島県の 131 台を
抽出 (= L75 と直接比較対象)、 100m バッファで L75 142 地点とマッチング。
さらに両 dataset の属性列差を量化し、 L75 独自の道路特化属性を特定。
| dataset | 件数 | 性質 | 独自属性 |
| L02 (1279) 県内カメラ |
351 台 (全体) / 131 台 (道路区分 + 県所管) |
用途横断 (道路 + 河川 + ため池 + 海岸 + 港湾 + その他) |
管理区分 (用途分類) + 公開URL (ライブ視聴 URL) |
| L75 (1260) 道路カメラ |
142 地点 |
道路特化 (国道 + 県道 + 主要地方道のみ) |
路線番号 + 路線名 + 標高 (設置場所内) + 表示情報 + 雪情報 (圧雪深・積雪深・気温・路面温度・路面状態) |
マッチング基準:
- 100m 圏: 同じ物理カメラを別 dataset で再登録した場合の座標誤差
(GPS 測位誤差 + 配信時期差) を吸収する寛容な閾値
- L02 のフィルタ: 管理区分 = 道路 AND 所管 = 広島県のみを抽出
(= L75 と同じ管理者 = 比較対象)
- 双方向マッチ: L75 → L02 (L75 が L02 に含まれるか) と
L02 → L75 (L02 が L75 に含まれるか) の両方
実装 (主要部)
↑ L75_road_cameras.py 行 1594–1668
1
2
3
4
5
6
7
8
9
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627 | import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
# (1) L02 県内カメラ 351 台を読込み
df_l02 = pd.read_csv("data/camera_list.csv", encoding="utf-8-sig")
df_l02 = df_l02.dropna(subset=["緯度", "経度"])
# 道路区分 + 広島県所管 のみ抽出 (L75 と直接比較対象)
df_road = df_l02[(df_l02["管理区分"] == "道路") &
(df_l02["所管"] == "広島県")].copy()
print(f"L02 道路カメラ 県所管: {len(df_road)} 台")
# (2) GeoDataFrame 化
geom = [Point(lon, lat) for lon, lat in zip(df_road["経度"], df_road["緯度"])]
gdf_l02 = gpd.GeoDataFrame(df_road, geometry=geom,
crs="EPSG:4326").to_crs("EPSG:6671")
# (3) 100m バッファでマッチング (L02 → L75 と L75 → L02 双方向)
gdf_l02_buf = gdf_l02.copy()
gdf_l02_buf["geometry"] = gdf_l02.geometry.buffer(100)
match = gpd.sjoin(gdf, gdf_l02_buf, how="left", predicate="within")
gdf["has_l02_match"] = match.dropna(subset=["index_right"]).index.isin(gdf.index)
# 一致率
n_matched = gdf["has_l02_match"].sum()
print(f"L75 ↔ L02 100m 一致: {n_matched}/{len(gdf)} = {100*n_matched/len(gdf):.1f}%")
# (4) 属性差: L75 独自属性は ?
l02_attrs = set(df_l02.columns) # No., カメラ名, 住所, 路河川名等, 緯度, 経度, 公開URL, 所管, 管理区分
l75_attrs = set(gdf.columns) - {"geometry"}
l75_unique = l75_attrs - l02_attrs # 路線番号, 標高_m, 表示情報, 雪情報列 等
print(f"L75 独自属性数: {len(l75_unique)}")
print(f"独自属性: {l75_unique}")
|
結果 1: L02 ↔ L75 重ね合わせマップ (図 7)
なぜこの図か: 「同じ物理カメラの二重公開」 を地図で直接見せる。
L02 道路のみ (紫×) + L75 のみ (橙△) + L02 ∩ L75 (緑○) の 3 色分けで、
両 dataset の棲み分けが空間的にどうなっているかを確認。
図 7 から読み取れること:
- 緑○ (L02 ∩ L75, 131 地点):
同じ物理カメラの二重公開 — 中山間 + 主要国道に集中
- 橙△ (L75 のみ, 11 地点):
L02 に登録なし — 雪情報専用センサ (slip 単独) 等が含まれる
可能性
- 紫× (L02 道路のみ, 1 地点):
L75 に登録なし — L02 のうち広島県所管道路カメラだが L75 142 地点に
含まれない箇所 (L02 vs L75 の更新時期差・対象範囲差を反映)
- 一致 131/142 = 92.3% (L75 視点) —
H4 (強支持)
- 「L02 = 用途横断の汎用カタログ」 と「L75 = 道路特化属性付加」 の
二重公開設計が地図上で確認
結果 2: 一致率 + 属性比較 (図 8)
なぜこの図か: H4 (一致率) と H5 (属性差) を 2 パネルで定量検証。
左パイで 3 カテゴリ件数比較、 右バーで両 dataset の件数 + 属性列数を見比べる。
図 8 から読み取れること:
- 左パネル (3 カテゴリ パイ):
L02 ∩ L75 = 131 (91.6%) /
L75 のみ = 11 /
L02 道路のみ = 1。
H4 (強支持)
- 右パネル (件数 + 属性列数):
L02 全件 351 台 (用途横断) vs L75 142 地点 (道路特化)、
属性列数 L02 = 10 列 / L75 = 8 列。
L75 が L02 にない独自属性 ≥ 5 種 — H5 (強支持)
- 「同じ物理カメラを異なる属性セットで二重公開」 というデータ層別化
設計が量的に確認
結果 3: 棲み分け + 属性 詳細表
L02 ↔ L75 棲み分け 3 カテゴリ:
| カテゴリ |
件数 |
| L02 道路 + L75 両方一致 (100m 圏内) |
131 |
| L75 のみ (L02 に該当なし) |
11 |
| L02 道路のみ (L75 に該当なし) |
1 |
3 カテゴリ 表から読み取れること:
L02 ∩ L75 が131 地点 = L75 の 92.3%。
これは同じ物理カメラの二重公開の量的事実。 L75 のみ
(11) は L02 に登録されていない slip 単独地点 + 配信時期で
L02 に未反映の新設点を含む可能性。 L02 道路のみ (1)
は L75 142 地点に含まれない L02 道路カメラで、 国管理国道 (国土交通省直轄)
の境界付近や対象範囲差を反映。
L02 vs L75 属性比較:
| dataset |
件数 |
道路カメラのみ |
属性列数 |
独自属性 |
| L02 (1279) |
351 |
131 |
10 |
管理区分 (道路/河川/ため池/海岸/港湾/その他), 公開URL |
| L75 (1260) |
142 |
142 |
8 |
路線番号 + 路線名 + 設置場所 (標高埋込) + 表示情報 (camera/slip/slip_camera) + 雪情報 (圧雪深/積雪深/気温/路面温度/路面状態) |
属性比較 表から読み取れること:
L02 = 351 台の用途横断データセット、 L75 = 142 地点の
道路特化データセット。 L02 は管理区分 (道路/河川/ため池/海岸/港湾/その他)
で多用途検索が可能だが路線情報・標高・雪情報を持たない。 L75 は
路線番号 + 路線名 + 標高 + 雪情報の 5 種属性で道路管理者向けの精密分析
(国道別集計・標高別配置・冬期路面監視等) を可能にする。 これは「同じ物理
カメラを用途別ユーザに最適な属性レベルで提供する」 データ層別化戦略の事例。
L02 道路カメラ用途別 (参考):
- L02 全体: 351 台 (道路 131 + 河川 120 + ため池 70 + 海岸 18 + 港湾 6 + その他 6)
- L02 道路 + 県所管: 131 台 (本記事の比較対象)
- L02 道路 + 国所管: 道路 131 - 131 = 0 台 (国土交通省管理 = 国道直轄)
- L75 142 地点 = 県管理道路の道路カメラ
応用シナリオ:
- 道路管理者向け: L75 を使えば「国道 186 号沿いのライブ画像 +
雪情報を一括取得」 が SQL 級の操作で可能 (路線番号フィルタ)
- 一般ユーザ向け: L02 を使えば「自宅近くの道路 + 河川 + ため池
カメラを地図表示」 が用途横断で可能 (管理区分フィルタ)
- 研究者向け: 両 dataset を併用して「同じ物理カメラに用途と
路線情報の両方を付与」 → 多次元属性集計が可能
仮説検証総合
仮説検証総合 (H1〜H5)
本記事冒頭で立てた 5 仮説の検証結果を以下にまとめる。
すべての仮説の検証根拠は本記事中の図表に明示されており、 再現可能。
| 仮説 |
観測値 |
判定 |
詳細解説 |
| H1 路線種別 + 標高: 国道+主要 ≥ 60% & 標高 ≥ 200m が ≥ 50% (RQ1) |
観測 = 国道+主要 125/142 (88.0%) / 標高 ≥ 200m 107/142 (75.4%) |
強支持 |
H1 強支持: 道路カメラ 142 地点のうち国道 + 主要地方道が 125 (88.0%)、 標高 ≥ 200m が 107 (75.4%)。 国道 (赤) + 主要地方道 (橙) で 県内主要交通路を、 標高 ≥ 200m の中山間 + 山岳道路に重点配置という 「重要路線優先設計」 の物理形が実証された。 標高最大は784 m (廿日市市吉和の国道 186 号沿い 700m 級峠)、 標高中央318 m。 これは「ライブカメラ = 平地都市部の防犯カメラ」 の常識を覆し、 「道路カメラ = 山岳重要路線のリアルタイム監視装置」という制度設計を量化。 |
| H2 雪情報 ⊂ 冬期閉鎖 5km 圏内: ≥ 70% (RQ2) |
観測 = 雪情報点 winter 5km 圏内 7/25 (28.0%) |
反証 |
H2 反証: 雪情報を持つ 25 地点 (slip + slip_camera) のうち、 L73 winter 冬期閉鎖区間 (26 区間 / 97 km) の 5km 圏内に位置するのは 7 地点 (28.0%) のみで、 70% 閾値に届かない。 これは 「雪情報範囲 ≫ 冬期閉鎖範囲」という重要な発見を意味する: 県は 冬期閉鎖 (26 区間 / 97 km) よりはるかに広い 範囲(残り 18 地点 = 72.0%) で雪情報監視を行っている。 つまり雪情報は 「冬期閉鎖の前線監視」 ではなく「冬期閉鎖されない区間の通行可否判断 + 自主的予防対策の根拠データ」として広域配置されている。 これは 「L73 winter = 自動規制 (狭い)、 L75 雪情報 = 全県凍結監視 (広い)」という2 層の冬期道路安全制度を量的に発見した — 規制発動の自動判断は 限定路線、 凍結リスク広域監視は L75 が担う制度分化。 |
| H3 L75 ⊥ L74 走行注意: L74 近接 < 30% (RQ2) |
観測 = 142 地点 L74 5km 圏内 132 (93.0%) |
反証 |
H3 反証: L75 道路カメラ 142 地点のうち L74 走行注意 (381 区間) 5km 圏内に位置するのが 132 地点 (93.0%)と、 30% 閾値を大幅に上回る。 これは「道路カメラと落石注意は独立」 という 当初仮説を反証する重要な発見である: 県の主要山岳道路では道路カメラ が L74 走行注意区間と同じ路線群に設置されている。 これは「同じ脆弱地形 = 同じ路線」 であり、 制度目的は異なる (L74 = 静的予防情報 / L75 = リアル タイム監視) が、 物理的には共通の山岳重要路線群に集中する。 つまり 「県の脆弱山岳道路網」は L74 の落石静的予防、 L75 の凍結 + 路面 動的監視、 L73 の雨量自動規制、 という 3 制度で多重に監視される。 H3 反証は「機能分化と空間集中の同時成立」 という制度設計の発見。 |
| H4 L02 ↔ L75 100m 圏一致 ≥ 70% (RQ3) |
観測 = L75 ↔ L02 100m 圏一致 131/142 (92.3%) |
強支持 |
H4 強支持: L02 (dataset 1279) の道路区分 + 広島県所管 131 台 と L75 (dataset 1260) の 142 地点を 100m 圏で照合した一致は 131/142 = 92.3%。 同じ物理カメラが両 dataset に登録される「データセット重複公開」を量的に 確認した。 L02 = 用途横断 (道路+河川+ため池+海岸+港湾) の汎用 dataset、 L75 = 道路特化 + 雪情報統合の専門 dataset で、 同じカメラを異なる属性セットで 提供する「制度的二重公開」の存在を実証。 |
| H5 L75 独自属性 ≥ 3 種 (RQ3) |
観測 = L75 独自属性 = 路線番号 + 路線名 + 標高 (設置場所内) + 表示情報 + 雪情報 = 5 種 |
強支持 |
H5 強支持: L75 が L02 に対して持つ独自属性は(1) 路線番号 (国道 186 号 / 県道 30 号 等)、 (2) 路線名 (主要地方道 矢野安浦線 等)、 (3) 標高 (設置場所列に「標高Nm」 と埋込)、 (4) 表示情報 (camera/slip/slip_camera)、 (5) 雪情報 (圧雪深・積雪深・気温・路面温度・路面状態)の 5 種。 L02 単独では「国道 186 号沿いのカメラを抽出」 や 「標高 500m 以上の山岳カメラを集計」 が不可能だが、 L75 を併用すれば これらの道路特化分析が実装可能。 L02 vs L75 の「汎用 vs 専門」 二重公開設計は、 用途別ユーザに異なる属性レベルを提供する「データ層別化」戦略の量的事例。 |
主要発見の整理
- RQ1 主発見: 県の道路カメラは142 観測地点、 国道 +
主要地方道が88.0%、 標高 ≥ 200m が
75.4% (H1 強支持)。 中山間山地に
63.4%集中し、 標高最大 784 m。
これは「重要路線優先 + 山岳重点設計」 という県の道路特化監視
ネットワーク制度を初めて系統的に記述。
- RQ2 主発見: 雪情報持ち 25 地点のうち L73 winter 5km
圏内が 7 (28.0%)
(H2 反証)。 道路カメラ全 142 地点の L74 5km 圏内が
132 (93.0%) (H3 反証)。
H2 反証 = 雪情報範囲 ≫ 冬期閉鎖範囲という重要発見:
L73 winter (26 区間 / 97 km) は限定的自動規制
路線、 L75 雪情報は全県凍結監視として広域配置される2 層の冬期
道路安全制度を量的同定した。 H3 反証 = 県の脆弱山岳路線で
多重制度監視: L75 道路カメラ (93.0%) ・ L74 走行注意
(381 区間) ・ L73 winter (冬期閉鎖) が同じ山岳重要路線群に
重畳配置される「3 制度多重監視」を発見。
- RQ3 主発見: L02 道路カメラ 131 台 と L75
142 地点の 100m 圏一致は131
(92.3%) (H4 強支持)。 L75 独自属性 = 路線番号
+ 路線名 + 標高 + 表示情報 + 雪情報 = 5 種 (H5 強支持)。 これは
「同じ物理カメラの二重公開」 + 「データ層別化」戦略の量的事例で、
汎用横断 dataset (L02) と道路特化 dataset (L75) が用途別ユーザに最適な
属性レベルを提供する設計を実証。
本記事の独自貢献
- 「道路特化監視ネットワーク」 の概念定量化: 道路カメラ + 冬期道路
情報 142 観測地点を路線種別 × 標高 × 表示情報 × 市町の
4 軸で初めて系統的に集計。 県の道路特化監視が「国道+主要地方道
88.0% × 標高 ≥ 200m 75.4% × 中山間集中
63.4%」という制度に整理されていることを実証。
- 「冬期道路安全 2 層制度」 の発見: L75 雪情報 (25 地点) と
L73 winter (26 区間 / 97 km) の 5km 圏 sjoin で
雪情報範囲 ≫ 冬期閉鎖範囲(雪情報 winter 5km 圏内 28.0%)
を発見。 「規制 (狭い自動閉鎖) + 監視 (広い凍結状態把握)」 の2 層補完
設計を量的同定。 H2 反証は「前線監視」 仮説の修正 → 「広域監視 + 限定
規制」 という新しい制度像の発見。
- 「3 制度多重監視」 概念フレームの提案: L75 動的監視 (カメラ +
雪情報) + L74 静的予防情報 (落石注意) + L73 winter 自動規制 (冬期閉鎖)
が県の脆弱山岳路線群に多重配置される構造を 5km 圏 sjoin で量化
(93.0% が L74 近接)。 H3 反証は「機能分化」 仮説の修正 →
「機能は分化しつつ空間的に集中する」 という制度設計の発見。 「重要路線
への制度集中投資」 の物理形を初めて記述。
- 「データ層別化」 戦略の事例研究: L02 (汎用 351 台) と L75
(道路特化 142 地点) の 100m 圏マッチで「同じ物理カメラの二重公開」を
量的に確認。 用途別ユーザ (一般市民 vs 道路管理者) に異なる属性レベルを
提供する制度設計を「データ層別化」 として概念化。
- L02 + L73 + L74 との横断連携 (4 dataset 統合): 道路カメラ
(L75, 1 dataset) + 県内カメラ (L02, 既扱) + 事前通行規制 winter
(L73, 既扱) + 走行注意 (L74, 既扱) の 4 dataset を sjoin で組合わせ、
県の道路情報配信制度ネットワークに道路カメラを位置付ける初の
研究。
- 「設置場所列の標高埋込」 解読パターン例示: 公開 CSV の
「設置場所」 列に「標高Nm」 形式で埋め込まれた数値を正規表現で抽出する
手法を例示。 公式属性化されない情報を実装で復元する実用パターン。
- 「N_snow.csv の cp932 エンコーディング + 列名なし形式」 解読:
ZIP 内 25 ファイルの shift JIS CSV を一括パース、 ファイル名から
観測地点 ID を抽出して結合する手法を例示。
本記事の限界
- 観測時刻の制約: 本記事の雪情報スナップショットは2026-04-01
07:50(凍結期外)。 「圧雪深 = 0 / 積雪深 = 0」 が支配的で、 冬期
(12-3 月) の凍結・圧雪・シャーベット状態の検証はできない。 真の冬期道路
情報の動態解明には連続データ取得 (~6 ヶ月分) が必要。
- カメラ画像の内容解析未実施: ~135 枚の jpg ライブ画像が含まれるが、
本記事ではメタデータ (撮影時刻 + 観測地点) のみ扱い、 画像内容の解析
(積雪検出 + 路面状態自動判定 + 通行車両カウント) は実施していない。
Computer Vision (CV) を使えば画像から路面状態を自動推論可能。
- L02 ↔ L75 マッチング閾値: 100m バッファで一致判定したが、
正確な物理カメラ同一性の確認は座標精度 + 配信時期差を考慮した
レコード ID 結合が必要。 本記事は近接性での近似一致。
- L73 winter との 5km バッファ: 5km は「同じ山岳谷 = 同じリスク
条件」 の判定に十分だが、 厳密な路線一致判定ではない。 雪情報点と
L73 winter が同じ「路線番号」 を持つかの照合は本記事では未実施。
- 路線種別の独自分類: 「国道 / 主要地方道 / 一般県道 / その他」 は
本記事の独自分類で、 公式分類ではない。 路線名先頭の文字列マッチで
判定したため、 命名揺れ (全角空白等) の影響を受ける可能性。
- 標高欠損の扱い: 設置場所列に「標高」 表記がない地点は標高欠損。
これは住所表記の揺れであり、 真の標高 0 ではない可能性がある。
DEM (国土地理院標高ラスタ) との結合で補完するのが正確。
- 因果関係不確定: 「道路カメラ設置 → 標高 + 路線種別」 の因果
関係は仮説であり、 実際の設置決定は予算 + 通行量 + 過去災害履歴 +
ドライバー要望の複合判断と推測される。 本記事の量的相関は
「結果の物理パターン」 の記述。
発展課題
発展課題 — 結果 X → 新仮説 Y → 課題 Z 形式
発展課題 1 (RQ1 拡張): 標高欠損地点の DEM 補完
- 結果 X: 本記事は標高を「設置場所」 列の文字列「標高Nm」 から正規
表現で抽出したが、 一部地点で標高表記なしの欠損が発生する可能性
(本記事観測では全 142 地点で抽出成功)。
- 新仮説 Y: DEM (国土地理院 5m メッシュ) を用いれば全 142 地点
の標高を高精度で取得可能。 CSV 抽出値との誤差中央値は 5m 未満と
推定。 大きな誤差 (>30m) を持つ地点は「設置場所表記の住所が広い範囲を
指す」 ケースで、 これらは実際のカメラ位置と住所範囲のずれを示す。
- 課題 Z: L40 標高ラスタを取得 → 142 観測地点に zonal stats →
DEM 標高 vs CSV 抽出標高 の散布図 → 誤差が大きい地点の住所表記の
実態を確認 → 「住所表記の地理学的精度マップ」を作成。
発展課題 2 (RQ1 拡張): 路線交通量との相関分析
- 結果 X: 本記事は道路カメラが国道 + 主要地方道に集中すること
(88.0%) を量化したが、 路線交通量との相関は未検証。
「交通量が多い路線ほどカメラが多い」 仮説は未確認。
- 新仮説 Y: 国道 186 号 + 国道 375 号 + 国道 433 号は交通量
上位 3 路線で、 各路線にカメラが 5+ 地点集中。 一方交通量
下位の支線県道はカメラ密度が低い。 交通量とカメラ密度の相関係数は
r > 0.6。
- 課題 Z: 国土交通省道路交通センサス (路線別 24h 交通量) を
取得 → L75 路線番号と結合 → 路線別カメラ密度 (台/km) との
相関 → 「交通量 × カメラ密度マップ」を作成。
発展課題 3 (RQ2 拡張): 冬期連続観測データでの凍結検出精度評価
- 結果 X: 本記事は雪情報の単一スナップショット (2026-04-01) のみ
で、 冬期動態は未検証。
- 新仮説 Y: 12-3 月の連続データを取得すると、 雪情報持ち 25 地点で
凍結状態 (路面状態 = 凍結 OR 圧雪) の出現頻度は地点別に大きく
異なり、 標高 ≥ 500m 地点は30% 以上の時間で凍結、 標高 200m 未満は
10% 未満と推定。
- 課題 Z: L75 雪情報 CSV を 6 ヶ月分連続取得 → 地点別 × 時刻別 ×
路面状態の 3D マトリクス → 標高別凍結頻度ヒート → 「凍結リスク
時系列マップ」を作成。 チェーン規制発動最適化の基礎データ。
発展課題 4 (RQ2 拡張): カメラ画像 CV 解析による自動路面判定
- 結果 X: 本記事は ~135 枚のカメラ画像を含むが内容解析未実施。
slip_camera 地点 (12 地点) では「路面状態の数値判定」 と
「カメラ画像の目視判定」 の両方が公開されているが、 一致性は未検証。
- 新仮説 Y: CV モデル (CNN, 例: ResNet-50) を画像で訓練すると、
slip_camera 地点の路面状態カテゴリ (乾燥/湿潤/凍結/圧雪) を 85% 以上
の精度で自動判定可能。 これは数値センサ単独より広域カバレッジが
高い (camera のみ 117 地点でも自動判定可能に)。
- 課題 Z: slip_camera 地点で「画像 + 路面状態ラベル」 の教師データ
を構築 → CNN で訓練 → camera のみ 117 地点に適用 → 「画像 CV
で全 142 地点の路面状態を推論」するシステム。 県内全域のリアルタイム
凍結監視を 6 倍に拡張可能。
発展課題 5 (RQ3 拡張): L02 用途別カメラ網の比較分析
- 結果 X: 本記事は L02 道路区分 (131 台) のみ L75 と比較
したが、 河川 (120 台) + ため池 (70 台) + 海岸 (18 台) + 港湾 (6 台)
との比較は未実施。 道路カメラと他用途カメラの空間関係は不明。
- 新仮説 Y: 道路カメラ (L02 道路 131 + L75 142) と河川
カメラ (L02 河川 120) は「橋梁・トンネル・峠」 等の地形的接続点
で物理的に近接 (100m 圏内重複 ≥ 30 件) するが、 ため池・海岸・港湾とは
独立分布。
- 課題 Z: L02 用途別カメラ間で 100m 圏 sjoin → 5 用途 × 5 用途の
重複マトリクス → 「用途別カメラ網の地形的接続構造」を可視化。
共通点 (橋梁・トンネル) を発見する地理学的研究。
発展課題 6 (展望): 道路カメラと走行データのリンク (Connected Vehicle 連携)
- 結果 X: 本記事は道路カメラの静的位置情報 + 路面状態を
扱ったが、 これらと走行車両側の動的データ(スマートフォン GPS +
Connected Vehicle CAN データ + ドライブレコーダ) の結合は本記事
スコープ外。
- 新仮説 Y: 道路カメラ 142 地点の周辺 1km 圏で取得される
走行データ (急ブレーキ + スリップ警告) は、 路面状態 = 凍結/圧雪時に
5-10 倍に増加。 これはカメラ配置の妥当性を行動データで検証可能。
- 課題 Z: 県内タクシー会社 + ドライブレコーダ提供事業者と連携 →
路面状態 × 走行データのクロス → 「カメラ配置の最適性評価」 と
「次世代カメラ追加候補地点」 提案。 ITS (高度道路交通システム)
研究への展開。
発展課題 7 (展望): SNS 走行報告との統合 — 集合知の活用
- 結果 X: 道路カメラは点配置 (142 地点) で県全域の路面状況を
間欠的に把握する。 一方、 SNS (Twitter, Yahoo 路線情報, Google Maps
レビュー) には住民・通行者からの「凍結 + 落石 + 通行注意」 の集合知が
日々蓄積されているが、 公式 dataset と連携する仕組みは未整備。
- 新仮説 Y: SNS で「凍結」 「スリップ」 「チェーン」 等のキーワードを
含む 1 ヶ月の投稿を緯度経度 sjoin すると、 道路カメラ 5km 圏内で
30-50%がカバーされる。 残り 50% は SNS 独自情報 (= カメラのない
路線・時間帯) で、 これがカメラ拡張候補。
- 課題 Z: SNS API + キーワード検索で 1 ヶ月の路面状況投稿を取得
→ 緯度経度抽出 → L75 5km 圏 sjoin → カバー率計算 → カバー外
ホットスポット同定 → 「市民集合知 × 公式カメラ網の補完地図」を
作成。 都市情報学 + Citizen Science の研究。