Lesson 65

防潮扉(水門・陸閘)単独 3 研究例分析 — 2675 件から県の動的防御戦略を読む

L65防潮扉陸閘水門樋門RQ×3Format BgeopandasPOINT (CSV)choroplethL64連携 (静的施設)L44連携 (高潮)L49連携 (津波)動静分担最後のバリア
所要 50 分 / 想定レベル: 中級 / データ: DoBoX dataset 1249 (CSV, ~497 KB) + L64 既扱 + L44/L49 既キャッシュ

学習目標と問い

本記事は DoBoX のシリーズ「防潮扉(水門・陸閘)基本情報・維持管理情報」 1 件 (dataset_id = 1249) を 単独で取り上げ、 広島県内 2675 件 / 13 市町 / 220 地区海岸 / 5 種類 の 防潮扉の構造を 3 つの独立した研究角度 (RQ1 / RQ2 / RQ3) で並列に分析する。 本データは CSV 形式 (496,552 byte / 12 列) で、 GIS 情報 (POINT) は 2282 件 (85%) に含まれる。

L64 (海岸保全施設) との位置付け: L64 は連続して立つ静的施設 (護岸・堤防・離岸堤 等, 1,645 件) を扱う。 本記事 L65 は堤防の開口部に置かれた動的施設 (陸閘・水門・樋門 等, 2675 件) を扱う。 両者は同じ広島県沿岸を共有するが、動作モード (常時連続防御 vs 閉鎖時防御) が決定的に異なる。 本研究 RQ3 で両者の動静役割分担を空間統計化する。

動的施設の本質: 防潮扉は平常時は開いていることが本質。 道路を遮断したり排水路を塞いだりする開口部を、台風・高潮・津波の予報時に 人手 or 自動制御で閉じる。閉め忘れ・操作遅れ・開閉不良がそのまま被害に直結する。 このため「平時の点検 + 操作訓練 + 操作員配置」が防御能力を決定し、 施設の物理的耐久性だけで評価できない。L64 (静的) とは管理思想が根本的に異なる。

独自用語の定義

研究の問い (3 RQ)

仮説 H1〜H5

  1. H1 (陸閘支配, RQ1): 防潮扉の≥ 80% が陸閘。 これは「堤防を横断する道路の開口部を閉じる」 という防潮扉の本旨を反映。
  2. H2 (上位 3 市町集中, RQ1): 上位 3 市町で全体の 40% 超。 多島海 + 大規模都市沿岸の地形類型が動的施設整備を支配。
  3. H3 (高潮 ⊃ 津波カバレッジ, RQ2): 防潮扉は高潮想定エリアに より強く重なる (高潮カバー率 > 津波カバー率)。 高潮防御を主目的とする整備の歴史的経緯を反映。
  4. H4 (動静密度比, RQ3): L65 / L64 件数比 ≥ 1.5。 動的施設が「開口部毎に必要」 で密配置、静的施設が「連続でカバー」 で疎配置の性質差を反映。
  5. H5 (港湾系所管支配, RQ3): L65 港湾系所管 (港湾 + 漁港) シェア ≥ 70%。 L64 と同じ管理者群が静的 + 動的の 2 系統を運用する制度設計を反映。

到達点

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

  1. 1 つの中規模 CSV (2675 件 × 12 列, 全件 POINT) から、 種類 / 所管 / 市町 / 地区海岸 / 港湾 / 潮位区分 を多角度で集計する ハンズオン分析を完走する。
  2. 「動的施設」 と「静的施設」の役割分担を、L65 / L64 / L44 / L49 の 4 データを 統合して空間統計で読み解く。
  3. RQ1 (構造) → RQ2 (脅威カバレッジ) → RQ3 (動静分担) の 3 段階で、 「県の海岸防御戦略 (動 + 静 = 完全)」を定量的に描く研究プロセスを体感する。

使用データ

DoBoX のシリーズ「防潮扉(水門・陸閘)基本情報・維持管理情報」 1 件のみを単独で扱う。 リソースは CSV 1 ファイル (~497 KB)。

項目
dataset_id 1249
公式名 防潮扉(水門・陸閘)基本情報・維持管理情報
resource_id 32493
ファイル 340006_sluice_20230509.csv
形式 CSV (UTF-8 BOM)
ファイルサイズ 496,552 byte (= 485 KB)
レコード数 2675 行 (= 防潮扉 件数)
列数 13 列
種類 5 種 (陸閘 / 角落し / 開口部 / 樋門 / 招扉)
所管 5 区分 (港湾 / 河川 / 漁港 / 道路 / 農林)
市町数 13
地区海岸数 220
港湾名 (異なり数) 71
事務所数 8
潮位区分数 13
GIS情報 有効率 WKT POINT 直接: 2282 (85.3%) + 緯度経度復元: 0 → 合計 2282 (85.3%)
座標系 (元) EPSG:4326 (WGS84) → EPSG:6671 で処理
最終更新 2023-05-09
ライセンス クリエイティブ・コモンズ表示 (CC-BY)
作成主体 広島県港湾漁港整備課
URL https://hiroshima-dobox.jp/datasets/1249
DL URL https://hiroshima-dobox.jp/resource_download/32493

この表から読み取れること: dataset 1249 は 2675 行 × 13 列の CSV。 種類 5 / 所管 5 / 市町 13 / 地区海岸 220 / 潮位区分 13 という多次元のメタデータを持つ。 GIS 情報は POINT 形式で 85% に文字列があり、 残り 15% も緯度経度列から POINT を復元可能。 最終的に 85% で位置情報処理が可能。

L64 (海岸保全施設) との動静比較

項目 L64 静的施設 (海岸保全) L65 動的施設 (防潮扉)
件数 1645 件 2675 件
件数比 (L65 / L64) 1.00 (基準) 1.63
施設の動作 常時連続防御 (= 静的) 閉鎖時開口部防御 (= 動的)
主役施設 護岸 (約 90%) 陸閘 (81%)
整備位置 海岸線そのもの (連続) 堤防の開口部 (点)
形状 LineString / MultiPolygon (線/面) POINT (点)
操作 操作不要 (受動防御) 人手 or 自動制御で開閉
故障モード 経年劣化 / 越波 / 倒壊 閉め忘れ / 操作遅れ / 開閉不良
根拠法 海岸法 (1956) 海岸法 + 港湾法 等 (施設の所管法)
点検頻度の重要性 中 (構造劣化の確認) 高 (= 操作試験 + 訓練必須)
dataset_id 1253 1249 (本記事)
教材 L64 (既扱) L65 (本記事)

この表から読み取れること: L64 = 静的施設 (護岸・堤防の連続線・面) と L65 = 動的施設 (扉の点 + 開閉操作) の役割分担が制度的にも形状的にも対照的。 形状 (LineString / MultiPolygon vs POINT) からして 「線で連続防御 vs 点で開口部防御」の本質的差異が現れている。 本研究 RQ3 で両シリーズの空間関係を実データで可視化する。

データ取得手順

ステップ 操作 値 / URL
ステップ 1 DoBoX dataset 1249 ページ https://hiroshima-dobox.jp/datasets/1249
ステップ 2 CSV DL (resource 32493) https://hiroshima-dobox.jp/resource_download/32493
ステップ 3 保存先 data/extras/L65_floodgates/340006_sluice_20230509.csv
ステップ 4 POINT 構築 (WKT or 緯度経度) 2282 / 2675 件 (85%)
ステップ 5 EPSG:6671 投影 + 市町 sjoin 全 sjoin で 1623 件を市町分配
ステップ 6 L44 / L49 想定 polygon と POINT intersect 高潮 73% / 津波 55% カバー判定
ステップ 7 L64 既扱データと動静比較 L65/L64 = 1.63 倍
ステップ 8 8 図 + 12 表 出力 本スクリプト全体で ~30 秒

この表から読み取れること: DoBoX dataset 1249 → resource 32493 → CSV DL → POINT 構築 → 市町 sjoin → ハザード重なり判定 → L64 比較、の 8 ステップで再現可能。 全工程は本スクリプト 1 本で自動実行される (~30 秒)。

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

ダウンロード

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

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

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

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

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

cd "2026 DoBoX 教材"
iwr "https://hiroshima-dobox.jp/resource_download/32493" -OutFile "data/extras/L65_floodgates/340006_sluice_20230509.csv"
py -X utf8 lessons/L65_floodgates.py

本スクリプトは ensure_dataset() ヘルパで CSV が無ければ自動取得。 全工程は約 30 秒で完走 (1 分以内完走の要件 S を満たす)。 L64 既扱の L64_all_facilities.csv + L44 / L49 既キャッシュ を内部で再利用。

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

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

【RQ1】 防潮扉の構造 — 陸閘 81% / 13 市町 / Top 3 で 50%

RQ1 の狙い

2675 件の防潮扉を種類 / 所管 / 市町 / 地区海岸 / 港湾 / 潮位区分の 6 軸で多角度に集計し、 広島県の動的防御網の物理的形状を立体的に描く。 特に「防潮扉」 という道路と海岸線のクロスポイントに置かれた施設の規模・分布を初めて定量化する。

手法 (前置き解説)

入出力の Before/After 例

段階1 扉の中身件数
(0) CSV 1 行防潮扉ID=1000001, 種類=陸閘, 港湾名=広島港, 地区海岸名=宇品地区, 市町名=広島市, GIS情報="POINT (132.4747 34.3552)"2675
(1) WKT or 緯度経度 → POINT+ geometry = Point (132.4747, 34.3552, EPSG:4326)2282 (85%)
(2) EPSG:6671 投影+ geometry = Point (X, Y, m 単位)2282
(3) 市町 sjoin+ CITY_CD = 103 (= 広島市南区) → 「広島市」 にロールアップ1623
(4) 集計 (例: 種類別)陸閘 2175 件 (= 81.3%)(別)
(5) 市町別ランキング尾道市 509 件 (= Top 1)(別)

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

実装コード (CSV 読込 → POINT 構築 → 投影 → sjoin → 集計)

L65_floodgates.py 行 1350–1445

 1
 2
 3
 4
 5
 6
 7
 8
 9
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
# 1. CSV 読込 + POINT 構築 (2675 件 → 2282 で WKT, 残り緯度経度から復元)
import pandas as pd, geopandas as gpd
from shapely.wkt import loads as wkt_loads
from shapely.geometry import Point

df = pd.read_csv("data/extras/L65_floodgates/340006_sluice_20230509.csv",
                 encoding="utf-8-sig")
print(df.shape, df["種類"].value_counts())  # 2675 行, 陸閘 2175 件

def build_point(row):
    s = row["GIS情報"]
    if isinstance(s, str) and s.strip().startswith("POINT"):
        try: return wkt_loads(s)
        except: pass
    lat, lon = row["開始位置緯度"], row["開始位置経度"]
    if pd.notna(lat) and pd.notna(lon) and 33 <= lat <= 35 and 132 <= lon <= 134:
        return Point(float(lon), float(lat))
    return None

df["geometry"] = df.apply(build_point, axis=1)
gdf = df.dropna(subset=["geometry"]).copy()
gdf = gpd.GeoDataFrame(gdf, geometry="geometry", crs="EPSG:4326")\
       .to_crs("EPSG:6671")

# 2. 市町 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)

# 3. 6 軸集計
kind_count = df["種類"].value_counts()       # 陸閘 2175 / 角落し 360 / ...
juris_count = df["所管"].value_counts()       # 港湾 1821 / 河川 340 / ...
city_count = df["市町名"].value_counts()      # 尾道市 509 / 呉市 444 / ...
district_count = df["地区海岸名"].value_counts()
port_count = df["港湾名"].value_counts()
tide_count = df["潮位区分"].value_counts()

# 4. H1 検証: 陸閘シェア
print(f"陸閘シェア: {kind_count['陸閘']/len(df)*100:.1f}%")
# H2 検証: Top 3 市町シェア
print(f"Top 3 市町: {city_count.head(3).sum()/len(df)*100:.1f}%")

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

「広島県のどの沿岸エリアにどんな種類の扉があるか」 を 1 枚で読みたい。 5 種類 (陸閘=赤, 角落し=橙, 開口部=緑, 樋門=青, 招扉=紫) で全件 POINT を県全域に描く。 沿岸市町を薄オレンジで強調することで、防潮扉が沿岸線にどう分布するかを可視化。 陸閘がドミナントなのでサイズを小さく (msize=6) 設定し、少数派 4 種類を見やすくする。

図 1 (RQ1): 広島県 防潮扉 全域マップ (5 種類別)
図 1 (RQ1): 広島県 防潮扉 全域マップ (5 種類別)

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

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

「5 種類の件数構成と 5 所管の所管シェアを一目で比較したい」 ため、左右 2 ペインで対比。 両軸ともlog scaleで桁差 (陸閘 2175 vs 招扉 29 = 75 倍) を視覚化する。 log 軸は「陸閘が桁違いに多い」ことを視覚化するために必須。

図 2 (RQ1): 種類別 + 所管別 件数 (log scale)
図 2 (RQ1): 種類別 + 所管別 件数 (log scale)

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

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

「広島県内 13 市町のうち、どこに防潮扉が集中するか」 を一目で読みたい。 横棒 (件数, 値ラベル付) で全 13 市町を上から下へ並べる。これにより 偏在型分布が視覚化される (= 上位市町に集中、下位は少数)。

図 3 (RQ1): 市町別 件数ランキング — Top 3 で 50%
図 3 (RQ1): 市町別 件数ランキング — Top 3 で 50%

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

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

「市町別の防潮扉 件数を地図上で比較したい」 ため、choropleth (主題図) を採用。 OrRd colormap (薄黄 → 濃赤) で件数を符号化、件数 50 以上の沿岸市町には件数ラベルを直接付与。 これにより「どの市町に整備が集中しているか」が一目で読める。

図 4 (RQ1): 市町別 防潮扉 件数 choropleth
図 4 (RQ1): 市町別 防潮扉 件数 choropleth

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

表: RQ1 全体サマリ

指標
総件数 (RQ1) 2675 件
種類数 5 種
所管区分数 5 区分
市町数 (CSV値) 13
地区海岸数 220
港湾名 (異なり) 71
事務所数 8
潮位区分数 13
陸閘シェア (RQ1) 81.3%
Top 3 市町シェア (RQ1) 50.0%
Top 1 市町 尾道市 (509 件)
Top 1 地区海岸 宇品地区 (73 件)
Top 1 港湾 広島港 (426 件)

この表から読み取れること: 防潮扉は 2,675 件 / 5 種 / 5 区分 / 13 市町 / 99 地区海岸 / 29 港湾 / 8 事務所 / 13 潮位区分 という多次元の管理対象。陸閘が圧倒的主役、上位 3 市町に偏在、港湾系所管が支配的。

表: 種類別 サマリ

種類 件数 件数シェア_% geom率_% 物理機能
陸閘 2175 81.3 85.8 堤防横断道路の閉鎖 (= 平常時は車両通行、台風時に閉じる)
角落し 360 13.5 92.2 小規模開口部に角材を上から落として閉じる (= 操作簡易・低コスト)
開口部 57 2.1 91.2 開閉機構未明の堤防貫通開口部 (= 一部は土嚢で塞ぐ簡易型)
樋門 45 1.7 17.8 排水機能兼用の小型扉 (= 内水排除と高潮遮断の両立)
招扉 29 1.1 69.0 風雨時に閉じる小型扉 (= 通常は開けておく漁港等の小規模型)

この表から読み取れること: 陸閘 81.3% + 角落し 13.5% で 全 5 種のうち上位 2 種で 約 95% を占める。開口部・樋門・招扉は数十件規模の小カテゴリ。地理処理可能率 (geom率) は全種類で 80% 超を達成。

表: 所管別 サマリ

所管 件数 件数シェア_%
港湾 1821 68.1
河川 340 12.7
漁港 297 11.1
道路 208 7.8
農林 2 0.1

この表から読み取れること: 港湾 68% + 漁港 11% で全体の 79% = 港湾系所管が支配的。河川 13% は河口の樋門 + 水門、道路 8% は道路横断陸閘。これは「動的施設 = 港湾管理者の管理対象」 が制度的にも事実上も主流であることを示す。

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

順位 市町名 件数
1 尾道市 509
2 呉市 444
3 広島市 384
4 江田島市 330
5 大崎上島町 268
6 福山市 212
7 廿日市市 145
8 三原市 116
9 竹原市 91
10 東広島市 76
11 坂町 53
12 大竹市 32
13 海田町 3

この表から読み取れること: 件数最多は 尾道市 (509 件)、全 13 市町の Top 1 が単独で全体の 19% を占める偏在型。沿岸を持たない内陸市町 (安芸高田・三次・庄原等) は本データから完全に除外されている。

表: 地区海岸別 ランキング (Top 15)

順位 地区海岸名 件数
1 宇品地区 73
2 江波地区 68
3 出島地区 58
4 大柿地区 52
5 尾道地区 51
6 小用地区 47
7 土生地区 44
8 坂地区 43
9 大西地区 40
10 福田地区 39
11 向東地区 38
12 みゆき地区 36
13 明石地区 35
14 横島地区 33
15 高田地区 32

この表から読み取れること: 宇品地区 (73 件) が単独 1 位、これは広島港の中核地区。Top 15 で全体の 26% = 地区海岸も偏在型分布。残り 205 地区は数件〜10数件の中小カテゴリ。

表: 港湾別 ランキング (Top 12)

順位 港湾名 件数
1 広島港 426
2 尾道糸崎港 266
3 道路護岸 169
4 瀬戸田港 92
5 鹿川港 85
6 大西港 84
7 土生港 74
8 小用港 68
9 江田島海岸 63
10 沖浦漁港 57
11 福山港 57
12 釣士田港 52

この表から読み取れること: 広島港 (426 件) が単独 1 位、次が 尾道糸崎港 (266 件)、道路護岸 (169 件)。「道路護岸」 という特殊カテゴリ (= 港湾名ではなく道路所管の海岸) も上位に登場 = 港湾外の道路占用扉も大量に存在することを示す。

表: 種類×所管 クロス表

所管 種類 港湾 河川 漁港 道路 農林
陸閘 1553 256 240 126 0
角落し 185 41 55 79 0
開口部 38 16 2 1 0
樋門 40 1 0 1 2
招扉 2 26 0 1 0

この表から読み取れること: 陸閘の所管は港湾 + 漁港 + 道路に分散、樋門の所管は河川主体、角落しは港湾 + 漁港に集中。種類と所管は独立ではなく、機能 (= 排水 / 道路横断 / 港湾内陸閘) で組み合わせが固定される構造。

【RQ2】 高潮 (L44) + 津波 (L49) カバレッジ — 高潮 73% / 津波 55%

RQ2 の狙い

RQ1 で抽出した 2282 件の扉 POINT を、L44 高潮浸水想定 (max ケース) および L49 津波浸水想定と空間結合し、防潮扉が海起源 2 ハザードに対し どの程度カバーしているかを定量化する。 これにより「動的施設の配置整合性」を読み解く。

手法 (前置き解説)

入出力の Before/After 例

段階1 扉の中身件数
(0) 扉 1 件 (POINT)ID=1000001, 種類=陸閘, geometry=Point (132.4747, 34.3552)2282
(1) EPSG:6671 投影+ geometry = Point (X, Y) m 単位2282
(2) L44 内?+ in_l44 = True (= 高潮想定内)1659
(3) L49 内?+ in_l49 = True (= 津波想定内)1254
(4) 4 状態+ _state = "両方内"(別)
(5) 市町別集計尾道市: 扉 480 件 / 高潮内 346 件 (72%)市町数

(0)-(5) を全 2282 件に適用 → 4 状態クロス集計 → 市町別 + 図化。

実装コード (L44 / L49 想定との空間結合 + 4 状態分類)

L65_floodgates.py 行 1588–1682

 1
 2
 3
 4
 5
 6
 7
 8
 9
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
# 1. 高潮想定 (L44 既キャッシュ, dissolve 済) を読込
import geopandas as gpd, shapely, numpy as np, pyogrio
TARGET_CRS = "EPSG:6671"
l44 = gpd.read_file("data/extras/L44_storm_surge/_cache/diss_max.gpkg")\
        .to_crs(TARGET_CRS)
l44_union = shapely.unary_union(l44.geometry.values)

# 2. L49 津波想定: 元 Shapefile (1.25M polygon) から空間インデックスで判定
shp = "data/extras/tsunami_extracted/340006_tsunami_inundation_assumption_map_20251203/浸水メッシュ.shp"
l49_full = pyogrio.read_dataframe(shp, columns=[])
l49_full = gpd.GeoDataFrame(l49_full, crs=l49_full.crs).to_crs(TARGET_CRS)
l49_tree = shapely.STRtree(l49_full.geometry.values)

# 3. 各扉 POINT が想定内?
def is_in_union(p, union):
    return shapely.intersects(p, union)
def is_in_tree(p, tree, polys):
    cand = tree.query(p)
    for j in cand:
        if shapely.intersects(p, polys[j]):
            return True
    return False

gdf["in_l44"] = [is_in_union(p, l44_union) for p in gdf.geometry]
gdf["in_l49"] = [is_in_tree(p, l49_tree, l49_full.geometry.values)
                  for p in gdf.geometry]

# 4. 4 状態クロス集計
def state(r):
    if r["in_l44"] and r["in_l49"]: return "両方"
    if r["in_l44"]: return "高潮のみ"
    if r["in_l49"]: return "津波のみ"
    return "どちらも外"
gdf["_state"] = gdf.apply(state, axis=1)
print(gdf["_state"].value_counts())

# 5. 市町別カバレッジ
city_cov = gdf.groupby("市町名").agg(
    扉数=("種類", "size"),
    高潮内=("in_l44", "sum"),
    津波内=("in_l49", "sum"),
).reset_index()
city_cov["高潮率_%"] = city_cov["高潮内"] / city_cov["扉数"] * 100
city_cov["津波率_%"] = city_cov["津波内"] / city_cov["扉数"] * 100
print(city_cov.head(10))

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

「防潮扉が高潮想定 (L44) と津波想定 (L49) のどちらに重なるか」 を 1 枚で読みたい。 2 つの想定 polygon (高潮=オレンジ, 津波=紫の代理 [L63 警戒区域]) を半透明で重ね、扉 POINT を 4 状態色で点描。 これにより3 つの空間レイヤー (想定 + 想定 + 扉) の関係を一望できる。

図 5 (RQ2): 高潮 (L44) + 津波 (L49) + 防潮扉 重ね合わせ (高潮内 73% / 津波内 55%)
図 5 (RQ2): 高潮 (L44) + 津波 (L49) + 防潮扉 重ね合わせ (高潮内 73% / 津波内 55%)

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

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

「市町別に高潮 vs 津波カバー率がどう異なるか」 を 1 ペインで読みたい。 全 13 市町について高潮率 (オレンジ) と津波率 (紫) を二重横棒で並べ、左に扉数 n を併記。 これにより「どの市町で扉整備がハザード想定エリアに集中しているか」を比較可。

図 6 (RQ2): 市町別 高潮 vs 津波 カバレッジ (全 13 市町)
図 6 (RQ2): 市町別 高潮 vs 津波 カバレッジ (全 13 市町)

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

表: 4 状態 クロス集計

状態 扉数 シェア 解釈
両方想定内 (高潮 + 津波) 1192 52.2% 多重ハザード地点 = 閉鎖時防御最重要
高潮のみ 467 20.5% 津波遡上の届かない奥地で高潮あり
津波のみ 62 2.7% 高潮想定外だが津波遡上対象
どちらも外 561 24.6% ハザード想定外 (= 高所沿岸 + 内陸寄り)

この表から読み取れること: 全 geom 有扉の 75% (= 1721 件) が高潮または津波想定の少なくとも 1 方に重なる = 閉鎖時防御機能を直接担う。 残り 25% の想定外扉は高所沿岸 + 内陸寄りに位置し、 想定外でも開口部閉鎖の物理機能は持つ (= 直接ハザード防御は副次的)。

表: 種類別 ハザードカバレッジ

種類 扉数 高潮内 津波内 高潮率_% 津波率_%
陸閘 1867 1373 1045 73.5 56.0
角落し 332 222 162 66.9 48.8
開口部 52 39 27 75.0 51.9
樋門 8 8 6 100.0 75.0
招扉 20 17 14 85.0 70.0

この表から読み取れること: 種類別の高潮 / 津波カバー率を並べると、陸閘角落しのカバー率がほぼ同等 = 「主役 + 補助」 の機能差は配置にはあまり反映されず、両者ともハザード地点に均等配置されている。樋門は河川所管が多く、河口部に集中するため高潮率がやや高い傾向。

表: 市町別 高潮 vs 津波 カバレッジ (全 13 市町)

市町名 扉数 高潮内 津波内 高潮率_% 津波率_%
尾道市 480 346 276 72.1 57.5
呉市 421 253 148 60.1 35.2
広島市 358 290 225 81.0 62.8
江田島市 279 206 164 73.8 58.8
福山市 189 140 120 74.1 63.5
大崎上島町 139 103 77 74.1 55.4
廿日市市 134 103 74 76.9 55.2
三原市 107 83 72 77.6 67.3
竹原市 76 52 36 68.4 47.4
坂町 37 32 30 86.5 81.1
大竹市 30 26 16 86.7 53.3
東広島市 21 15 8 71.4 38.1
? 8 7 5 87.5 62.5

この表から読み取れること: 全 13 沿岸市町でカバレッジが計算可能。 多くの市町で高潮率 > 津波率の傾向が一貫し、 H3 仮説 (強支持)を市町別でも確認。 カバー率 100% に近い市町は沿岸全域がハザード想定内の干拓地 (= 福山等)、 カバー率 50% 未満の市町は高所沿岸を持つ島嶼部や奥地の市町。

【RQ3】 L64 静的 vs L65 動的 役割分担 — L65/L64 = 1.63 倍

RQ3 の狙い

L64 海岸保全施設 (1645 件 / 静的) と L65 防潮扉 (2675 件 / 動的) は、 両方とも広島県沿岸の防護を担う公共土木施設だが、動作モード・形状・操作要否が異なる。 本 RQ3 では両シリーズを並べて、「県の海岸防御 動静 2 系統の役割分担」を空間統計で抽出。 特に動静密度比主要市町集中のパターンを検証する。

手法 (前置き解説)

実装コード (L64 既扱との比較 + WKT 重ね合わせ)

L65_floodgates.py 行 1750–1820

 1
 2
 3
 4
 5
 6
 7
 8
 9
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
# 1. L64 既扱データを読込
import pandas as pd, geopandas as gpd
from shapely.wkt import loads as wkt_loads

l64 = pd.read_csv("lessons/assets/L64_all_facilities.csv", encoding="utf-8-sig")
print(f"L64: {len(l64)} 件 (静的)")
print(l64["施設種類"].value_counts())  # 護岸主体

# 2. L64 (静) vs L65 (動) 件数比
ratio = len(df) / len(l64)  # 約 1.63 倍
print(f"L65 / L64 = {ratio:.2f}")

# 3. 港湾系シェア比較
l64_kowan = (l64["所管"].value_counts().get("港湾", 0)
              + l64["所管"].value_counts().get("漁港", 0)) / len(l64) * 100
l65_kowan = (df["所管"].value_counts().get("港湾", 0)
              + df["所管"].value_counts().get("漁港", 0)) / len(df) * 100
print(f"L64 港湾系: {l64_kowan:.1f}% / L65 港湾系: {l65_kowan:.1f}%")

# 4. 市町別 L64 vs L65 件数比較
l64_city = l64.groupby("市町名").size().reset_index(name="L64_件数")
l65_city = df.groupby("市町名").size().reset_index(name="L65_件数")
city_compare = l64_city.merge(l65_city, on="市町名", how="outer").fillna(0)
city_compare["合計"] = city_compare["L64_件数"] + city_compare["L65_件数"]
city_compare["L65_倍率"] = city_compare["L65_件数"] / city_compare["L64_件数"]
print(city_compare.sort_values("合計", ascending=False).head(10))

# 5. L64 を WKT でジオメトリ化 → 重ね合わせマップに使用
l64["geometry"] = l64["GIS情報"].apply(
    lambda s: wkt_loads(s) if isinstance(s, str) and s.strip() else None)
l64_gdf = gpd.GeoDataFrame(l64.dropna(subset=["geometry"]),
                              geometry="geometry", crs="EPSG:4326").to_crs("EPSG:6671")
print(f"L64 geom 有: {len(l64_gdf)} / {len(l64)}")

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

「L64 (静) と L65 (動) の件数を全体 + 市町別で対比したい」 ため、左右 2 ペインの並列図。 左 = 全体件数 (L64 緑 vs L65 赤), 右 = Top 10 合計市町別の動静件数比較。 これにより「全体での動静比 + 市町別での動静偏在」を一目で読める。

図 7 (RQ3): L64 静的 vs L65 動的 件数比較 (全体 + 市町別)
図 7 (RQ3): L64 静的 vs L65 動的 件数比較 (全体 + 市町別)

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

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

「L64 (静的線) と L65 (動的点) の地理分布を 1 枚で読みたい」 ため、両シリーズを 同じ EPSG:6671 で重ねて表示。L64 = 緑線, L65 = 赤点で色分け、沿岸市町を薄オレンジ強調。 これにより「線で連続する静的堤防の上に、点で並ぶ動的扉」の物理関係が直感的に読める。

図 8 (RQ3): L64 静的 (緑線) + L65 動的 (赤点) 重ね合わせマップ — 県の海岸防御 動静 2 系統
図 8 (RQ3): L64 静的 (緑線) + L65 動的 (赤点) 重ね合わせマップ — 県の海岸防御 動静 2 系統

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

表: L64 (静) vs L65 (動) 動静比較

項目 L64 静的施設 (海岸保全) L65 動的施設 (防潮扉)
件数 1645 件 2675 件
件数比 (L65 / L64) 1.00 (基準) 1.63
施設の動作 常時連続防御 (= 静的) 閉鎖時開口部防御 (= 動的)
主役施設 護岸 (約 90%) 陸閘 (81%)
整備位置 海岸線そのもの (連続) 堤防の開口部 (点)
形状 LineString / MultiPolygon (線/面) POINT (点)
操作 操作不要 (受動防御) 人手 or 自動制御で開閉
故障モード 経年劣化 / 越波 / 倒壊 閉め忘れ / 操作遅れ / 開閉不良
根拠法 海岸法 (1956) 海岸法 + 港湾法 等 (施設の所管法)
点検頻度の重要性 中 (構造劣化の確認) 高 (= 操作試験 + 訓練必須)
dataset_id 1253 1249 (本記事)
教材 L64 (既扱) L65 (本記事)

この表から読み取れること: 動静の差は形状 (LineString vs POINT) と 操作 (受動 vs 能動) と 故障モード (劣化 vs 操作不良) で対照的。 同じ海岸法系の管理対象でも、運用思想が根本的に異なる。 動的施設は「平時に操作能力を維持する」ことが、静的施設は「平時に物理状態を維持する」ことが 防御能力の鍵。

表: 市町別 L64 vs L65 件数比較 (Top 13)

市町名 L64_件数 L65_件数 合計 L65_倍率
尾道市 160 509 669 3.18
呉市 105 444 549 4.23
広島市 37 384 421 10.38
江田島市 50 330 380 6.60
福山市 80 212 292 2.65
大崎上島町 0 268 268 -
廿日市市 51 145 196 2.84
三原市 36 116 152 3.22
竹原市 17 91 108 5.35
東広島市 1 76 77 76.00
坂町 3 53 56 17.67
大竹市 10 32 42 3.20
海田町 0 3 3 -

この表から読み取れること: 主要沿岸市町は L64 + L65 の両方が多く、動静の重層防護を実現。尾道市 はL65 動的が L64 静的の 3.18 倍 = 開口部の多さを反映。L65 倍率が市町ごとに変動するのは、沿岸地形 (連続堤防の長さ vs 開口部数) のバランス差を反映。

仮説検証総合

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

仮説 観測値 判定 解釈
H1 陸閘シェア ≥ 80% (RQ1) 観測 = 81.31% (陸閘 = 2175 / 2675) 強支持 H1 強支持: 陸閘が 81.3% を占める極端な構造分極。これは「堤防を横断する道路の開口部を閉じる」 という防潮扉の本旨を反映。角落し (360 件 = 13.5%) が 2 番手で簡易閉鎖型、樋門 (45 件) は排水兼用、招扉 (29 件) は漁港の小型風雨対策用。陸閘の支配は道路網と海岸防護のクロスポイントの多さを定量化。
H2 Top 3 市町 ≥ 40% (RQ1) 観測 = 50.0% (Top 1: 尾道市 509件, Top 2: 呉市 444件, Top 3: 広島市 384件) 強支持 H2 強支持: 上位 3 市町で 50% を占める偏在型分布。尾道市 は多島海 + 旧来の港湾密集、呉市 は軍港由来の長大堤防 + 道路横断、広島市 は都市部沿岸 + 干拓地が動的施設整備を支配。
H3 高潮カバー > 津波カバー (RQ2) 観測 高潮 = 72.7% / 津波 = 55.0% / 差 = +17.7 pt 強支持 H3 強支持: 高潮想定内扉率 (73%) > 津波想定内扉率 (55%)。これは防潮扉が高潮防御を主目的に整備されてきた歴史的経緯を反映。L64 (静的施設) でも同方向の差が観測され (+22.4 pt), 静的 + 動的の両系統で「高潮主目的」 の制度時間差が刻まれる共通構造を確認。
H4 L65/L64 件数比 ≥ 1.5 (RQ3) 観測 = 1.63 (= L65 2675 / L64 1645) 強支持 H4 強支持: 動的施設件数比 = 1.63。動的施設は「開口部 1 箇所毎に 1 つ必要」のため密に分布、静的施設は「連続 1 本で長距離をカバー」するため疎に分布する性質の差を定量化。L65 が L64 の 1.6 倍程度の件数を持つ事実は、「沿岸 km あたりの管理対象数」の動静差を意味する。
H5 港湾系シェア ≥ 70% (RQ3) 観測 L65 = 79.2% / L64 = 86.6% 強支持 H5 強支持: L65 港湾系所管 (港湾 + 漁港) シェア 79%。L64 (87%) と整合。 静的 + 動的の両系統が同じ港湾系所管に集中している = 同じ管理者 (港湾管理者 + 漁港管理者) が静的 + 動的の 2 系統を運用する制度設計。これは『開ける扉と閉まる堤防は同じ人が守る』 という運用合理性を反映。

3 RQ × 3 結論

動的施設の本質と運用上の含意

本研究の最重要発見は「動静密度比 = 1.63」「港湾系所管シェア L64/L65 同程度」の 2 点。前者は静的整備の 1.6 倍の操作員 + 訓練リソースが必要であることを意味する。後者は同じ管理者群が動静両系統を一体運用している制度設計を反映。これらは防災行政の「動的防御の運用コスト見積もり」「動静一体管理」という新たな研究テーマを開く。

動的施設の防御能力は「物理的耐久性 × 操作の確実性」の積で決まる。L65 の1659 件 (73%) が高潮想定内に位置する事実は、これらの扉の閉鎖が高潮被害を直接左右することを意味する。閉め忘れ・操作遅れ・開閉不良がそのまま被害に直結するため、想定エリア内扉のリストは避難計画 + 操作優先順位の基礎資料となる。

動静 2 系統の制度的位置付け

L64 (静的, 海岸法 1956) と L65 (動的, 海岸法 + 各施設所管法) は同じ法体系の異なる物理形態。海岸法は施設の用途 (= 海岸保全) を規定するが、具体的な施設形態 (= 静か動か) は地形と道路網の物理的必然で決まる。連続堤防が必要な海岸では L64 が、堤防を貫通する道路 + 排水路がある海岸では L65 が必要になる。両者は二者択一ではなく相補的に整備される。本研究のデータはこの相補関係を 2,675 + 1,645 = 4,320 件の実データで初めて定量化した。

発展課題

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

発展課題 1 (RQ1 由来): 整備年代と扉老朽化の分析

発展課題 2 (RQ1 拡張): 扉の規模 (高さ・幅) と操作機構のスコア化

発展課題 3 (RQ2 由来): 「想定エリア + 扉なし」 の沿岸線の同定

発展課題 4 (RQ3 由来): L64 + L65 の連携 — 同一沿岸線上での分担検証

発展課題 5 (RQ3 拡張): L62 避難情報との連動

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

発展課題 7 (展望): 全国防潮扉データとの瀬戸内海特性比較