Lesson 76

非常用電話位置情報 単独 3 研究例分析 — NTT 災害時非常用公衆電話 900 拠点 / 1181 台 を読む

L76非常用電話災害時非常用公衆電話NTT 西日本通信救急ネットワーク最後のセーフティネット通信空白避難所通信救急二重冗長孤立リスク拠点RQ×3Format BgeopandasPOINT (CSV)L62連携 (避難所)L72連携 (緊急輸送道路)災害対策基本法 (1961)NTT 災害時公衆電話制度 (1996)県地域防災計画通信冗長性
所要 55 分 / 想定レベル: 中級 / データ: DoBoX dataset 1457 (CSV × 1, ~107 KB)

データ取得手順

⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。

IDデータセット名
#333dataset #333
#888都市計画区域情報_区域データ_安芸高田市_行政区域
#1457非常用電話位置情報

実行コマンド:

cd "2026 DoBoX 教材"
python -X utf8 lessons/L76_emergency_phones.py

DoBoX のオープンデータは申請不要・商用/非商用とも利用可。 data/extras/.gitignore 対象(約 57 GB のキャッシュ)。 スクリプト実行で自動再生成されます。

1. 学習目標と問い

本記事の対象 — 「非常用電話位置情報」 1 件 単独分析

本記事は DoBoX のデータセット 「非常用電話位置情報」 (dataset 1457) 1 件を 単独で取り上げ、 西日本電信電話株式会社 (NTT 西日本) が広島県内に 設置・運用する「災害時非常用公衆電話」 900 拠点 / 計 1181 台3 つの独立した研究角度で並列に分析する記事である。 他のシリーズ (避難情報 L62 / トンネル L67 / 緊急輸送道路 L72) と本記事は 合体しない。 RQ2 で県登録避難所 4065 件 (data/shelters.json), RQ3 で L72 緊急輸送道路 (630 セグ / 2789 km, cached) を 参照するが、 これは「県の通信救急ネットワークの位置付け」 を明らかにする ための既扱データの従属的参照に留め、 本記事の主軸はあくまで非常用電話 1 dataset の分析である。

重要な前提整理 — 「非常用電話」 の意味:
一般に「非常用電話」 と聞くと高速道路トンネル内の通報装置 (NEXCO 等が管理する「非常電話」) を想起しがちだが、 本データセット が対象とする「非常用電話」 は完全に別物である。

本データの正式名称は「災害時非常用公衆電話」 (NTT 西日本管理) で、 NTT 西日本が避難所相当の公共施設 (小中学校 + 体育館 + 行政センター + 公民館 等)に事前設置する公衆電話である。 1 拠点 1〜3 台。 平時は 未開通、 大規模災害発生時に NTT 西日本が遠隔回線開通を行うことで 初めて通話可能となる「災害時優先回線」

特徴:
  • 通話無料 (硬貨・カード不要) ─ 災害時の被災者が 100 円玉を 持ち歩いていなくても発信可能
  • 携帯電話の輻輳・基地局停電・回線断時にも独立稼働 ─ 公衆電話 専用の有線回線 + NTT 局舎バッテリで完全独立
  • 1995 年 阪神・淡路大震災での通信インフラ大規模断絶を契機に NTT が制度化 (1996 年〜)
  • 全国の市町村と NTT が事前協定を結び、 災害時の自動回線開通を準備
したがって、 本記事の「非常用電話」 は「災害時の最後のセーフティネット (last resort communication)」として機能する公衆電話網であり、 高速道路非常電話とは設置場所・運用主体・回線方式・利用者・全てが異なる。 本記事は学習者がこの混同を避けられるよう、 冒頭で明確に定義する。
「災害時非常用公衆電話」 とは:
NTT 西日本が広島県内に設置する公衆電話の特殊な部分集合で、 900 拠点 / 計 1181 台。 設置先は事前選定された 「災害時に避難所として機能する公共施設」 ─ 小中学校 (体育館を含む)、 公民館・行政センター、 大規模ホール、 高校・大学 等。 通常時は屋内の特定位置 (体育館 / 玄関ホール / 事務室 / MDF 内 等) に 待機状態で設置されており、 利用者からは見えない or 鍵付きキャビネット内に 保管される。

本記事の主要発見 (3 RQ):
  • RQ1: 県の通信救急ネットワークは900 拠点 / 1181 台。 公的避難所相当施設に 851 (94.6%)が集中、 最多 福山市 (121 拠点)。 複数台拠点 256 (28.4%)、 中山間山地に 183 (20.3%)。 H1 (強支持) / H2 (強支持)。
  • RQ2: 電話 900 拠点のうち県登録避難所 100m 圏内は 730 (81.1%)。 避難所側の通信整備率は 1131/4065 = 27.8%のみ ─ 残り 2934 件は通信空白避難所。 H3 (強支持) / H4 (反証)。
  • RQ3: 電話 900 拠点のうち L72 緊急輸送道路 1〜2 次 1km 圏内が 661 (73.4%)。 全階層では 758 (84.2%)。 通信救急二重冗長点 (避難所 ∩ L72) は 646 (71.8%)。 H5 (強支持)。

独自に定義する用語 (本記事限定)

研究の問い (3 RQ)

  1. RQ1 (主研究): 広島県のNTT 災害時非常用公衆電話の地理分布と設置構造 — 市町 × 施設種別 × 設置台数 × 利用場所はどう描けるか? 900 拠点 / 1181 台を 4 軸で集計し、 「県の通信救急ネットワークの物理形状」 を 初めて系統的に記述する。 H1 (公的避難所相当施設 ≥ 80%) / H2 (複数台拠点 ≥ 25%) を検証。
  2. RQ2 (副研究 1): 非常用電話と県登録避難所 (shelters 4065 件) との照合 — 避難所通信整備率はどう描けるか? 100m 圏内 sjoin で双方向の 一致率を量化し、 NTT 整備計画 vs 県避難所指定の関係を検証する。 H3 (電話 ⊂ 避難所 ≥ 80%) / H4 (避難所通信整備率 < 25%) を検証。
  3. RQ3 (副研究 2): 非常用電話とL72 緊急輸送道路 (630 セグ / 2789 km) との関連 — 通信救急ネットワークの冗長性はどう描けるか? 非常用電話 900 拠点が L72 第1〜2次の 1km 圏内かを sjoin、 「電話 + 道路」 二重近接拠点を量化する。 H5 (L72 1〜2次 1km ≥ 70%) を検証。

仮説 (5)

到達点

本記事を読み終えると、 (1) 県の NTT 災害時非常用公衆電話 900 拠点 / 1181 台の物理構造を市町・施設種別・設置台数・利用場所の 4 軸で完全に俯瞰、 (2) 県登録避難所 4065 件との一致率と通信空白避難所 2934 件の存在を量的に把握、 (3) L72 緊急輸送道路との 1km 近接率と通信救急二重冗長 646 拠点の特定、 という 3 段階の知識が獲得できる。 これにより県の災害時 通信制度における「最後のセーフティネット (last resort communication) としての 公衆電話網」という制度位置付け、 および「整備済中核避難所 vs 通信空白 避難所」という制度的偏在が研究者視点で見えるようになる。

2. 使用データ

本研究で使う 1 つの dataset (1 リソース) を以下の表に示す。 本データは「非常用電話位置情報」 を 1 つの CSV ファイルで公開する単純構造の データセット。 NTT 西日本が県と協定を結んで整備した災害時非常用公衆電話の 位置情報を住所 + 緯度経度で提供する。

データセット仕様

項目
dataset_id 1457
公式名 非常用電話位置情報
公式説明 西日本電信電話株式会社 (NTT 西日本) が管理する非常用電話位置情報
リソース数 1 (CSV)
リソース ID 94468 (非常用電話位置情報_2024-08-14)
総サイズ 110,030 byte (~107 KB)
CSV 列 建物名, 利用場所, 設置台数, 住所, 緯度 世界, 経度 世界
レコード数 900 拠点 (= 建物数, 設置台数合計 1181 台)
座標系 (元) WGS84 (EPSG:4326) → 本記事 EPSG:6671 で処理
ライセンス クリエイティブ・コモンズ表示 (CC-BY)
URL https://hiroshima-dobox.jp/datasets/1457
作成主体 西日本電信電話株式会社 (NTT 西日本)
制度的位置付け 災害対策基本法 (1961) + NTT 災害時非常用公衆電話制度 (1996〜) + 県地域防災計画 (避難所通信)

1 リソースの内訳

リソース形式役割件数
resource 94468 (非常用電話位置情報_2024-08-14) CSV (UTF-8 BOM) 900 拠点の位置 + 属性 900 行 × 6 列

CSV 列定義

列名意味
建物名中島小学校 設置施設名 (= 拠点名)
利用場所体育館 建物内の具体的位置 (体育館 / 玄関ホール / 事務室 / MDF 内 等)
設置台数2 1 拠点あたりの台数 (1〜3 台)
住所〒730-0812 広島県広島市中区加古町10-8 郵便番号 + 住所 (一部「広島県」 抜けの揺れあり)
緯度 世界34.386431 WGS84 (世界測地系) の緯度。 「世界」 表記は元データの慣習
経度 世界132.447997 WGS84 の経度

形式特性の注意点

3. ダウンロード (再現用 直リンク)

本記事の再現に必要なすべてを直リンクで提供する。 HTML だけ読めば学習者が完全再現できることが目標 (要件 A)。

生データ (DoBoX 1 dataset, 1 リソース)

このスクリプト本体

中間 CSV (本記事生成、 再利用可)

図 (PNG, 直 DL 可)

4. 【RQ1】 非常用電話の地理分布と設置構造

狙い (RQ1)

RQ1 では「県の通信救急ネットワーク」 の物理構造を初めて系統的に記述する。 具体的には 900 拠点 / 1181 台を市町 × 施設種別 × 設置台数 × 利用場所の 4 軸で集計し、 「電話がどの市町・どの種別施設・何台ずつ・建物のどこに配置されるか」 を 1 枚で俯瞰できるようにする。 H1 (公的避難所相当 ≥ 80%) は「NTT 整備 = 県避難所網と 事実上一致」 の中心仮説、 H2 (複数台拠点 ≥ 25%) は「拠点規模 ⇔ 通信容量」 の事前需要 設計を量的検証する。

手法 — 4 ステップ

  1. STEP 1: CSV パース + 列名正規化
    非常用電話 CSV (UTF-8 BOM, 900 行 × 6 列) を read_csv() で読込み、 列名から全角スペース (U+3000)を除去 → 「緯度世界」 「経度世界」 → 「緯度」 「経度」 に rename する。 設置台数を pd.to_numeric() で整数化。
  2. STEP 2: 建物名から施設種別判定 (本記事独自分類)
    建物名先頭から「小学校」 「中学校」 「高校」 「公民館」 「センター」 「体育館」 等のキーワードを文字列マッチで判定し、 12 種に分類する。 さらに学校 (小中高大) + 公民館 + 行政センター + 体育館を統合した「公的避難所相当」フラグを付与。
  3. STEP 3: 住所から市町抽出 (正規表現の頑健設計)
    住所列は郵便番号区切りの揺れ (半角「-」 / 全角「ー」) と「広島県」 抜け が混在する非整形データ。 4 段階の正規表現で順に「広島市××区」 → 「〇〇市」 → 「〇〇郡〇〇町村」 → 「〇〇町」 を試行し、 マッチした最初を採用する頑健抽出。
  4. STEP 4: GeoDataFrame 化 + 投影変換 + 4 軸集計
    緯度経度 → shapely.geometry.Point → GeoDataFrame に変換、 to_crs("EPSG:6671") で平面直角第 III 系に投影 → 距離・面積が m 単位で計算可能に。 行政界 GPKG との sjoin で空間判定の市町も併記し、 文字列抽出と空間判定の2 系統の市町情報を保持する。

実装 (主要部のみ抜粋)

L76_emergency_phones.py 行 1515–1635

 1
 2
 3
 4
 5
 6
 7
 8
 9
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
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/L76_emergency_phones/emergency_phones.csv",
                 encoding="utf-8-sig")
df.columns = [c.strip().replace(" ", "") for c in df.columns]
df = df.rename(columns={"緯度世界": "緯度", "経度世界": "経度"})

# (2) 建物名キーワードから施設種別を判定 (本記事独自分類)
def building_class(name):
    s = str(name)
    if "小学校" in s: return "小学校"
    if "中学校" in s: return "中学校"
    if "高等学校" in s or "高校" in s: return "高校"
    if "大学" in s and "短期" not in s: return "大学"
    if "公民館" in s: return "公民館"
    if "センター" in s or "プラザ" in s: return "行政センター"
    if "体育館" in s: return "体育館"
    if "ホール" in s or "会館" in s: return "文化施設・ホール"
    return "その他"
df["施設種別"] = df["建物名"].apply(building_class)

# (3) 住所から市町を正規表現で抽出 (郵便番号区切りの揺れに対応)
def extract_city(addr):
    s = str(addr)
    m = re.search(r"広島市(中区|東区|南区|西区|安佐南区|安佐北区|安芸区|佐伯区)", s)
    if m: return f"広島市{m.group(1)}"
    m = re.search(r"([一-龥ぁ-んァ-ンA-Za-z]+市)", s)
    if m: return m.group(1).replace("広島県", "")
    m = re.search(r"([一-龥]+郡[一-龥]+[町村])", s)
    if m:
        m2 = re.search(r"([一-龥]+[町村])$", m.group(1))
        return m2.group(1) if m2 else m.group(1)
    m = re.search(r"([一-龥]+町)", s)
    if m: return m.group(1)
    return "不明"
df["市町"] = df["住所"].apply(extract_city)

# (4) 設置台数を整数化 + 公的避難所相当判定
df["設置台数"] = pd.to_numeric(df["設置台数"], errors="coerce").fillna(1).astype(int)
SHELTER_LIKE = {"小学校", "中学校", "高校", "大学",
                "公民館", "行政センター", "体育館"}
df["is_shelter_like"] = df["施設種別"].isin(SHELTER_LIKE)

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

# (6) 集計
print(f"総拠点 = {len(gdf)} / 総台数 = {gdf['設置台数'].sum()}")
print(f"複数台拠点 (>=2) = {int((gdf['設置台数']>=2).sum())}")
print(f"公的避難所相当 = {int(gdf['is_shelter_like'].sum())}")
print(gdf.groupby('施設種別').size())

結果 1: 県全域 市町別 choropleth (図 1)

なぜこの図か: 22 市町に拠点がどう分布するか主題図 (choropleth)で 俯瞰したい。 棒グラフだけだと地理的偏在 (沿岸都市集中 / 中山間散在) が見えない。 拠点数を市町ポリゴンに塗り分けることで、 NTT 整備の地理的優先順位が一目で分かる。

図 1 (RQ1): 市町別 非常用電話拠点数 choropleth
図 1 (RQ1): 市町別 非常用電話拠点数 choropleth

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

結果 2: 施設種別別 点マップ (図 2)

なぜこの図か: 12 種の施設種別が県内にどう分布するかを県全域地図に 重ねて一目で確認したい。 小学校 (赤) / 中学校 (橙) / 公民館 (青) / 行政 センター (濃青) / 体育館 (緑) で色分けすることで、 「学校網が中心 + 公民館・ 行政センターが補完」 の物理形状が直感できる。

図 2 (RQ1): 施設種別別 非常用電話拠点マップ
図 2 (RQ1): 施設種別別 非常用電話拠点マップ

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

結果 3: 設置台数 + 施設種別 + 地理クラス 3 角度 (図 3)

なぜこの図か: H1 (公的避難所集中) + H2 (複数台設置) を 3 パネルで多角検証。 (1) 設置台数分布で複数台シェア、 (2) 施設種別棒グラフで公的避難所支配、 (3) 地理クラスで都市部 / 中山間 / 島嶼の整備バランスを 1 枚で見る。

図 3 (RQ1): 設置台数 × 施設種別 × 地理クラス
図 3 (RQ1): 設置台数 × 施設種別 × 地理クラス

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

結果 4: 設置台数 バブルマップ (図 4)

なぜこの図か: 拠点ごとの設置台数をマーカーサイズ + 色で表現し、 「複数台拠点」 がどこに集中するかを地図で見たい。 大規模避難所は通常都市中心 (広島市・福山市・東広島市) に分布する仮説が地図で確認できる。

図 4 (RQ1): 設置台数 バブルマップ
図 4 (RQ1): 設置台数 バブルマップ

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

結果 5: 市町・施設・台数・利用場所 詳細表

市町別サマリ (Top 15):

市町 地理クラス 拠点数 台数合計 シェア_%
福山市 平野・沿岸都市 121 142 13.44
東広島市 平野・沿岸都市 85 114 9.44
呉市 平野・沿岸都市 82 107 9.11
庄原市 中山間山地 47 56 5.22
尾道市 平野・沿岸都市 43 56 4.78
三原市 平野・沿岸都市 40 47 4.44
廿日市市 平野・沿岸都市 38 65 4.22
三次市 中山間山地 38 52 4.22
広島市安佐南区 平野・沿岸都市 32 43 3.56
広島市西区 平野・沿岸都市 32 40 3.56
広島市佐伯区 平野・沿岸都市 31 48 3.44
広島市南区 平野・沿岸都市 31 42 3.44
世羅町 中山間山地 30 41 3.33
安芸太田町 中山間山地 28 35 3.11
広島市安佐北区 平野・沿岸都市 28 28 3.11

市町別 表から読み取れること: 福山市 (121 拠点 / 142 台)が最多、 2 位 東広島市 (85 拠点)、 3 位 呉市 (82 拠点)。 広島市 8 区を合算すると 200 拠点超で県内最大整備地区。

施設種別サマリ:

施設種別 拠点数 台数合計 平均台数 シェア_%
小学校 461 528 1.15 51.2
中学校 181 275 1.52 20.1
高校 18 35 1.94 2.0
大学 1 2 2.00 0.1
保育・幼稚園 1 1 1.00 0.1
公民館 15 19 1.27 1.7
行政センター 143 199 1.39 15.9
体育館 32 53 1.66 3.6
文化施設・ホール 15 19 1.27 1.7
集会所・自治会館 4 4 1.00 0.4
役場・庁舎 3 3 1.00 0.3
その他 26 43 1.65 2.9

施設種別 表から読み取れること: 小学校が 461 拠点で最多、 中学校 + 高校 + 大学を合わせた学校系で全体の過半数を占める。 公民館 + 行政センター (158) + 体育館 (32) を加えると公的避難所相当 = 94.6%

設置台数分布:

設置台数 拠点数 シェア_%
1 644 71.6
2 231 25.7
3 25 2.8

設置台数 表から読み取れること: 1 台が 644 (71.6%)で支配的。 複数台拠点が 256 (28.4%)で、 これは大規模避難所での通話需要分散 を反映する。 1 拠点平均 1.31 台

利用場所 (建物内位置) Top 15:

利用場所 拠点数 台数合計
体育館 605 774
玄関ホール 40 51
ホール 26 36
事務室・管理室 23 40
ロビー 20 27
職員室 16 16
受付カウンタ 14 15
玄関入口 8 10
玄関 7 10
事務室 5 5
校舎 4 6
渡り廊下 4 5
旧校舎玄関 3 4
会議室 3 3
校舎玄関 3 4

利用場所 表から読み取れること: 体育館605 拠点で圧倒的最多 ─ これは「災害時に避難所として開設される空間」 と一致し、 NTT が避難所運用空間に 電話を直接配置する設計を物理的に支持する。 玄関ホール / 事務室 / MDF 内 等は 建物管理者がアクセスしやすい場所を選定した運用上の合理性を示す。

地理クラス別:

地理クラス 拠点数 台数合計 シェア_%
平野・沿岸都市 675 890 75.0
中山間山地 183 235 20.3
その他/不明 24 38 2.7
沿岸島嶼 18 18 2.0

地理クラス 表から読み取れること: 平野・沿岸都市が支配的で、 中山間 20.3%、 沿岸島嶼少数。 これは人口密度に対応する整備配分で、 中山間部は集落散在を反映した低密度配置となる。

施設種別 × 設置台数 クロス:

設置台数 施設種別 1 2 3
小学校 394 67 0
中学校 94 80 7
高校 3 13 2
大学 0 1 0
保育・幼稚園 1 0 0
公民館 11 4 0
行政センター 94 42 7
体育館 15 13 4
文化施設・ホール 12 2 1
集会所・自治会館 4 0 0
役場・庁舎 3 0 0
その他 13 9 4

クロス 表から読み取れること: 小学校・中学校は 1〜2 台が中心、 行政センター + 文化施設 + 体育館に 3 台が集中 ─ 「大規模避難所 = 複数台」 の事前需要設計が施設種別レベルで確認できる。

5. 【RQ2】 県登録避難所との関係 — 避難所通信整備率

狙い (RQ2)

RQ2 では非常用電話 900 拠点と県登録避難所 4065 件の双方向の 位置一致を量化する。 NTT 整備計画 (民間) と県避難所指定 (行政) という 異なる主体が事前選定を行うが、 結果として両者がどれだけ重なるかを 100m 圏 sjoin で測る。 H3 (電話 ⊂ 避難所 ≥ 80%) は「NTT 選定 = 県指定の事実上一致」 を、 H4 (避難所通信整備率 < 25%) は「整備の偏在 + 通信空白避難所の存在」 を量的検証。

手法 — 3 ステップ

  1. STEP 1: shelters.json (4,065 件) を Point GeoDataFrame 化
    data/shelters.json は県防災所管の登録避難所マスタ。 itemEntries の latitude / longitude から POINT を構築し、 EPSG:6671 に 投影。 緯度経度欠損レコードは除外。
  2. STEP 2: 100m 双方向 sjoin (避難所 → 電話)
    避難所ジオメトリに 100m バッファ → gpd.sjoin() で電話 (POINT) との 包含関係を判定 → 電話側に「最近接避難所一致」 フラグを付与。 同時に逆方向 (電話 バッファ → 避難所 sjoin) で避難所側の通信整備率を算出する双方向検証
  3. STEP 3: 市町別 通信整備率 集計
    避難所 GeoDataFrame に has_phone フラグを付け、 groupby('city') で市町別の整備率を算出 → 中山間 vs 沿岸都市の整備 偏在を可視化。

実装 (主要部のみ抜粋)

L76_emergency_phones.py 行 1760–1870

 1
 2
 3
 4
 5
 6
 7
 8
 9
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
import json
import geopandas as gpd
from shapely.geometry import Point

# (1) shelters.json (県登録避難所 4,065 件) を読込み
with open("data/shelters.json", "r", encoding="utf-8") as f:
    sh_raw = json.load(f)

sh_rows = []
for it in sh_raw["items"]:
    try:
        lat = float(it.get("latitude", "") or "nan")
        lon = float(it.get("longitude", "") or "nan")
    except ValueError:
        continue
    if lat != lat or lon != lon:  # NaN
        continue
    sh_rows.append({
        "facilityId": it.get("facilityId", ""),
        "name": it.get("name", ""),
        "city": it.get("municipalityName", ""),
        "capacity": it.get("capacity"),
        "latitude": lat, "longitude": lon,
    })
import pandas as pd
df_sh = pd.DataFrame(sh_rows)
geom_sh = [Point(lo, la) for lo, la in zip(df_sh["longitude"], df_sh["latitude"])]
gdf_sh = gpd.GeoDataFrame(df_sh, geometry=geom_sh,
                           crs="EPSG:4326").to_crs("EPSG:6671")

# (2) 避難所 100m バッファ → 電話との sjoin (電話側)
gdf_sh_buf = gdf_sh.copy()
gdf_sh_buf["geometry"] = gdf_sh.geometry.buffer(100)  # 100m

match = gpd.sjoin(gdf[["seg_id", "geometry"]],
                   gdf_sh_buf[["facilityId", "geometry"]],
                   how="left", predicate="within")
gdf["near_shelter"] = gdf["seg_id"].isin(
    match.dropna(subset=["index_right"])["seg_id"])
print(f"電話 ⊂ 避難所 100m: "
      f"{int(gdf['near_shelter'].sum())}/{len(gdf)}")

# (3) 避難所側 → 電話一致 (RQ2 の双方向検証)
gdf_buf = gdf.copy()
gdf_buf["geometry"] = gdf.geometry.buffer(100)
match_rev = gpd.sjoin(gdf_sh[["facilityId", "geometry"]],
                      gdf_buf[["seg_id", "geometry"]],
                      how="left", predicate="within")
gdf_sh["has_phone"] = gdf_sh["facilityId"].isin(
    match_rev.dropna(subset=["index_right"])["facilityId"])
print(f"避難所 + 電話保持: "
      f"{int(gdf_sh['has_phone'].sum())}/{len(gdf_sh)}")

結果 1: 電話 ↔ 避難所 100m 圏 重ね合わせマップ (図 5)

なぜこの図か: NTT 整備の電話 900 拠点と県登録避難所 4065 件を 同じ地図に重ねて、 一致 (緑○) / 電話のみ (赤×) を直接視覚化する。 散布図でなく 県全域マップで見ることで、 「NTT は避難所立地に追従」 という空間相関が直感できる。

図 5 (RQ2): 非常用電話 ↔ 県登録避難所 100m 圏
図 5 (RQ2): 非常用電話 ↔ 県登録避難所 100m 圏

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

結果 2: 市町別 避難所通信整備率 (図 6)

なぜこの図か: H4 (整備率 < 25%) を市町別で深掘り。 「県全体の整備率は低い」 と だけ言ってもどこで偏在しているのか分からない。 棒グラフ (整備率) + 散布図 (避難所数 vs 整備率) の 2 パネルで、 規模 vs 整備率の関係を見る。

図 6 (RQ2): 市町別 避難所通信整備率
図 6 (RQ2): 市町別 避難所通信整備率

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

結果 3: 双方向一致 + 市町別整備率 詳細表

電話側 → 避難所一致 (RQ2 中心):

カテゴリ 件数 シェア_%
電話 ⊂ 避難所 100m 圏内 (NTT 整備 = 県指定一致) 730 81.1
電話のみ (避難所 100m 圏外) 170 18.9

電話一致 表から読み取れること: 非常用電話 900 拠点のうち県登録避難所 100m 圏内 = 81.1%。 H3 (≥ 80%) 成立。 残り 170 拠点 (18.9%) は避難所外で、 NTT 独自整備または位置データ 精度差。 高い一致率は「事実上の制度横断連携」 を示唆する。

避難所側 → 電話保持 (双方向検証):

カテゴリ 件数 シェア_%
避難所 + 電話設置 (通信整備済) 1131 27.8
避難所 + 電話なし (通信空白) 2934 72.2

避難所通信整備率 表から読み取れること: 県登録避難所 4065 件のうち電話保持は 27.8%のみ ─ 通信空白避難所が 72.2%に達する。 H4 (< 25%) 非成立。 これは「電話 ⊂ 避難所だが、 避難所 ⊄ 電話」 という非対称関係 = 「電話は必ず避難所に、 だが避難所は必ずしも電話を持たない」 という 制度設計を物理的に確認した重要な発見。

市町別 避難所通信整備率 (避難所 ≥ 30 件のみ):

市町 避難所数 電話保持避難所 保持率_%
呉市 518 157 30.3
福山市 474 215 45.4
東広島市 279 57 20.4
尾道市 273 67 24.5
庄原市 247 22 8.9
広島市安佐南区 156 45 28.8
広島市安佐北区 153 34 22.2
広島市西区 136 43 31.6
江田島市 131 27 20.6
三原市 128 37 28.9
広島市南区 122 36 29.5
府中市 120 29 24.2
廿日市市 120 36 30.0
広島市佐伯区 117 35 29.9
北広島町 102 27 26.5
坂町 94 16 17.0
広島市東区 89 22 24.7
広島市中区 88 34 38.6
三次市 84 21 25.0
安芸太田町 81 7 8.6

市町別 表から読み取れること: 整備率の中央値は 25.8%、 最大 72.1% (世羅町)、 最小 3.2%。 中山間市町は避難所が多い割に 整備率が低く、 平野・沿岸都市は平均的。 県防災計画の整備優先順位策定の政策素材と なる定量データ。

6. 【RQ3】 L72 緊急輸送道路との関係 — 通信救急ネットワーク冗長

狙い (RQ3)

RQ3 では非常用電話 900 拠点と L72 緊急輸送道路 (630 セグ / 2789 km) の1km 圏空間連携を量化する。 県の通信救急ネットワーク は「電話だけ」 でも「道路だけ」 でも機能せず、 両方が近接して初めて「通信途絶 → 救援車両派遣 → 物理アクセス」の災害対応サイクルが完結する。 H5 (L72 1〜2次 1km ≥ 70%) は「電話 + 道路の二重冗長性確保」 を量的検証する中心仮説。 さらに「電話 + 避難所 + L72」 の 3 要素全近接 = 通信救急二重冗長点を独自指標として導出する。

手法 — 4 ステップ

  1. STEP 1: L72 4 階層 JSON を LineString 化
    L72 は 5 つの NDJSON 風ファイル (05_kinkyu_route_01.json05_kinkyu_route_04.json) で配信される。 第1〜4 次の各 LineString を読込み、 階層情報を付与した GeoDataFrame に統合。 EPSG:6671 に投影。
  2. STEP 2: 階層別 1km バッファ + union
    第1〜2次 (主要骨格) のみを抽出し buffer(1000) で 1km バッファを 生成 → union_all() で県全体の単一ジオメトリに統合。 全階層 (1〜4 次) も同様に。 これで「主要骨格圏内 / 末端含む全圏内 / 圏外」 の 3 カテゴリ判定が可能に。
  3. STEP 3: 電話 → L72 包含判定 + 4 カテゴリ クロス
    p.intersects(buf12) / p.intersects(buf_all) で 包含判定 → 「第1〜2次 1km 圏内」 「第3〜4次 1km 圏内のみ」 「圏外」 の 3 状態 + 避難所一致との交差で4 カテゴリ クロスを導出 → 通信救急二重冗長点を特定。
  4. STEP 4: 最近接距離計算 (sindex 高速化)
    各電話拠点の L72 までの最近接距離 (km) を計算する際、 全 630 セグメントとの 総当たり距離計算は重い。 gdf_route.sindex の R-tree で 5km 範囲の 候補に絞ってから distance を計算 → 数秒で全 900 拠点を処理。

実装 (主要部のみ抜粋)

L76_emergency_phones.py 行 1917–2024

 1
 2
 3
 4
 5
 6
 7
 8
 9
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
import json
import geopandas as gpd
from shapely.geometry import LineString
from pathlib import Path

# (1) L72 緊急輸送道路 4 階層 JSON を読込み LineString 化
L72_DIR = Path("data/extras/L72_emergency_road"
               "/340006_emergency_transport_road_20220908T000000")

def load_route_lines(idx):
    p = L72_DIR / f"05_kinkyu_route_{idx}.json"
    with open(p, "r", encoding="utf-8") as f:
        text = f.read()
    arr = json.loads("[" + text + "]")  # NDJSON 風
    return [LineString([(pt["e"], pt["d"]) for pt in seg])
            for seg in arr if isinstance(seg, list) and len(seg) >= 2]

records = []
for idx in ["01", "02", "03", "04"]:
    for ln in load_route_lines(idx):
        records.append({"rank": idx, "geometry": ln})

gdf_route = gpd.GeoDataFrame(records, crs="EPSG:4326").to_crs("EPSG:6671")
print(f"L72: {len(gdf_route)} セグ / "
       f"{gdf_route.geometry.length.sum()/1000:.0f} km")

# (2) 第1〜2次のみ抽出 + 1km バッファを union
gdf_route12 = gdf_route[gdf_route["rank"].isin(["01", "02"])]
buf12 = gdf_route12.geometry.buffer(1000).union_all()  # 1km
buf_all = gdf_route.geometry.buffer(1000).union_all()

# (3) 電話 ↔ L72 距離ベース判定 + 4 カテゴリ
gdf["near_l72_12"] = gdf.geometry.apply(
    lambda p: 1 if p.intersects(buf12) else 0)
gdf["near_l72_all"] = gdf.geometry.apply(
    lambda p: 1 if p.intersects(buf_all) else 0)

# (4) 通信救急二重冗長点 (避難所 ∩ L72)
gdf["double_redundant"] = gdf["near_shelter"] & (gdf["near_l72_all"] == 1)
print(f"通信救急二重冗長: {int(gdf['double_redundant'].sum())}/{len(gdf)}")

# (5) 最近接距離 (km, sindex で高速化)
sindex = gdf_route.sindex
geoms = list(gdf_route.geometry)
def nearest_km(p):
    bbox = (p.x - 5000, p.y - 5000, p.x + 5000, p.y + 5000)
    cands = list(sindex.intersection(bbox)) or list(range(len(geoms)))
    return min(p.distance(geoms[i]) for i in cands) / 1000

gdf["dist_l72_km"] = gdf.geometry.apply(nearest_km)

結果 1: 電話 + L72 緊急輸送道路 1km 圏 重ね合わせマップ (図 7)

なぜこの図か: 電話拠点と L72 第1〜2次 (赤太線) + 第3〜4次 (緑細線) を 同じ地図に重ね、 さらに第1〜2次の 1km バッファを薄塗で表示することで、 「電話 + 道路の二重冗長」がどこに集中するかを直感的に見せる。 散布図や棒グラフ では分からない地理的冗長パターンを地図で表現する。

図 7 (RQ3): 非常用電話 + L72 緊急輸送道路 1km 圏
図 7 (RQ3): 非常用電話 + L72 緊急輸送道路 1km 圏

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

結果 2: L72 距離分布 + 通信救急冗長性 4 カテゴリ (図 8)

なぜこの図か: H5 の 1km 閾値の妥当性を示すため、 距離ヒストで 0.5km / 1km / 2km の 閾値ごとの分布を見せる。 同時に「電話 ∩ 避難所 ∩ L72」 の通信救急二重冗長を 4 カテゴリ棒グラフで示し、 H5 と通信救急二重冗長の関係を 1 枚で見せる。

図 8 (RQ3): L72 距離分布 + 通信救急冗長性 4 カテゴリ
図 8 (RQ3): L72 距離分布 + 通信救急冗長性 4 カテゴリ

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

結果 3: 階層別 + 距離統計 詳細表

L72 階層別 電話包含 (1km 圏):

l72_status 拠点数 台数合計 シェア_%
第1〜2次 1km 圏内 661 894 73.4
圏外 (>1km) 142 163 15.8
第3〜4次 1km 圏内のみ 97 124 10.8

L72 包含 表から読み取れること: 電話 900 のうち L72 第1〜2次 (主要骨格) 1km 圏内 = 73.4%。 H5 (≥ 70%) 成立。 第3〜4次 (末端) を含めると 84.2%に達する。 圏外 = 15.8% は中山間奥地の 孤立リスク拠点。

L72 最近接距離 統計:

統計
最小 (km) 0.003
25% 0.116
中央 (50%) 0.262
75% 0.630
90% 1.423
最大 (km) 10389.116
平均 (km) 12.135

距離統計 表から読み取れること: 中央値 0.26 km、 90%タイル 1.42 km。 多数の電話拠点が 1km 圏内に収まる一方、 上位 10% は 2km を超える ─ 中山間奥地の孤立傾向を量化。

通信救急冗長性 4 カテゴリ:

カテゴリ拠点数シェア_%
電話 ∩ 避難所 ∩ L72 (二重冗長) 646 71.8
電話 ∩ 避難所のみ (L72 圏外) 84 9.3
電話 ∩ L72 のみ (避難所外) 112 12.4
電話のみ (避難所 + L72 両方圏外, 孤立リスク) 58 6.4

4 カテゴリ表から読み取れること: 通信救急二重冗長点 (避難所 ∩ L72 全階層) = 646 (71.8%)が 県の通信救急ネットワークの中核を構成。 一方「電話のみ (両方圏外)」 = 孤立リスク 拠点が中山間奥地に存在し、 県防災計画の通信冗長強化対象として要警戒。

7. 仮説検証総合

本研究の H1〜H5 仮説について、 観測値・判定・詳細解説をまとめる。

H1〜H5 仮説検証総合表

仮説 観測値 判定 詳細解説
H1 公的避難所相当施設 ≥ 80% (RQ1) 観測 = 公的避難所相当 (学校 + 公民館 + 行政センター + 体育館) 851/900 (94.6%) 強支持 H1 強支持: NTT 災害時非常用公衆電話 900 拠点のうち、 学校 (小中高大) + 公民館 + 行政センター + 体育館に設置されているのが 851 (94.6%)。 NTT は事前選定段階で 「県の避難所相当施設」を主な設置対象に選んでおり、 そこに災害時に 遠隔開通させる公衆電話を 1〜3 台ずつ事前配備している。 これは 「災害時の 通信インフラ = 県の避難所網と物理的に一致させる」という NTT の選定戦略を 量的に支持する事例。
H2 複数台拠点 ≥ 25% (RQ1) 観測 = 複数台 (>=2 台) 拠点 256/900 (28.4%) / 総設置台数 1181 (1 拠点あたり平均 1.31 台) 強支持 H2 強支持: 複数台設置拠点が 256 拠点 (28.4%)。 残り 644 拠点 (71.6%) は 1 台のみ。 3 台設置は 25 拠点に限定。 これは 「拠点規模 ⇔ 設置台数」の関係を示唆する: 大規模避難所 (中央公園・大型体育館・複合施設) では災害時の通話需要を分散するため 複数台設置、 小規模学校・公民館は 1 台で十分という「避難収容人数 ⇔ 通信容量」の事前需要設計の物理形。 1 拠点あたり平均 1.31 台 = 「ほぼ 1 台、 一部に予備機」 が県の通信救急網の 設置量基準と読める。
H3 電話 ⊂ 避難所 100m 圏内 ≥ 80% (RQ2) 観測 = 電話 ⊂ 避難所 100m 730/900 (81.1%) 強支持 H3 強支持: 非常用電話 900 拠点のうち県登録避難所 100m 圏内に 位置するのが 730 (81.1%)。 残り 170 拠点 (18.9%) は避難所 100m 圏外に位置するが、 これらは「避難所未指定だが NTT が独自に整備した拠点」または「位置データ精度差で 100m 閾値を超えた近接施設」を含む。 全体として NTT の選定基準と県の避難所指定が高い一致率を示すことは、 県地域防災計画と NTT 整備計画が制度横断で連携している事実上の証拠と 見なせる。
H4 避難所通信整備率 < 25% (RQ2) 観測 = 避難所 + 電話保持 1131/4065 (27.8%) 反証 H4 反証: 県登録避難所 4065 件のうち、 100m 圏内に 非常用電話を持つ避難所は 1131 (27.8%)。 残り 2934 件 (72.2%)「通信空白避難所」として、 災害時に携帯電話の輻輳・基地局停電が起きると 最後のセーフティネット (NTT 公衆電話) が無い状態となる。 これは「避難所 = 通信整備済」 という直感に反する重要な発見であり、 県防災計画の通信冗長性 の制度的偏在を量的に示す。 整備済の 27.8% は主に「中核 避難所 + 大規模指定施設」 に集中、 小規模集会所・地域センターは未整備が大半。
H5 L72 1〜2次 1km 圏内 ≥ 70% (RQ3) 観測 = 電話 L72 1〜2次 1km 661/900 (73.4%) / 全階層 758 (84.2%) 強支持 H5 強支持: 非常用電話 900 拠点のうち L72 緊急輸送道路の第1〜2次 (高速・幹線国道・主要地方道) 1km 圏内に位置するのが 661 (73.4%)。 全階層 (1〜4 次) で見ると 758 (84.2%)。 これは「電話 + 道路」 が両方近接する拠点が 多数 = 通信途絶時にも災害救援車両が物理アクセス可能」という通信救急 二重冗長の制度設計を実証する。 つまり、 携帯電話が使えなくなっても、 (1) NTT 公衆電話で通報、 (2) 緊急輸送道路で物理救援、 という 2 経路が 両方確保されている拠点が大半 = 「孤立しにくい配置」。 通信救急二重冗長点 (避難所 ∩ L72) は 646 拠点 (71.8%)に達する。

研究全体の主要発見

1. NTT 整備 = 県避難所網との制度横断的一致 (RQ1 + RQ2)

非常用電話 900 拠点のうち 94.6%が公的避難所相当施設、 81.1%が県登録避難所 100m 圏内に位置する事実は、 NTT 西日本 (民間) と県防災所管 (行政) が異なる主体ながら事実上同じ施設群を整備対象に選定 していることを量的に示す。 これは「災害時の最後のセーフティネット (公衆電話) を 避難所に配備する」 という両者の制度横断的合意の物理的証拠。

2. 通信空白避難所 2934 件の偏在発見 (RQ2)

避難所側の整備率は 27.8%のみで、 残り 2934 件 (72.2%)は通信空白 避難所 ─ 携帯電話の輻輳・基地局停電時に最後のセーフティネットを持たない。 これは 「電話 ⊂ 避難所だが避難所 ⊄ 電話」 という非対称関係であり、 県防災計画の整備 優先順位策定の政策素材となる重要な定量発見。

3. 通信救急二重冗長 646 拠点の特定 (RQ3)

電話 + 避難所 + L72 緊急輸送道路の3 要素全近接拠点は 646 拠点 (71.8%)に達し、 これが「県の通信救急ネット ワークの中核ノード」を構成する。 通信途絶時にも救援車両がアクセス可能 + 避難所機能が確保される「孤立しにくい配置」の物理形 ─ 県の防災基盤の 強靭性を量的に支持する。

4. 孤立リスク高位拠点の地理特定 (RQ3)

L72 全階層 1km 圏外の電話 = 142 拠点 (15.8%) は中山間奥地の集落避難所に集中し、 災害時に幹線道路アクセスが遠い「孤立リスク 高位拠点」として県防災計画の優先警戒対象。 これらは「電話があっても道路がない」 状態で、 通信救急冗長性を強化する制度設計が必要。

5. 規模ヒエラルキーの物理形 (RQ1)

1 拠点平均 1.31 台、 複数台拠点 28.4%、 3 台拠点 25 ─ 「都市中心 = 3 台 + 中規模 2 台、 周辺集落 = 1 台」 の規模ヒエラルキーが地理的に確認。 これは「避難収容人数 ⇔ 通信容量」 の事前需要設計の物理形であり、 大規模避難所での通話需要分散 + 小規模拠点での最低限カバレッジという合理的リソース配分を示す。

6. 「最後のセーフティネット」 という制度的位置付けの量的実証

900 拠点 / 1,181 台のスケールは、 県人口比で見ると1 台あたり約 2,400 人を カバーする整備密度。 これは「災害時の最後のセーフティネット」として最低限の 通信冗長を確保する数量設計と読める。 1995 年阪神・淡路大震災を契機にした NTT 制度化以降、 本データセットは県内全市町への整備が完了した時点での スナップショットとして制度史的にも重要な記録である。

全体サマリ表

指標
dataset #1457 非常用電話位置情報
総拠点数 (RQ1) 900
総設置台数 (RQ1) 1181
複数台拠点 (>=2 台) (RQ1) 256 (28.4%)
公的避難所相当施設 (RQ1) 851 (94.6%)
最多施設種別 (RQ1) 小学校 (461)
中山間 拠点数 (RQ1) 183 (20.3%)
最多市町 (RQ1) 福山市 (121 拠点)
H1 (公的避難所相当 ≥ 80%) (RQ1) 強支持
H2 (複数台拠点 ≥ 25%) (RQ1) 強支持
県登録避難所 (RQ2) 4065
電話 ⊂ 避難所 100m (RQ2) 730/900 (81.1%)
避難所 + 電話保持 (RQ2) 1131/4065 (27.8%)
H3 (電話 ⊂ 避難所 ≥ 80%) (RQ2) 強支持
H4 (避難所通信整備率 < 25%) (RQ2) 反証
L72 緊急輸送道路 (RQ3) 630 セグ / 2789 km
電話 L72 第1〜2次 1km (RQ3) 661 (73.4%)
電話 L72 全階層 1km (RQ3) 758 (84.2%)
通信救急二重冗長点 (RQ3) 646 (71.8%)
L72 最近接距離 中央 (km) (RQ3) 0.26
H5 (L72 1〜2次 1km ≥ 70%) (RQ3) 強支持

8. 発展課題

本記事の結果から導かれる新たな問いと検証手順を 5 つ示す (要件 E: 結果 X → 新仮説 Y → 課題 Z の 3 段)。

発展課題 1: 通信空白避難所の充足優先順位の最適化

結果 X: 県登録避難所 4065 件のうち通信空白 2934 件 (72.2%) を発見。
新仮説 Y: 通信空白避難所のうち、 (1) 想定収容人数が多い、 (2) 中山間奥地 に位置する、 (3) 災害履歴 (L62 避難情報) が多い、 という 3 条件で重み付けすると、 整備の優先順位が定量的に決まる。
課題 Z: 各通信空白避難所に「収容容量 × 中山間係数 × 災害履歴頻度」 の 合成スコアを付与 → 上位 100 件の整備で避難所通信整備率を 50% 以上に 引上げる最小コスト整備計画 (整数線形計画) を試行する。

発展課題 2: 災害時通信ネットワーク アクセシビリティ シミュレーション

結果 X: 通信救急二重冗長点 646 拠点 (避難所 ∩ L72) を特定、 孤立リスク 142 拠点を発見。
新仮説 Y: 孤立リスク拠点について、 L72 が一部寸断 (土砂災害想定区間) されると、 道路アクセス可能性は大幅に低下する一方、 NTT 公衆電話は独立稼働するため、 通信は維持されるという非対称冗長性が見える。
課題 Z: L11 sediment_shp (土砂警戒区域) と L72 セグメントの空間オーバーレイで 「土砂災害時に通行不能になり得る区間」 を特定 → 各電話拠点までの「通行可能ルート 最短経路」 を NetworkX 等で再計算し、 通常時 vs 災害時の実効アクセシビリティ 変化を量化する。

発展課題 3: 利用場所 (建物内位置) の検索容易性 vs 災害時混乱

結果 X: 利用場所は体育館 605 で最多、 だが MDF 内 / EPS 内 / 警備室 / 旧校舎玄関 等の分かりにくい位置も合計 6 拠点存在。
新仮説 Y: 災害時の被災者は混乱状態で電話を探すため、 利用場所が体育館 / 玄関ホールのような視認性の高い位置にあるほど発見・利用率が高い ─ 制度的には 「位置の標準化 (例: 全拠点が玄関ホール)」 が望ましい。
課題 Z: 利用場所を「視認性スコア」 (体育館・玄関 = 高、 MDF・EPS = 低、 事務室 = 中) で 3 値分類 → 市町別の視認性スコア中央値を集計、 整備改善の余地が ある市町を特定。 さらに NTT 西日本に「利用場所標準化指針」 の政策提言データを 作成。

発展課題 4: 通信救急冗長 vs 想定災害種別の差異検証

結果 X: 通信救急二重冗長 646 拠点を特定。
新仮説 Y: 災害種別 (地震・津波・洪水・土砂) によって通信救急冗長の有効性は 異なる。 例えば津波では沿岸の電話 + L72 が同時に被災する可能性があり、 冗長性が機能しない。 一方土砂では中山間部のみが影響を受け、 沿岸の冗長性は 保たれる。
課題 Z: shelters.json の floodShFlg / tsunamiShFlg / sedimentDisasterShFlg / earthquakeShFlg の災害種別フラグと 電話・L72 の重ね合わせで、 災害種別ごとの実効冗長率を算出 → 各災害種別の 弱点を特定し、 「災害特化型整備」 の必要性を検証する。

発展課題 5: 整備密度 vs 県人口の経年比較

結果 X: 1 台あたり約 2,400 人をカバーする整備密度。
新仮説 Y: 過疎化が進む中山間市町では人口あたり整備密度が向上 (台数は 維持・人口は減少)、 一方都市部では人口流入で密度低下が進む可能性。
課題 Z: 国勢調査年次データ (2010 / 2015 / 2020) と本データセットを照合し、 市町別 「1 台あたり人口」 の経年変化を集計 → 「整備密度の地理偏在」 の 時系列ダイナミクスを可視化。 過疎化と整備密度の関係性を分析し、 NTT 整備の 将来計画 (新設 vs 撤去 vs 維持) のデータ根拠を作成する。