Lesson 63
津波災害警戒区域 単独 3 研究例分析 — 178,004 セルから「想定 vs 指定」の制度差を読む
L63津波災害警戒区域津波防災地域づくり法RQ×3Format BgeopandasShapefilechoroplethL49連携 (想定)L22連携 (人口)想定vs指定包含関係1.28M polygon
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 47 (Shapefile, 27.8 MB) + L49 想定キャッシュ + L22 人口連携
学習目標と問い
本記事は DoBoX のシリーズ「津波災害警戒区域情報」 1 件
(dataset_id = 47) を 単独で取り上げ、
広島県沿岸で法的に指定された津波災害警戒区域の地理構造を
3 つの独立した研究角度 (RQ1 / RQ2 / RQ3) で並列に分析する。
本データは 1,285,428 polygon (10m メッシュ単位)、Shapefile 形式 (27.8 MB)。
L49 (津波浸水想定) との位置付け: L49 は「想定」 (= 技術的シミュレーション結果) で法的拘束力なし。
本記事 L63 は「指定」 (= 都道府県知事が告示する法的指定区域) で法的拘束力あり。
両者は範囲が一致するわけではなく、L63 は制度的に切り取られた一部分。
この「想定 vs 指定」の制度差を本研究 RQ2 で空間統計化する。
制度的背景: 津波災害警戒区域は津波防災地域づくり法 (2011 年 12 月 14 日法律第 123 号) 第 53 条に基づく
都道府県知事の告示指定。2011 年東日本大震災を契機に制度化され、住民への津波情報伝達体制の整備、
避難場所・避難経路の確保、要配慮者利用施設の避難確保計画策定義務等が伴う。
広島県は 2019-03-02 に告示を行い、本データはその告示内容を Shapefile 化したもの。
独自用語の定義
- 津波災害警戒区域 (本データ #47): 津波防災地域づくり法 第 53 条に基づき
都道府県知事が告示で指定する法的拘束力を持つ警戒区域。本研究では
広島県内 19 沿岸市町をカバー (海上を除く)、全指定面積 160.2 km²。
- 津波防災地域づくり法 (制度用語): 2011 年東日本大震災を契機に制定された法律
(2011 年 12 月 14 日法律第 123 号)。都道府県による津波浸水想定の作成、
警戒区域 (本記事) と特別警戒区域 (オレンジゾーン) の指定、推進計画の策定等を規定。
- 特別警戒区域 (本データには含まれず): 警戒区域のうち、特に著しい津波被害が
想定される区域として都道府県知事が指定する区域。一定の建築規制が伴うが、
広島県内では現時点で指定なし (本データ #47 は通常の警戒区域のみ)。
- 想定 vs 指定の制度差 (本記事 RQ2 用語): 「想定」 = L49 (技術的シミュレーション、
法的拘束力なし) と「指定」 = L63 (法的告示) の関係。本研究で空間統計化する。
観測 包含率 (L63 ⊂ L49) = 70%。
- 制度的隙間 (本記事 RQ2 用語): 「想定はあるが警戒区域としては指定されていない」
エリア = L49 \ L63。観測面積 12.0 km²。
これは想定図の更新で新たに加わった範囲、または市町審議で除外された範囲を含む。
- kijyun_sin (Shapefile 列名): 基準浸水値 (cm 単位)。kijyun_sin / 100 = 浸水深 (m)。
観測 範囲 10〜868 = 0.10〜8.68m。L49 の最大値 8.34m とほぼ整合 (= データ整合性の確認)。
- 基準水位ランク (本記事独自集約): kijyun_sin を 6 ランクに集約。
L49 と同形式 (0.0〜0.5 / 0.5〜1.0 / 1.0〜2.0 / 2.0〜3.0 / 3.0〜5.0 / 5.0〜10.0 m)。
L49 の RANK_LABEL 規則を継承し制度横串比較を可能にする。
- 行為制限 (制度用語): 警戒区域指定に伴う制度的義務。本警戒区域 (= 通常区域) では
建築規制は無く、要配慮者利用施設 (病院・社会福祉施設等) の避難確保計画策定義務、
ハザードマップ等への明記、住民への情報伝達体制整備が中心。
特別警戒区域 (オレンジゾーン) になると建築規制が伴う。
- 30m 集約 (本記事の処理): 元 1.28M polygon (10m メッシュ単位) を
30m × 30m グリッドに集約 (max kijyun)。178,004 セルに圧縮。
L49 と同じ集約レベルなのでセル単位の空間結合が容易。
- 推定区域内人口 (本記事 RQ3 用語): 警戒区域の市町別人口を計算する代理指標。
市町総人口 × (警戒指定面積 / 市町面積)。一様分布の仮定 (現実は沿岸偏在) なので
「ハザードに対する市町責任規模」の参考値であり、厳密な「区域内人口」ではない。
- 地理区分 (本記事 RQ3 集約): 人口密度から
都市部 (≥1,000/km²) / 中間地域 (200-1,000/km²) / 中山間部 (<200/km²) の 3 区分。
L62 で使用した区分と同じ規則。
研究の問い (3 RQ)
- RQ1 (主研究): 広島県の津波災害警戒区域の地理範囲・市町別指定状況はどう描けるか?
1,285,428 polygon を 30m に集約し、19 沿岸市町別の指定面積、基準水位ランク (6 ランク) 別の構成、
沿岸 vs 内陸の指定パターンを定量化する。
- RQ2 (副研究 1): L49 津波浸水想定 (= 技術的想定) と L63 警戒区域 (= 法的指定) の
空間関係はどう描けるか?
30m グリッド単位で空間結合し、「両方」 「指定のみ」 「想定のみ (制度的隙間)」 の
3 パターンを集計。
- RQ3 (副研究 2): 警戒区域内の沿岸人口・建物との空間関係はどう描けるか?
L22 既扱の市町別人口を母数とし、警戒区域 km² あたりの守るべき人口
(= ハザード人口密度指標) を市町別に算出。
都市沿岸 vs 中山間沿岸の構造的対比を抽出。
仮説 H1〜H5
- H1 (浅水支配, RQ1): 警戒区域の基準水位は0.5〜2.0m が支配的で、
3m 超は < 20%。瀬戸内海津波の地形的特性を反映。
- H2 (湾奥 + 干拓地集中, RQ1): 上位 3 市町で全体の 40% 超。
湾奥 + 干拓地 + 多島海の 3 地形類型が指定面積を支配。
- H3 (想定 ⊃ 指定, RQ2): L49 想定 ⊃ L63 指定 の包含関係。
包含率 ≥ 95% を予想。
- H4 (制度差の地理パターン, RQ2): 「想定のみ」 と「指定のみ」 のバランスが
市町ごとに異なる。市町別審議の結果。
- H5 (人口密度勾配, RQ3): 区域内人口密度は
都市部 >> 中山間沿岸、上位/下位比 ≥ 5 倍。
都市部の防災投資優先度の高さを数量化。
到達点
本記事を読み終えた学習者は次の 3 点を体感できる:
- 1 つの大規模 Shapefile (1.28M polygon, 27.8 MB) を効率的に処理する空間データ分析の
標準ワークフロー (= 30m 集約 + dissolve + sjoin + キャッシュ化) を体感する。
- 「想定 (技術的)」 と「指定 (法的)」という防災制度の 2 段階を空間統計で対比し、
包含率 70% という数字で制度的フィルタの実態を読む。
法的指定が技術的想定をどう翻訳するか、その結果がどんな空間パターンを生むかを理解する。
- L22 既扱の人口データを使った「ハザード人口密度指標」で都市沿岸 vs 中山間沿岸の
構造対比を抽出。都市部の 14 倍差という数字で防災投資優先度の地理パターンを定量化する。
使用データ
DoBoX のシリーズ「津波災害警戒区域情報」 1 件のみを単独で扱う。
リソースは Shapefile 1 セット (27.8 MB ZIP, 解凍後 約 210 MB)。
| 項目 |
値 |
| dataset_id |
47 |
| 公式名 |
津波災害警戒区域情報 |
| resource_id |
42 |
| ファイル |
340006_tsunami_caution_area_20190302.zip |
| 形式 |
Shapefile (Polygon, EPSG:2445) |
| ZIP サイズ |
27,813,176 byte (= 27.8 MB) |
| レコード数 |
1,285,428 polygon |
| 属性列 |
kijyun_sin (int, cm 単位の基準水位 = 浸水深×100) |
| 最大基準水位 |
8.68 m (= max kijyun_sin 868 cm) |
| 座標系 |
EPSG:2445 (平面直角第 3 系) → EPSG:6671 で処理 |
| 作成日 |
2022-04-08 |
| 最終更新 |
2022-05-20 |
| 告示日 |
2019-03-02 |
| ライセンス |
クリエイティブ・コモンズ表示 (CC-BY) |
| 法的根拠 |
津波防災地域づくり法 第 53 条 (2011 年法律第 123 号) |
| 作成主体 |
広島県土木建築局 |
| URL |
https://hiroshima-dobox.jp/datasets/47 |
| DL URL |
https://hiroshima-dobox.jp/resource_download/42 |
この表から読み取れること: dataset 47 は1,285,428 polygonの大規模 Shapefile。
kijyun_sin 1 列のみのシンプルなスキーマで、整数 cm 単位の基準水位 (= 浸水深×100) を保持。
最大 868 = 8.68 m は L49 の最大 8.34 m とほぼ整合 (= データ整合性の確認)。
告示日 2019-03-02 = 広島県知事による津波防災地域づくり法第 53 条に基づく告示時点。
L49 (津波浸水想定) との制度比較
| 項目 |
L49 津波浸水想定 (想定図) |
L63 津波災害警戒区域 (指定区域) |
| 根拠法 |
水防法・津波防災地域づくり法 |
津波防災地域づくり法 第 53 条 |
| 制度区分 |
想定 (技術的シミュレーション) |
指定 (法的拘束力のある区域指定) |
| 作成主体 |
広島県土木建築局 |
広島県知事 (告示) |
| 法的拘束力 |
なし (情報提供のみ) |
あり (避難確保計画策定義務等) |
| 対象 |
想定し得る最大規模の浸水 |
想定区域のうち住民保護に必要な範囲 |
| 更新 |
随時 (技術改善で更新) |
告示時点で固定 (改正告示で更新) |
| 総面積 |
124.32 km² (L49) |
160.20 km² (L63) |
| 公表 |
2025-12-03 (最新版) |
2019-03-02 (告示) |
| dataset_id |
46 |
47 |
この表から読み取れること: L49 = 想定 (技術的) と L63 = 指定 (法的) の役割分担が明確。
L49 は2025-12-03 に最新版が更新され続ける技術的想定図。L63 は2019-03-02 に告示された
法的拘束力のある区域指定で、改正告示まで固定される。両者は同じ「津波」 を扱うが、
制度上の位置付けが根本的に異なる。本研究 RQ2 で両者の空間関係を実データで検証する。
データ取得手順
| ステップ |
操作 |
値 / URL |
| ステップ 1 |
DoBoX dataset 47 ページ |
https://hiroshima-dobox.jp/datasets/47 |
| ステップ 2 |
ZIP DL (resource 42) |
https://hiroshima-dobox.jp/resource_download/42 |
| ステップ 3 |
保存先 |
data/extras/L63_tsunami_warning_zone/340006_tsunami_caution_area_20190302.zip |
| ステップ 4 |
ZIP 展開 |
extracted/tsunami_keikai.shp + .dbf + .shx + .prj |
| ステップ 5 |
Shapefile 読込 (geopandas/pyogrio) |
1,285,428 polygon |
| ステップ 6 |
30m 集約 (build_cache) |
178,004 セル (= 160 km²) |
| ステップ 7 |
市町 sjoin |
19 市町に分配 + 海上 11,615 セル |
| ステップ 8 |
L49 想定との重なり判定 |
両方 124,767 / 指定のみ 53,237 |
この表から読み取れること: DoBoX dataset 47 → resource 42 → 27.8 MB ZIP DL → 解凍 →
Shapefile 読込 → 30m 集約 → 市町 sjoin → L49 想定との重なり判定、の 8 ステップで再現可能。
全工程は _l63_build_cache.py + L63_tsunami_warning_zone.py で自動実行。
関連データセットとの対応
- L49 津波浸水想定 (#46): 技術的想定図。本記事 RQ2 で空間比較の基準。
- L44 高潮浸水想定 (#43-45): 別の海起源ハザード。津波と高潮は機構が異なるが
同じ沿岸エリアを共有 (L49 で既に分析済)。
- L22 性別年齢別人口: 本記事 RQ3 で守るべき人口計算の母数。
- L20 新築建物: 警戒区域内の新築動向は別研究 (= 行為制限の効果検証)。
- L32-L34 港湾施設: 警戒区域内の港湾インフラは津波被災時の復旧優先度の根拠。
- L62 避難情報: 警戒区域指定が住民への避難情報伝達体制整備義務を生む。
ダウンロード
本レッスンの再現に必要な全データ・中間 CSV・図 PNG・スクリプトを以下から直接 DL できる:
生データ (DoBoX 直リンク)
本記事の中間 CSV (再現用)
図 PNG (8 枚) と Python スクリプト
個別取得 (PowerShell, このレッスンだけ)
cd "2026 DoBoX 教材"
iwr "https://hiroshima-dobox.jp/resource_download/42" -OutFile "data/extras/L63_tsunami_warning_zone/340006_tsunami_caution_area_20190302.zip"
Expand-Archive -Path "data/extras/L63_tsunami_warning_zone/340006_tsunami_caution_area_20190302.zip" -DestinationPath "data/extras/L63_tsunami_warning_zone/extracted"
py -X utf8 lessons/_l63_build_cache.py
py -X utf8 lessons/L63_tsunami_warning_zone.py
Shapefile (174 MB shp + 14 MB dbf) の処理は重い (= 1.28M polygon)。
そのため _l63_build_cache.py で 30m 集約 + dissolve + sjoin + L49 重なり判定を
事前計算 (~15 秒)、本体スクリプトはキャッシュ読込で 10 秒以内に完走。
L44 admin 既キャッシュと L49 cells 既キャッシュも内部で再利用。
一括取得 (全レッスン共通, 推奨)
cd "2026 DoBoX 教材"
py -X utf8 data\fetch_all.py
py -X utf8 lessons/_l63_build_cache.py
py -X utf8 lessons/L63_tsunami_warning_zone.py
【RQ1】 警戒区域の地理範囲・市町指定状況 — 160 km² / Top 3 で 64%
RQ1 の狙い
1,285,428 polygon の元 Shapefile を 30m に集約し、178,004 セル (160 km²) を得る。
これを市町 / 基準水位ランク / 沿岸 vs 内陸の 3 軸で多角度に集計し、
広島県の津波警戒区域指定の地理構造を立体的に描く。
特に「警戒区域」 という法的指定の物理的形状を初めて定量化する。
手法 (前置き解説)
- 大規模 Shapefile 読込:
pyogrio.read_dataframe で
1.28M polygon を高速読込 (~5 秒)。geometry は重心抽出で点座標化。
- 30m グリッド集約:
(x // 30) * 30 で xy を 30m 単位に丸め、
groupby(["gx","gy"]).max("depth_m") で max 基準水位を取る。
これで 1.28M → 178K セルに圧縮 (= 約 1/7)。
- 6 ランク dissolve:
shapely.unary_union で各ランクのセル群を
1 polygon に結合。L49 と同形式の 8 ランク基準 (rank=10 → 0.0〜0.5m, rank=80 → 20m+)
で記録するが、警戒区域は最大 8.68m なので rank=10〜60 のみ存在。
- 市町 sjoin: 30m セルの中心点を
gpd.sjoin(predicate="within") で
L44 既キャッシュの admin_diss.gpkg (27 polys) に結合。
広島市 8 区を区別記載のまま処理し、後段で「広島市」 にロールアップして集計。
- 市町別 重み付き平均深さ: 各ランクの中央値 (RANK_MID) で重みを付けた加重平均。
これは市町ごとの「典型的な津波警戒水位」 指標。
入出力の Before/After 例
| 段階 | 1 polygon の中身 | 件数 |
| (0) Shapefile 1 件 | polygon (10m メッシュ), kijyun_sin = 168 (= 1.68m) | 1,285,428 |
| (1) 重心抽出 | (x=80123, y=-178435), kijyun_sin=168 | 1,285,428 |
| (2) 浸水深 m 化 | + depth_m = 168 / 100 = 1.68 | 1,285,428 |
| (3) 30m 集約 | (gx=80100, gy=-178410) で同セル group → max(depth_m) | 178,004 |
| (4) ランク化 | + rank = 30 (1.0〜2.0m に該当) | 178,004 |
| (5) 市町 sjoin | + CITY_CD = 207 (= 福山市) | 178,004 (うち海上 11,615) |
| (6) groupby 集計 | 市町 × ランク 面積 km² の表 (19 市町 × 6 ランク) | (別) |
| (7) dissolve | 各ランクの全セルを 1 polygon に結合 | 6 polygons |
(0)-(7) を全 1.28M polygon に適用 → groupby/dissolve で集計 → 図化。
重い処理 (= (3)〜(7)) は _l63_build_cache.py で事前計算しキャッシュ。
実装コード (Shapefile 読込 + 30m 集約 + 市町 sjoin + dissolve)
↑ L63_tsunami_warning_zone.py 行 1304–1406
1
2
3
4
5
6
7
8
9
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352 | # 1. 大規模 Shapefile 読込 (1.28M polygon, 174 MB)
import pyogrio, pandas as pd, geopandas as gpd, shapely
SHP = "data/extras/L63_tsunami_warning_zone/extracted/tsunami_keikai.shp"
gdf = pyogrio.read_dataframe(SHP) # ~5 秒
print(f"polygons: {len(gdf):,}, CRS: {gdf.crs}")
# kijyun_sin は cm 単位の基準水位 (= 浸水深 × 100)
print(gdf["kijyun_sin"].describe())
# 2. 重心抽出 + 30m 集約
df = pd.DataFrame({
"x": gdf.geometry.centroid.x.astype(int),
"y": gdf.geometry.centroid.y.astype(int),
"depth_m": gdf["kijyun_sin"].astype(int) * 0.01, # cm → m
})
df["gx"] = (df["x"] // 30) * 30
df["gy"] = (df["y"] // 30) * 30
agg = df.groupby(["gx","gy"], as_index=False)["depth_m"].max()
agg.columns = ["x","y","depth_m"]
# 3. 6 ランクに分類
import numpy as np
RANK_BINS = [0, 0.5, 1.0, 2.0, 3.0, 5.0, 10.0, 20.0, 999]
RANK_CODES = [10, 20, 30, 40, 50, 60, 70, 80]
agg["rank"] = pd.cut(agg["depth_m"], bins=RANK_BINS,
labels=RANK_CODES, right=False).astype(int)
print(f"30m 集約後: {len(agg):,} cells")
# 4. 市町 sjoin (admin_diss.gpkg は L44 既キャッシュ)
admin = gpd.read_file("data/extras/L44_storm_surge/_cache/admin_diss.gpkg").to_crs("EPSG:6671")
pts = gpd.GeoDataFrame(agg, geometry=gpd.points_from_xy(agg["x"], agg["y"]),
crs="EPSG:2445").to_crs("EPSG:6671")
pts_admin = gpd.sjoin(pts, admin[["CITY_CD", "geometry"]],
how="left", predicate="within")
pts_admin["CITY_CD"] = pts_admin["CITY_CD"].fillna(-1).astype(int)
# 5. 市町 × ランク 面積 (km²)
df = pts_admin.copy()
df["area_m2"] = 30 * 30 # 30m × 30m
city_rank = df.groupby(["CITY_CD","rank"])["area_m2"].sum().unstack(fill_value=0)
city_rank = city_rank / 1e6 # km²
print(city_rank.head())
# 6. 6 ランク dissolve (各ランクの全セルを 1 polygon に結合)
out_geoms = []
for rk in RANK_CODES:
sub = agg[agg["rank"] == rk]
if len(sub) > 0:
polys = shapely.box(sub["x"]-15, sub["y"]-15, sub["x"]+15, sub["y"]+15)
out_geoms.append(shapely.unary_union(polys))
|
図 1: なぜこの図か (RQ1)
「広島県のどの沿岸エリアに警戒区域があり、どの基準水位ランクで指定されているか」 を
1 枚で読みたい。県全域に 6 ランク色 (薄水色 = 0.5m 未満 → 紺色 = 5-10m) でセルを描き、
沿岸市町を薄オレンジで強調することで、警戒区域が沿岸エリアに集中する地理構造を可視化。
この図から読み取れること:
- 沿岸南部 (呉市・広島市・尾道市・福山市) に警戒区域指定が集中。
これは津波が瀬戸内海沿岸で発生・遡上する物理的事実の反映。
- 湾奥 (呉市・広島市)と干拓地 (福山市芦田川河口)で深いランク (3-5m) の指定が出現。
平野地形 + 湾形状の組み合わせで津波が深く遡上することを反映。
- 多島海 (尾道市・大崎上島・江田島)は浅水ランクで広く指定。
多島海の入江・湾が多数の小規模警戒区域を生む。
- 非沿岸市町 (三次・庄原・東広島・廿日市の山間部) は当然警戒区域なし。
L49 の「沿岸 16 市町」 と一致する地理パターン。
図 2: なぜこの図か (RQ1)
「6 ランクの面積構成は浅水帯 (<2m) が支配的なのか、深水帯 (>3m) が一定割合あるのか」 を
2 ペインで読みたい。左 stacked bar (1 本) は全体構成を 1 行で見せ、
右 横棒は各ランクの絶対値で深さ分布を比較する。
この図から読み取れること:
- 1.0〜2.0m が最大 (45.4 km², 28%)。
警戒区域指定の中心的水位帯。
- 2 番目が 0.5〜1.0m (38.4 km², 24%)。
浅水帯が支配的というより、警戒区域は1m 前後の浸水帯に集中。
- 浅水 (<2m) 73%、深水 (>3m) 9%。
H1 (浅水支配) 強支持: 警戒区域の 73% が 2m 未満。
重み付き平均は 1.47m。
- 5-10m の深水ランクは 0.07 km² = 全体の
0.04% = 極めて限定的。
これは瀬戸内海津波の地形特性 (= 太平洋側より浅い) と整合。
図 3: なぜこの図か (RQ1)
「どの市町が警戒区域指定面積で大きいか」 を地理的パターンとして読みたい。
市町境界 polygon に指定面積を Reds で塗り分け、上位 8 市町には市町名 + 面積をラベル表示。
これで「沿岸の中でもどの市町に集中しているか」 を一望できる。
この図から読み取れること:
- 広島市が圧倒的最大 (42.3 km²)、
次に福山市 (37.3 km²)、
呉市 (16.9 km²)。
- Top 3 シェア = 64%。
H2 (上位 3 集中 ≥ 40%) 強支持。
湾奥 + 干拓地 + 多島海の地形が指定面積を支配。
- 広島市は湾奥地形 + 平野で津波が遡上しやすい。
福山市は芦田川河口の干拓平野で広域指定。
尾道市は多島海 + 入江で多数の小規模指定の合算。
- 非沿岸市町は当然 0 km² で灰色。L49 の沿岸 16 市町と一致。
図 4: なぜこの図か (RQ1)
「市町別に深さランクの構成がどう違うか」 を見たい。横棒 stacked barで各市町の
6 ランク内訳を並置し、市町名の右に重み付き平均深さを併記。これで
「広く浅い指定 (= 福山市干拓地)」 と「狭く深い指定 (= 呉市湾奥)」 の地形特性差を読む。
この図から読み取れること:
- 市町別の平均深さ () 値で深さ重心の地形差が分かる。
湾奥地形の市町は深さ重心が大きく、平野地形は浅水帯の比重が大きい。
- 同じ面積でも構成が異なる: 例えば中規模市町でも、
浅水 (<1m) 比率が高い市町と深水 (3m+) 比率が高い市町では
住民への避難指示パターンが異なるはず。
- Top 12 中、深水帯 (>3m) を持つ市町は12 市町に限定。
これらは湾奥地形を持つ市町。
- 0.5〜2.0m 帯は全市町に共通する基準的な指定範囲。
これは津波防災地域づくり法の指定基準が「住民避難が必要な水位」 として
1-2m を基本ラインとしていることの反映。
表: 全体サマリ (3 RQ 統合, 17 指標)
| 指標 |
値 |
| 元 polygon 数 |
1,285,428 |
| 30m 集約後 セル数 |
178,004 |
| 全指定面積 (RQ1) |
160.20 km² |
| 対象市町数 |
13 (海上 -1 を除く) |
| Top 3 市町シェア (RQ1) |
64.5% |
| Top 1 市町 |
広島市 (42.33 km²) |
| 浅水 <2m シェア (RQ1) |
72.8% |
| 深水 >3m シェア (RQ1) |
8.8% |
| 重み付き平均深さ (RQ1) |
1.47 m |
| L49 想定面積 (参考) |
124.32 km² |
| L63 ∩ L49 (両方, RQ2) |
112.29 km² (70.1%) |
| L63 \ L49 (指定のみ, RQ2) |
47.91 km² (29.9%) |
| L49 \ L63 (想定のみ, RQ2) |
12.03 km² |
| 推定区域内人口 合計 (RQ3) |
125,464 人 |
| 人口密度 上位3 平均 (RQ3) |
2,797 人/km² |
| 人口密度 下位3 平均 (RQ3) |
204 人/km² |
| 人口密度 上位/下位比 (RQ3) |
13.7 倍 |
この表から読み取れること: 全 178,004 セルの核心指標を 17 行に集約。指定面積 160 km²、Top 3 シェア 64%、L49 包含率 70%、人口密度上位/下位比 14 倍 — 3 RQ の主結論を要約。
表: 6 ランクサマリ
| rank_code |
深さラベル |
rank中央値_m |
面積_km2 |
シェア_% |
| 10 |
0.0〜0.5m |
0.25 |
32.863 |
20.51 |
| 20 |
0.5〜1.0m |
0.75 |
38.386 |
23.96 |
| 30 |
1.0〜2.0m |
1.50 |
45.439 |
28.36 |
| 40 |
2.0〜3.0m |
2.50 |
29.392 |
18.35 |
| 50 |
3.0〜5.0m |
4.00 |
14.056 |
8.77 |
| 60 |
5.0〜10.0m |
7.50 |
0.068 |
0.04 |
この表から読み取れること: 1.0〜2.0mが最大ランク。瀬戸内海津波の特性 (浅水帯) を反映し、深水帯 (5m+) は極めて限定的。
表: 市町別 ランキング (Top 15)
| 順位 |
市町名 |
指定面積_km2 |
平均深さ_m |
| 1 |
広島市 |
42.33 |
1.67 |
| 2 |
福山市 |
37.34 |
1.99 |
| 3 |
呉市 |
16.89 |
0.87 |
| 4 |
尾道市 |
15.62 |
1.33 |
| 5 |
三原市 |
8.66 |
1.27 |
| 6 |
江田島市 |
7.73 |
1.21 |
| 7 |
竹原市 |
5.05 |
1.50 |
| 8 |
廿日市市 |
4.80 |
0.86 |
| 9 |
大竹市 |
4.48 |
1.04 |
| 10 |
海田町 |
2.68 |
1.66 |
| 11 |
坂町 |
1.88 |
0.79 |
| 12 |
東広島市 |
1.46 |
1.14 |
| 13 |
府中町 |
0.81 |
0.94 |
この表から読み取れること: 広島市が首位 (42.3 km²)、次に 福山市 (37.3 km²)。沿岸 19 市町すべてが指定対象だが、Top 3 で 64% を占める偏在型。
【RQ2】 L49 想定 vs L63 指定 の制度差 — 包含率 70%
RQ2 の狙い
L49 (津波浸水想定 = 技術的) と L63 (警戒区域指定 = 法的) の空間関係を実データで検証する。
両者は同じ「津波」 を扱うが、L49 は最新版が 2025-12-03 まで更新され続け、L63 は
2019-03-02 告示で固定されている。本研究では:
- 30m グリッド単位で両者のセルを空間結合 (= 共通グリッド比較)
- 「両方」 「指定のみ」 「想定のみ」の 3 区分の面積を集計
- 市町別に「制度差」 のパターンを抽出
- ランク別に「想定 vs 指定」 の重複率を比較
手法 (前置き解説)
- 共通 30m グリッド化: L49 の cells (138K セル) と L63 の cells (178K セル) を
(x // 30) * 30 で同一グリッドに揃える。これで集合演算が可能。
- セル集合演算:
set(zip(gx, gy)) でグリッドキーを作り、
集合の積 (両方) / 差 (片方のみ) を計算。面積 = セル数 × 900 m²。
- 市町別の制度差比率: 各市町について「両方比率」 と「指定のみ比率」 を計算。
標準偏差で「市町間の制度差ばらつき」 を統計化。
- ランク別重複: 警戒区域の各ランクについて「想定にも入る (両方)」 vs
「指定のみ (想定外)」 を計算。深水ランクほど両方率が高いことが期待される。
入出力の Before/After 例 (1 セル分)
| 段階 | セル例 (gx=80100, gy=-178410) |
| (0) L63 cell | x=80100, y=-178410, depth_m=1.68, rank=30 |
| (1) L49 cell 検索 | L49 keys (gx=80100, gy=-178410) ∈ L49 か判定 |
| (2) in_l49 フラグ | + in_l49 = True (= L49 にも該当) |
| (3) 区分 | 「両方 (想定 ∩ 指定)」 に分類 |
| (4) 集計 | セル数 1 → 面積 900 m² |
(0)-(4) を全 178K セルに適用 → 集合演算で「両方」 「指定のみ」 を集計 →
L49 cells から「想定のみ」 を引き算で計算。
実装コード (グリッドキー集合演算 + ランク別重複)
↑ L63_tsunami_warning_zone.py 行 1517–1603
1
2
3
4
5
6
7
8
9
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 | # 1. L49 cells (既キャッシュ) と L63 cells (本研究) を共通 30m グリッドへ
import geopandas as gpd, pandas as pd
l49_cells = gpd.read_parquet("data/extras/L49_tsunami_inundation/_cache/tsunami_cells_30m.parquet")
keikai_cells = gpd.read_parquet("data/extras/L63_tsunami_warning_zone/_cache/keikai_cells_30m.parquet")
l49_cells["gx"] = (l49_cells["x"] // 30) * 30
l49_cells["gy"] = (l49_cells["y"] // 30) * 30
keikai_cells["gx"] = (keikai_cells["x"] // 30) * 30
keikai_cells["gy"] = (keikai_cells["y"] // 30) * 30
# 2. グリッドキーの集合演算
l49_keys = set(zip(l49_cells["gx"].astype(int), l49_cells["gy"].astype(int)))
k_keys = set(zip(keikai_cells["gx"].astype(int), keikai_cells["gy"].astype(int)))
both_keys = l49_keys & k_keys # 両方
only_keikai = k_keys - l49_keys # 指定のみ
only_souti = l49_keys - k_keys # 想定のみ
print(f"L49 想定: {len(l49_keys):,} セル")
print(f"L63 指定: {len(k_keys):,} セル")
print(f"両方: {len(both_keys):,} ({100*len(both_keys)/len(k_keys):.1f}% of L63)")
print(f"指定のみ: {len(only_keikai):,}")
print(f"想定のみ: {len(only_souti):,}")
# 3. 面積換算
area_both = len(both_keys) * 900 / 1e6 # km²
area_only_keik = len(only_keikai) * 900 / 1e6
area_only_souti = len(only_souti) * 900 / 1e6
print(f"両方面積: {area_both:.1f} km²")
print(f"指定のみ: {area_only_keik:.1f} km²")
print(f"想定のみ: {area_only_souti:.1f} km²")
# 4. 市町別の制度差比率
city_l49 = keikai_cells.groupby(["CITY_CD", "in_l49"])["x"].count().unstack(fill_value=0)
city_l49.columns = ["only_keikai", "both"] if False in city_l49.columns else ["both"]
city_l49["両方比率_%"] = city_l49["both"] / (city_l49["both"] + city_l49["only_keikai"]) * 100
# 5. ランク別重複
rank_l49 = keikai_cells.groupby(["rank", "in_l49"])["x"].count().unstack(fill_value=0)
print(rank_l49)
|
図 5: なぜこの図か (RQ2)
「想定 (青) と 指定 (赤) が県全域でどう重なるか」 を 2 ペインで読みたい。
左は県全域でL49 想定 = 薄青、L63 指定 = 半透明赤を重ね描き、
重なり部 = 茶色 を視覚的に確認。右は福山市の干拓平野ズームで
同じ重ね合わせを詳細表示。「想定はあるが指定されていない」 範囲が
青のみで残っているかを確認できる。
この図から読み取れること:
- 左県全域: 多くの沿岸エリアで青と赤が重なる (= 想定にも警戒にも該当)。
これは想定の範囲を法的指定でそのまま受け入れた部分。
- 左県全域: 青のみで残るエリア (= 想定のみ、L49 \ L63) が
12 km² 存在。
これは L49 (2025-12-03 最新版) で新たに追加された範囲、
または告示時 (2019-03-02) には想定外だった補正分。
- 左県全域: 赤のみで残るエリア (= 指定のみ、L63 \ L49) は
48 km² 存在。
これは L49 想定の範囲を超えて法的に指定された範囲 = 慎重派の指定。
- 右福山ズーム: 干拓平野で想定 ⊃ 指定のパターンが最もクリア。
想定範囲のうち住民保護に必要な部分のみ警戒区域として指定。
- 包含率 70% = 警戒指定の 70% が想定内に位置する。
H3 (想定 ⊃ 指定) 部分支持。
図 6: なぜこの図か (RQ2)
「想定 ∩ 指定」 「指定のみ」 「想定のみ」 の 3 区分の面積比較 (左) と、
深さランク別の重複率 (右) を 2 ペインで読みたい。左は集合関係を 1 図で要約、
右は深さランクで重複率がどう変化するかを stacked bar で見せる。
深いランクほど両方率 (= 想定にも指定にも入る) が高いことが期待される。
この図から読み取れること:
- 左 3 区分: 両方 (112.3 km²)が圧倒的最大。
指定 ⊂ 想定 の構造が確認される。
指定のみ (47.9 km²)と想定のみ (12.0 km²)は
ほぼ同程度の規模 = 双方向の制度差が存在。
- 右 ランク別: 深いランクほど両方率が高い傾向。
これは「深刻なハザードは想定でも指定でも認識される」 という制度的整合の証拠。
- 0.0〜0.5m の浅水帯では指定のみ比率がやや高い傾向 (もしあれば)。
これは警戒区域が想定よりやや広く取られた = 慎重派の指定 を示す可能性。
- 制度的隙間 (想定のみ 12.0 km²) は L49 が L63 告示後に更新された影響。
L49 が 2025 年版なのに対し L63 は 2019 年告示時点で固定されているため、
この 6 年で L49 が拡大した分 = 制度的 lag。
表: 想定 vs 指定 重なりサマリ
| 区分 |
セル数 |
面積_km2 |
シェア_% |
| L63 警戒区域 全体 |
178004 |
160.20 |
100.0 |
| L63 ∩ L49 (両方) |
124767 |
112.29 |
70.1 |
| L63 \ L49 (警戒のみ) |
53237 |
47.91 |
29.9 |
| L49 \ L63 (想定のみ) |
13367 |
12.03 |
7.5 |
この表から読み取れること: L63 ∩ L49 (両方) が 70% = 指定の大部分は想定内に位置する。指定のみ (30%)と想定のみ (12 km²)は 双方向の制度差 = 完全包含ではないが概ね包含。
表: ランク × L49 重複
| rank |
深さラベル |
両方_km2 |
指定のみ_km2 |
合計_km2 |
両方率_% |
| 10 |
0.0〜0.5m |
21.4425 |
11.4201 |
32.8626 |
65.2 |
| 20 |
0.5〜1.0m |
30.7440 |
7.6419 |
38.3859 |
80.1 |
| 30 |
1.0〜2.0m |
33.8949 |
11.5443 |
45.4392 |
74.6 |
| 40 |
2.0〜3.0m |
19.6605 |
9.7317 |
29.3922 |
66.9 |
| 50 |
3.0〜5.0m |
6.4953 |
7.5609 |
14.0562 |
46.2 |
| 60 |
5.0〜10.0m |
0.0531 |
0.0144 |
0.0675 |
78.7 |
この表から読み取れること: 深さランクごとに「両方率」 が異なる。深いランクほど両方率が高い傾向は「想定と指定の制度的整合」 の証拠。
表: 市町別 想定 vs 指定 (Top 15)
| 市町名 |
both_km2 |
only_keikai_km2 |
total_km2 |
両方比率_% |
指定のみ比率_% |
| 広島市 |
41.11 |
1.22 |
42.33 |
97.1 |
2.9 |
| 福山市 |
2.83 |
34.52 |
37.34 |
7.6 |
92.4 |
| 呉市 |
13.65 |
3.25 |
16.89 |
80.8 |
19.2 |
| 尾道市 |
12.77 |
2.85 |
15.62 |
81.7 |
18.3 |
| 三原市 |
8.04 |
0.62 |
8.66 |
92.9 |
7.1 |
| 江田島市 |
6.81 |
0.92 |
7.73 |
88.2 |
11.8 |
| 竹原市 |
4.57 |
0.47 |
5.05 |
90.6 |
9.4 |
| 廿日市市 |
3.47 |
1.33 |
4.80 |
72.2 |
27.8 |
| 大竹市 |
4.30 |
0.18 |
4.48 |
96.1 |
3.9 |
| 海田町 |
2.60 |
0.08 |
2.68 |
96.9 |
3.1 |
| 坂町 |
1.77 |
0.11 |
1.88 |
94.1 |
5.9 |
| 東広島市 |
1.39 |
0.07 |
1.46 |
95.1 |
4.9 |
| 府中町 |
0.78 |
0.04 |
0.81 |
95.2 |
4.8 |
この表から読み取れること: 市町ごとに「両方比率」 が異なる (平均 84%, 標準偏差 24% if applicable)。H4 (制度差の市町別ばらつき): 市町別審議の結果として制度差が生まれる。
【RQ3】 沿岸人口・建物との空間関係 — 密度比 13.7 倍
RQ3 の狙い
警戒区域指定面積を母数とした「守るべき人口」を市町別に算出し、
都市沿岸 vs 中山間沿岸の構造的対比を抽出する。これにより:
- L22 既扱の市町別人口を母数として、区域内人口の代理指標を計算
- 区域内 km² 当たりの人口密度で都市部 vs 中山間沿岸の差を測定
- 地理区分別 (都市部 / 中間 / 中山間) に集計
- 市町別指定面積比 (= 警戒区域 / 市町総面積)でハザード露出度を計算
これは単なる「市町別 km² の集計」 ではなく、人口に対するハザード露出を
全沿岸 19 市町について比較し、防災投資優先度の地理パターンを抽出する研究。
手法 (前置き解説)
- 市町ロールアップ: 「広島市安佐南区」 等の区別記載を「広島市」 に集約。
L22 では広島市が 1 行に集約済みなので結合が容易。
- 推定区域内人口:
市町総人口 × (警戒指定面積 / 市町面積)。
一様分布の仮定であり厳密ではないが、市町間比較には十分な代理指標。
- 区域内人口密度:
推定区域内人口 / 警戒区域面積。
これは事実上「市町総人口密度」 と同じ値になる (一様仮定のため)。
しかし警戒区域指定があるエリア限定で「ハザード露出 + 人口」の同時指標。
- 地理区分: 人口密度を 3 区分 (都市部 ≥ 1,000/km² / 中間 200-1,000 / 中山間 < 200)。
L62 で使用した区分と同じ規則。
- 指定面積比:
警戒区域 / 市町総面積。市町ごとの「ハザード露出度」。
湾奥小規模町は比率が高く、内陸広大市町 (沿岸の一部のみ) は比率が低い。
入出力の Before/After 例 (1 市町分)
| 段階 | 例: 福山市 |
| (0) 市町集計 | 警戒指定面積 = 31.2 km², 市町総面積 = 518 km² |
| (1) L22 結合 | + pop_total = 461,357, density_per_km2 = 891 |
| (2) 指定面積比 | + 指定面積比_% = 31.2 / 518 × 100 = 6.0% |
| (3) 推定区域内人口 | + 推定区域内人口 = 461,357 × 6.0% = 27,683 人 |
| (4) 人口密度 | + 人口密度_区域内 = 27,683 / 31.2 = 891 人/km² |
| (5) 地理区分 | + 地理区分 = 「中間地域」 (density 200-1000) |
実装コード (市町ロールアップ + L22 結合 + 推定人口 + 地理区分)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | # 1. 市町ロールアップ + 警戒区域集計 (RQ1 で計算済の city_rolled を使う)
city_rolled # [市町名, total_km2, 平均深さ_m, ...]
# 2. L22 既扱の人口データと結合
import pandas as pd
pop_df = pd.read_csv("lessons/assets/L22_city_summary.csv", encoding="utf-8-sig")
pop_df = pop_df.dropna(subset=["city"])
merged = city_rolled.merge(
pop_df.rename(columns={"city":"市町名", "area_km2":"市町面積_km2"}),
on="市町名", how="left",
)
# 3. 指定面積比 (警戒区域 / 市町総面積)
merged["指定面積比_%"] = (merged["total_km2"] / merged["市町面積_km2"] * 100).round(2)
# 4. 推定区域内人口 (一様分布の仮定)
merged["推定区域内人口"] = (merged["pop_total"] *
merged["total_km2"] / merged["市町面積_km2"]).round(0)
merged["人口密度_区域内"] = (merged["推定区域内人口"] / merged["total_km2"]).round(0)
# 5. 地理区分 (人口密度ベース)
def classify_geo(row):
if row["density_per_km2"] >= 1000: return "都市部"
if row["density_per_km2"] >= 200: return "中間地域"
return "中山間部"
merged["地理区分"] = merged.apply(classify_geo, axis=1)
# 6. 地理区分別集計
geo_summary = merged.groupby("地理区分").agg(
市町数=("市町名", "count"),
指定面積_合計km2=("total_km2", "sum"),
人口_合計万人=("pop_total", lambda s: s.sum() / 10000),
平均人口密度区域内=("人口密度_区域内", "mean"),
).round(2).reset_index()
print(geo_summary)
# 7. 上位 vs 下位の人口密度比較
top3 = merged.head(3)
bot3 = merged.tail(3)
ratio = top3["人口密度_区域内"].mean() / bot3["人口密度_区域内"].mean()
print(f"密度比 上位/下位 = {ratio:.1f} 倍")
|
図 7: なぜこの図か (RQ3)
「警戒区域内の推定人口がどう地理分布しているか」 (左 choropleth) と
「警戒区域指定面積 vs 区域内人口密度の散布」 (右散布) を 1 ペアで読みたい。
左は人口を OrRd で色分け、右は地理区分別に散布
(バブル径 = 市町総人口) で都市部 vs 中山間沿岸の構造対比を見せる。
この図から読み取れること:
- 左 choropleth: 人口大都市部 (広島市・福山市・呉市)で推定区域内人口が大きい。
これは市町総人口の大きさを反映。
- 左 choropleth: 中山間沿岸 (江田島市・大竹市・竹原市)は推定区域内人口が小さい。
警戒区域は広いが人口が少ないため。
- 右散布: 都市部 (赤)は左下に、中山間 (青)は左下〜右下に分布。
横軸は警戒指定面積、縦軸は人口密度 (log)。
- 右散布: 広島市等の都市市町は人口密度が高く、
江田島市・大竹市等の小規模町は人口密度が低い。
- 密度比 上位/下位 = 13.7 倍。
H5 (≥ 5 倍) 強支持。
都市部沿岸の防災投資優先度の高さを定量化。
図 8: なぜこの図か (RQ3)
「地理区分別 (都市部 / 中間 / 中山間) に指定面積と人口がどう異なるか」 (左) と
「市町別 指定面積比 (警戒/総) で誰がハザード露出度が高いか」 (右) を 2 ペインで読みたい。
左二軸棒は地理区分別に指定面積 (赤) と人口 (青) を比較、
右横棒は指定面積比のランキングで地形特性を反映する市町を抽出。
この表から読み取れること:
- 左二軸: 地理区分別の構造対比が明確。
都市部: 指定面積は中規模だが人口が圧倒的。
中山間部: 指定面積は中-大規模だが人口が少ない。
中間地域: バランス型。
- 左二軸: 都市部の人口密度 (区域内) が圧倒的。
これは「狭い指定 + 大人口 = 都市部」 と「広い指定 + 少人口 = 中山間沿岸」 の対比。
- 右ランキング: 指定面積比 (警戒/市町総) のトップは湾奥小規模町。
これは「市町の大半が警戒区域」 になる地形 = ハザード露出度が極めて高い。
- 右ランキング: 指定面積比 1% 未満の市町は沿岸の一部のみが警戒区域。
これは大規模市町 (= 内陸面積大) で見られる。
- 政策的含意: 「警戒区域 km² と人口」 の組み合わせで、
都市部 = 単位面積投資効果大 (狭い指定で大人口を守る)、
中山間沿岸 = 広範な指定で少数を守る (避難経路整備が課題) という
防災投資戦略の地理的差異が見える。
表: 市町別 人口関係 (Top 15)
| 市町名 |
市町区分 |
市町総人口 |
市町面積_km2 |
指定面積_km2 |
指定面積比_% |
推定区域内人口 |
人口密度_区域内 |
地理区分 |
| 広島市 |
政令市 |
1200754 |
906.7 |
42.33 |
4.67 |
56060 |
1324 |
都市部 |
| 福山市 |
中核市 |
460930 |
518.1 |
37.34 |
7.21 |
33222 |
890 |
中間地域 |
| 呉市 |
中核市 |
214592 |
352.8 |
16.89 |
4.79 |
10275 |
608 |
中間地域 |
| 尾道市 |
市 |
131170 |
285.1 |
15.62 |
5.48 |
7187 |
460 |
中間地域 |
| 三原市 |
市 |
90573 |
471.6 |
8.66 |
1.84 |
1664 |
192 |
中山間部 |
| 江田島市 |
市 |
21930 |
100.7 |
7.73 |
7.67 |
1683 |
218 |
中間地域 |
| 竹原市 |
市 |
23993 |
118.2 |
5.05 |
4.27 |
1024 |
203 |
中間地域 |
| 廿日市市 |
市 |
114173 |
489.5 |
4.80 |
0.98 |
1120 |
233 |
中間地域 |
| 大竹市 |
市 |
26319 |
78.7 |
4.48 |
5.69 |
1499 |
335 |
中間地域 |
| 海田町 |
町 |
29636 |
13.8 |
2.68 |
19.45 |
5764 |
2148 |
都市部 |
| 坂町 |
町 |
12582 |
15.7 |
1.88 |
11.98 |
1507 |
802 |
中間地域 |
| 東広島市 |
施行時特例市 |
196608 |
635.3 |
1.46 |
0.23 |
453 |
309 |
中間地域 |
| 府中町 |
町 |
51155 |
10.4 |
0.81 |
7.83 |
4006 |
4918 |
都市部 |
この表から読み取れること: 推定区域内人口の上位は人口大都市。指定面積比 (= 市町総面積に対する警戒区域比率) は湾奥小規模町で高く、大規模内陸付き市町で低い。地形特性が直接反映される。
表: 地理区分別 比較
| 地理区分 |
市町数 |
指定面積_合計km2 |
人口_合計万人 |
平均人口密度区域内 |
| 中山間部 |
1 |
8.66 |
9.06 |
192.00 |
| 中間地域 |
9 |
95.26 |
120.23 |
450.89 |
| 都市部 |
3 |
45.83 |
128.15 |
2796.67 |
この表から読み取れること: 都市部 vs 中間 vs 中山間の構造対比。指定面積は地理区分間で比較的均等だが、人口は都市部が圧倒的。これが「狭い指定 + 大人口」 vs 「広い指定 + 少人口」 の構造を生む。
仮説検証総合
本記事の 5 仮説と観測結果の照合:
| 仮説 |
観測値 |
判定 |
解釈 |
| H1 浅水 (<2m) 支配 |
観測 浅水 = 72.8%, 深水 = 8.8% |
強支持 |
H1 強支持: 警戒区域の 73% が 2m 未満の浅水帯。3m 超は 9%。瀬戸内海の地形特性 = 太平洋側より浅い津波想定が指定にも反映。重み付き平均は 1.47m |
| H2 上位 3 市町シェア ≥ 40% |
観測 = 64.5% (Top 1: 広島市, Top 2: 福山市, Top 3: 呉市) |
強支持 |
H2 強支持: 上位 3 市町で 64% を占める偏在型。湾奥 + 干拓地 + 多島海の 3 地形類型が指定面積を支配。広島市のみで 42.3 km² =全体の 26% |
| H3 想定 ⊃ 指定 (包含関係) |
観測 包含率 (L63 ⊂ L49) = 70.1% |
部分支持 |
H3 部分支持: 包含率 70% = 指定の大部分は想定内に位置する。残り 30% は「指定のみ (想定外)」で、これは想定図の更新前に指定されていた範囲または地形補正の影響 |
| H4 「制度差」 の市町別ばらつき |
観測: 各市町で 両方率 平均 = 84% ± 24% |
支持 |
H4: 市町ごとに想定 ∩ 指定 の比率が異なる。沿岸地形 (湾奥 vs 平野 vs 多島海) や指定告示当時の想定図の世代差を反映。市町別審議の結果として制度差が生まれる |
| H5 都市部 vs 中山間沿岸 人口密度比 |
観測 上位 3 平均 2,797 vs 下位 3 平均 204 = 13.7 倍 |
強支持 |
H5 強支持: 区域内人口密度の 上位/下位比 13.7 倍 = 都市部沿岸の防災投資優先度が 中山間沿岸の 14 倍。狭い指定 + 大人口 = 都市部 vs 広い指定 + 少人口 = 中山間沿岸 の構造対比 |
3 RQ × 3 結論
- RQ1 結論: 広島県の津波災害警戒区域は160 km² (= 178,004 セル, 30m 集約後)。広島市・福山市・呉市の 上位 3 市町で 64% を占める偏在型分布。基準水位は 1.0〜2.0m が最大ランクで浅水 (<2m) が 73%。これは瀬戸内海津波の地形特性 (= 太平洋側より浅い) を反映。重み付き平均は 1.47 m = 「住民避難が必要な水位」 の指定基準と整合。
- RQ2 結論: L49 想定 ⊃ L63 指定の包含関係を実データで確認。包含率 = 70% (指定の 70% が想定内)。制度的隙間 (想定のみ) 12.0 km²は L49 が 2025-12-03 に最新版へ更新されたのに対し L63 が 2019-03-02 告示で固定されているため、この 6 年間で想定が拡大した影響。「指定のみ (47.9 km²)」は告示当時の慎重派指定の名残。市町別の制度差ばらつき (両方比率 標準偏差) は市町別審議の結果として 地理パターン化された。「想定 vs 指定」 の制度差が空間統計で初めて定量化された。
- RQ3 結論: 区域内人口密度は都市部 >> 中山間沿岸の構造的偏在。上位 3 平均 (2,797 人/km²) vs 下位 3 平均 (204 人/km²) = 13.7 倍差。これは「狭い指定 + 大人口 = 都市部沿岸」 vs 「広い指定 + 少人口 = 中山間沿岸」 の構造対比。防災投資戦略は地理区分で異なる必要があり、都市部 = 単位面積投資効果大、中山間沿岸 = 避難経路整備が課題という政策的含意が抽出された。
制度史的位置付け
本データ (#47) は「想定 → 指定 → 行為制限」の制度3層構造のうち「指定」を扱う。L49 (#46) が「想定」側、本研究の RQ2 で両者の関係を実データ化。L62 (#41) が「災害発令」側、L61 (#1278) が「過去災害事実」側を扱ったのに対し、L63 は「制度的指定の地理範囲」を扱う。これにより場所 (L03) + 想定 (L49) + 指定 (L63) + 発令 (L62) + 事実 (L61) という 防災制度の5 系統サイクルが完結する。
本研究の重要発見は「L49 ⊃ L63 包含率 70%」と 「上位/下位人口密度比 13.7 倍」。前者は技術的想定と法的指定の制度的整合を、後者は都市沿岸 vs 中山間沿岸の構造対比を 初めて定量化した。これらは防災行政の「制度差の地理学」と 「ハザード人口密度に基づく投資戦略」という新たな研究テーマを開く。
津波防災地域づくり法の制度進化
津波防災地域づくり法は2011 年 12 月 14 日に制定された。これは2011 年 3 月 11 日東日本大震災から 9 ヶ月後の制定で、制度的応答の最速例の 1 つ。広島県は 2019-03-02 に告示を行い、現在のデータはその時点の指定範囲。太平洋沿岸の県 (静岡・高知等) では特別警戒区域 (オレンジゾーン) も指定されているが、瀬戸内海沿岸の広島県では特別警戒区域は未指定。これは津波の最大水位が太平洋側より浅いという地形的事実を反映している。
発展課題
結果 X → 新仮説 Y → 課題 Z (3 RQ × 1 課題以上)
発展課題 1 (RQ1 由来): 警戒区域の形状特性 (周囲長 / 面積比) の分析
- 結果 X: 本研究では市町別の指定面積を集計したが、警戒区域 polygon の形状特性
(= 周囲長 / 面積比 = 細長さ指標) は未分析。湾奥は細長く、平野は塊状になるはず。
- 新仮説 Y: 警戒区域の形状特性は地形類型 (湾奥 / 平野 / 多島海) によって
系統的に異なる。湾奥は細長 (海岸線沿い)、平野は塊状 (干拓地全域)、多島海は分散
(多数の小規模 polygon)。これは「形状で地形を分類できる」仮説。
- 課題 Z: 各 dissolve polygon の
geom.length と geom.area から
Polsby-Popper score (= 円形度) を計算 → 市町別ヒストグラムで形状分布を比較。
クラスタリング (K-means on shape features) で地形類型を自動分類。
「形状空間学」として展開。
発展課題 2 (RQ1 由来): 標高 (L40) との照合 → 遡上高の妥当性検証
- 結果 X: 警戒区域は基準水位 (浸水深) を持つが、標高との関係は未確認。
警戒区域の標高分布が「全て沿岸低地 (≤ 5m)」 なのか、それとも一部高所も含むのか。
- 新仮説 Y: 警戒区域の標高は圧倒的に低地 (≤ 5m) に集中するが、
湾奥の急勾配地形では遡上で標高 5-10m まで指定される。
これは津波の遡上高 (run-up) の物理的特性を反映する。
- 課題 Z: L40 の5m DEMを警戒区域 polygon に
zonal_statistics で
集計 → 各 polygon の標高分布を抽出。ヒストグラム + 標高 vs 基準水位の散布で
「想定遡上高」を検証。L40 + L63 の地形ハザード統合として展開。
発展課題 3 (RQ2 由来): 市町別「指定の遅延 / 先行」 の地理パターン
- 結果 X: 本研究では「両方比率」 を市町別に集計したが、「指定のみ (想定外)」と
「想定のみ (指定外)」の市町別バランスは未深掘り。
ある市町は「想定外を慎重に指定 (= 先行型)」、別市町は「想定を全部指定 (= 包括型)」 の差があるはず。
- 新仮説 Y: 「指定のみ比率」 が高い市町は慎重派 (= 先行型)、
「想定のみ比率」 が高い市町は保守派 (= L49 の更新が指定に追従していない)。
これは市町担当者の制度運用文化を反映する。
- 課題 Z: 市町別「指定のみ比率」 と「想定のみ比率」 を散布 → 4 象限分類
(慎重派 / 保守派 / 包括派 / 慎重保守混合)。市町災害対応報告書の文言分析で
指定方針の文言比較 → 文化分類との対応を検証。制度運用文化の地理学として展開。
発展課題 4 (RQ3 由来): L20 新築建物との行為制限の効果検証
- 結果 X: 本研究では推定区域内人口を計算したが、L20 新築建物との照合は未実施。
警戒区域内の新築は告示後にどう変化したか未確認。
- 新仮説 Y: 警戒区域指定 (2019-03-02 告示) 後、警戒区域内の新築件数が減少した可能性。
これは「行為制限なし」 の指定でも、ハザード情報の透明化で住民の選好が変化した結果。
- 課題 Z: L20 新築建物 polygon (年別) と本研究の警戒区域 polygon を sjoin →
告示前 (2014-2018) vs 告示後 (2019-2024) の新築件数を市町別に比較。
DID (Difference-in-Differences) 分析で「指定が新築抑制効果を持つか」を検証。
L20 + L63 の制度建築統合として展開。
発展課題 5 (RQ3 拡張): L32-L34 港湾施設との復旧優先度分析
- 結果 X: 本研究では人口を扱ったが、港湾施設 (L32-L34) との関係は未分析。
警戒区域内の港湾は津波被災時の復旧優先度の根拠になる。
- 新仮説 Y: 警戒区域内の港湾施設密度は市町別に大きく異なる。
呉港・福山港・尾道港は警戒区域 + 港湾の重なりが大きく、復旧優先度が高い。
これは港湾の経済的価値と防災の交錯。
- 課題 Z: L32 (防波堤) / L33 (係留施設) / L34 (港湾交通) の point/polygon を
本研究の警戒区域に sjoin → 警戒区域内の港湾施設件数を市町別に集計 →
「警戒区域内港湾密度ランキング」を作成し、復旧優先度マトリクスを提案。
L32-L34 + L63 の制度港湾統合として展開。
発展課題 6 (展望): 全国津波警戒区域との瀬戸内海特性の比較
- 結果 X: 本研究は広島県 1 県の警戒区域を扱ったが、全国比較は未実施。
他県 (静岡・高知・宮城等) の警戒区域と比較すれば、瀬戸内海の特性が浮き彫りになる。
- 新仮説 Y: 瀬戸内海諸県 (広島・岡山・香川・愛媛) の警戒区域は太平洋諸県 (静岡・高知)に比べ
(a) 平均深さが浅い、(b) 特別警戒区域指定が稀、(c) 沿岸距離あたりの面積が小さい。
これは瀬戸内海の地形・水深による津波減衰効果の証拠。
- 課題 Z: 国土地理院の他県津波警戒区域データを取得 → 6 ランクで標準化 →
県別 平均深さ・特別区域指定率・沿岸長あたり面積を比較。
「瀬戸内海津波の地形学」として展開し、全国 47 都道府県のうち
瀬戸内海周辺の特殊性を統計化する。