Lesson 55
特定盛土等規制区域 単独 3 研究例分析 — 盛土規制法 30 条 1 項の山間地射程と L54 制度補完
L55盛土規制法特定盛土等規制区域RQ×3Format B30条1項制度間補完山間地監督L54連携L52連携L53連携30条系運用
所要 40 分 / 想定レベル: 中級+ / データ: DoBoX dataset 1428 (Shapefile 16 ファイル + XLSX 規制資料) + L52/L53/L54/L10/L11 連携
データ取得手順
✅ このスクリプトは初回実行時にデータを自動取得します(DoBoX からの直接ダウンロード)。
| ID | データセット名 |
| #333 | dataset #333 |
| #444 | dataset #444 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #1427 | 宅地造成等工事規制区域 |
| #1428 | 特定盛土等規制区域 |
| #1429 | 許可盛土等(法第12条第1項・30条第1項) |
| #1430 | 届出盛土等(法第21条第1項・40条第1項) |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L55_specific_filling_zone.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
学習目標と問い
本記事は DoBoX のシリーズ「特定盛土等規制区域」 1 件
(dataset_id = 1428) を 単独で取り上げ、
広島県内の特定盛土等規制区域
81 polygon (主源 = 県知事ファイル) / 15 市町指定 /
union 面積 4626 km² (54.6% of 県土)
を 3 つの独立した研究角度 (RQ1 / RQ2 / RQ3) で並列に分析する。
本データは盛土規制法 (2023-05-26 施行) 第 30 条第 1 項に基づく区域指定で、
2021 年 7 月 静岡県熱海市 伊豆山土石流災害 (盛土崩落) を契機に新設された区域類型。
L54 (12 条 1 項 = 都市計画区域内宅地) が捕捉しきれない山間地・農地・林地の大規模盛土を
法的監督下に置くための「山間地監督の最後のピース」。
本データは DoBoX で16 ファイル構成:
県知事指定の県全域版 1 ファイル (51146, 2023-04-27 版) +
各市町長指定の市町別 15 ファイル (51147〜51161, 2023-09 版)。
ただし市町別ファイルの polygon は県知事ファイルの該当 polygon と完全一致を確認済
(例: 庄原市の市町長ファイル 1057.94 km² polygon = 県知事ファイル中の対応 polygon と同一)。
本研究は県知事ファイル単独を主源データとすることで二重カウントを回避し、
市町別ファイルは「市町長確認済」 のメタ情報として参照する。
本記事はPhase 2 盛土規制系 4 本目 (= L52 許可 / L53 届出 / L54 宅造区域 / L55 特定区域)の
最終ピース。L52 (許可) / L53 (届出) は条文ごとに 12 条系と 30 条系の 2 系統を持ち、
L54 (12 条 1 項) と L55 (30 条 1 項) はそれぞれの地理的根拠。
本記事 RQ3 で初めて L52 / L53 の30 条系内訳を定量化する。
独自用語の定義
- 特定盛土等規制区域: 盛土規制法第 30 条第 1 項に基づき
都道府県知事が指定する区域。L54 (12 条 1 項 = 都市計画区域内宅地) と異なり、
山間地・農地・林地等を含む県下全域を対象に指定可能。
本データは 15 市町・union 面積 4626 km² (54.6% of 県)。
- 30 条 1 項: 盛土規制法の特定区域指定根拠条文。
『宅地造成等工事規制区域以外の土地で、土地の傾斜度・渓流の位置等の自然的条件 +
周辺地域の土地利用等の社会的条件から、特定盛土等が行われた場合に下流市街地の
居住者の生命・身体に危害を生ずるおそれが特に大きいと認められる区域』
を指定する。地形条件 + 下流人口条件を満たす広い領域が対象。
- 許可閾値: 区域内で許可を要する工事規模 (盛土規制法施行令 第 28 条)。
盛土 1m 超の崖を生ずる工事 / 盛土 2m 超 (崖を生じない場合) /
切土 2m 超 / 面積 500m² 超 等。閾値以下でも40 条 1 項届出義務発動。
- 30 条系運用 (本記事独自定義): L52 (許可) / L53 (届出) のうち本特定区域内に
立地するもの = 30 条 1 項許可 / 40 条 1 項届出として運用される。
対する 12 条系 (L54 内) は 12 条 1 項許可 / 21 条 1 項届出。
本研究ではL52 152 件 / L53 284 件を L54 / L55 へ in/out 判定することで、
初めて 12 条系 vs 30 条系の運用差を定量化する。
- 山間地監督の最後のピース (本記事独自定義): L54 (宅造区域, 12 条) は
都市計画区域内 = 沿岸都市偏重で、山間地警戒区域の 61.7% (98 km²) が
制度間ギャップ (= 警戒のみ) として残った (L54 RQ3 で判明)。
L55 (特定区域, 30 条) はそのギャップを埋めるため新設され、
本記事では L54 + L55 合算で警戒のみが
98 → 54 km² に縮小することを定量化。
- 制度間補完 (本記事独自定義): L54 (沿岸都市) と L55 (山間地) は
重複面積 0.0 km² で地理的にほぼ排他。
これは盛土規制法の制度設計上、12 条と 30 条が異なる地域カテゴリを担うように
意図的に区分された結果。本研究では L54 ∪ L55 = 6701 km²
(79.0% of 県) という合算カバレッジを初めて定量化する。
- 地形タイプ (本記事独自定義): 特定区域指定市町を以下 3 タイプに分類:
A 中山間 (庄原・三次・北広島・安芸高田・神石高原・安芸太田・世羅・府中等の中山間市町)、
B 都市辺縁 (三原・尾道・東広島・廿日市の沿岸都市の都市計画区域外辺縁)、
C 島嶼/小規模沿岸 (大崎上島・江田島・大竹)。
L54 の地形タイプ (沿岸都市/内陸/山間) と逆構成になる。
研究の問い (3 RQ)
- RQ1 (主研究): 広島県内の特定盛土等規制区域の地理範囲と山間地カバレッジはどうか?
81 polygon (15 市町) の面積分布、市町別ランキング、
地形タイプ別構成、県総面積に占めるシェアを多角度に集計する。
L54 との地理的補完関係(沿岸 vs 山間)を地図で可視化する。
- RQ2 (副研究 1): 土砂災害警戒区域 (L10/L11 既扱) との重複はどうか?
L55 ∩ 警戒の重複面積、二重リスクエリアの市町別偏在、
L54 + L55 合算後の「警戒のみ」 残存エリアの最終同定を行う。
L55 が L54 の制度間ギャップをどれだけ埋めたかを定量化する診断研究。
- RQ3 (副研究 2): 許可・届出盛土 (L52/L53) との関係 — 30 条系の運用実態はどうか?
L52 152 件 / L53 284 件を L54 / L55 へ in/out 判定し、
12 条系 vs 30 条系の件数・規模・地理を比較する。
30 条系は新法施行 (2023-05-26) 以降の指定で運用蓄積が始まったばかりであり、
本研究は30 条系初期運用の実態を初めて定量化する。
仮説 H1〜H5
- H1 (山間地偏重, RQ1): 16 区域は山間中山間市町に偏在し、
上位 5 (庄原市・三次市・北広島町・安芸高田市・神石高原町等) で全体の 50% 以上を占める。
L54 (沿岸都市偏重) と地理的に補完。
- H2 (大カバー率, RQ1): L55 単独で県の 40% 以上を覆う = L54 (24%) を超える広域指定。
30 条 1 項が地形条件 + 下流人口を満たす広い領域を対象とすることに整合。
- H3 (警戒重複高, RQ2): L55 ∩ 警戒区域の重複率は L54 (2.9%) より高い 10-30%。
30 条 1 項自体が地形条件 + 災害リスクを考慮した区域指定で空間相関が高いはず。
- H4 (制度間ギャップ ≪ L54 単独, RQ2): L54 + L55 合算カバーで「警戒のみ」 は
L54 単独 98 km² から 30 km² 以下に縮小。L55 が L54 のギャップを埋める設計通り。
- H5 (30 条系運用は控えめ, RQ3): L52 のうち L55 内立地は 5-15% 程度。
12 条系 (L54 86%) に比べ少数派。30 条系は新法施行以降の指定で許可案件の蓄積が
始まったばかり。L53 も同傾向。
到達点
本記事を読み終えた学習者は次の 3 点を体感できる:
- 1 つの「区域 Shapefile」 (81 polygon, 県知事 1 + 市町長 15 = 16 ファイル) から、
L54 と L55 の地理的補完性を可視化し、L54 ∪ L55 = 79.0% of 県という
合算カバレッジを定量化する方法を習得する。
- L52 / L53 の30 条系内訳を初めて算出し、12 条系 vs 30 条系の運用差
(規模・件数・地理) を読む眼を獲得する。30 条系は大規模工事を捕捉する制度であることを
実データから確認できる。
- 「警戒のみ」 残存エリアが L54 単独 98 km² から
L54+L55 合算 54 km² に縮小する事実から、
制度間補完設計の有効性を定量診断する手法を体感する。
使用データ
DoBoX のシリーズ「特定盛土等規制区域」 1 件のみを単独で扱う。
リソースは Shapefile 16 件 (県知事 1 + 市町長 15) + XLSX 1 件の計 17 ファイル構造:
| 項目 | 値 |
|---|
| dataset_id | 1428 |
| 名称 | 特定盛土等規制区域 |
| 組織 | 広島県土木建築局 都市環境整備課 |
| リソース 1 (県知事) | 51146 — 県統合 Shapefile (265 行 / 主要 81 polygon, ~6 MB) |
| リソース 2-16 (市町長) | 51147〜51161 — 市町別 Shapefile 計 15 ファイル (確認用) |
| リソース 17 (規制資料) | 51162 — 盛土規制法関係資料 XLSX (L52/L53/L54 と共通) |
| 根拠法 | 宅地造成及び特定盛土等規制法 第 30 条第 1 項 (2023-05-26 施行) |
| 対象地域 | 宅造規制区域 (12 条) 以外で地形条件 + 下流人口を満たす場所 |
| CRS | EPSG:6668 (JGD2011 緯度経度) → 解析時 EPSG:6671 へ変換 |
| 指定日 | 2023-04-27 (新法施行直前) |
| ライセンス | クリエイティブ・コモンズ表示 4.0 |
| 取得日 | 2026-05-09 |
データの構造
- 県知事指定 Shapefile (51146, 約 6 MB): 県全域統合版 (2023-04-27 指定)。
CRS は EPSG:6668 (JGD2011 緯度経度)。
属性は面積 (km²) / N03_001〜N03_007 (国土数値情報行政区域連携属性)等。
本研究では面積 > 1000 m² の主要 polygon (81 件) を抽出。
- 市町長指定 Shapefile (51147〜51161, 計 15 ファイル):
15 市町別の確認用ファイル。polygon は県知事ファイルの該当 polygon と完全一致
(検証済: 庄原市 1057.94 km² polygon が pref と city で同一座標系)。
本研究では二重カウント回避のため県知事ファイル単独を採用し、
市町別はメタ情報のみ参照する。
- XLSX (51162, 23.1 KB): 盛土規制法の規制内容と手続き先。
L52/L53/L54 と同一ファイルで、4 制度共通の参照資料。
- L55 union 面積: 主要 polygon (81 件) を
unary_union で
重複除去した結果 = 4626 km² (54.6% of 県土)。
L54 union (2075 km², 24.5%) の2 倍以上の面積。
CRS と単位の取扱
- 原 CRS = EPSG:6668 (JGD2011 緯度経度) = 度単位。
解析時は EPSG:6671 (JGD2011 平面直角座標系第 III 系) に再投影し、
面積・距離計算をm / m²単位で実施。
- 属性「面積」 列の単位は km²。ただし本データは「面積」 列の値が
0 になっている polygon が多く (260+ 件)、実 geometry 面積と一致しない。
本研究はgeometry.area / 1e6 を主用することで信頼性を担保する。
- トポロジ修復: 県知事ファイルの一部 polygon に自己交差等の不整合があるため、
shapely.make_valid() で前処理してから集計を実施。
本記事は dataset 1428 を単独で扱う Format B 記事。
L52 (dataset 1429 = 許可盛土) / L53 (dataset 1430 = 届出盛土) / L54 (dataset 1427 = 宅造区域) との
比較は RQ2 (L54 制度補完) / RQ3 (L52/L53 30 条系内訳) で使用するが、
それぞれのデータは別レッスンで深掘り済み。
ダウンロード
本レッスンの再現に必要な全データ・中間 CSV・図 PNG・スクリプトを以下から直接 DL できる:
生データ (DoBoX 直リンク)
本記事の中間 CSV (再現用)
図 (PNG 9 枚)
再現スクリプト
個別取得 (PowerShell):
cd "2026 DoBoX 教材"
iwr "https://hiroshima-dobox.jp/resource_download/51146" -OutFile "data/extras/L55_specific_filling_zone/340006_specific_filling_zone_pref_shp_2023-04-27.zip"
iwr "https://hiroshima-dobox.jp/resource_download/51162" -OutFile "data/extras/L55_specific_filling_zone/340006_filling_regulation_related_documents.xlsx"
py -X utf8 lessons\L55_specific_filling_zone.py
注: RQ2 (L54 制度補完) には L54 の Shapefile データ
(data/extras/L54_residential_filling_zone/) が必要 (= L54 完成済前提)。
RQ3 (L52/L53 比較) には L52/L53 の処理済 CSV
(lessons/assets/L52_permits_processed.csv / L53_notifications_processed.csv) が必要。
未生成の場合、本スクリプトは該当部分を「データ無し」 表示にしてフォールバック実行する。
【RQ1】 地理範囲と山間地カバレッジ — 16 ファイル・約 4626 km² (県の 54.6%) の山間地偏重
狙い (RQ1)
特定盛土等規制区域 (15 市町指定) は盛土規制法 30 条 1 項に基づく区域指定で、
L54 (12 条 1 項 = 都市計画区域内宅地) と異なり山間地・農地・林地等を含む県下全域を
対象に指定可能。本 RQ1 では (1) 県全体の指定面積、(2) 市町別指定面積ランキング、
(3) 地形タイプ別構成、(4) L54 との地理的補完性の 4 軸で構造を読む。
L54 (沿岸都市偏重 = 24% of 県) と L55 (山間地偏重 = 55% of 県) は、
盛土規制法の地理カテゴリ二分法を反映する姉妹制度。
両者の重複面積 (L54 ∩ L55) はわずか 0.0 km² で地理的にほぼ排他。
これは制度設計上、12 条と 30 条が異なる地域カテゴリを担うように意図された結果。
手法 (Shapefile 読込 → MakeValid → N03_004 同定 → dissolve → 集計)
- STEP 1 (県知事 Shapefile 読込):
gpd.read_file() で県全域版 (51146, 265 行) を読込。
原 CRS = EPSG:6668 (JGD2011 緯度経度) → EPSG:6671 (平面直角第 III 系) に再投影。
- STEP 2 (MakeValid + 主要 polygon 抽出):
shapely.make_valid() でトポロジ修復。
面積 > 1000 m² (= 0.001 km²) のものを採用 (81 polygon)。
これ以下の細片は地番境界の幾何残差で本研究の対象外。
- STEP 3 (市町長ファイル確認 — 重複統合せず):
15 市町別ファイル (51147-51161) は県知事ファイルの該当 polygon と完全一致を確認済
(例: 庄原市 1057.94 km² polygon が pref と city で同一座標系で同じ値)。
二重カウント回避のため主源は県知事ファイル単独。
- STEP 4 (市町同定): 県知事ファイルには国土数値情報のN03_004 (市町名) 列が
埋め込まれているので、まず N03_004 で直接同定 (79/81 解決)。
残り NaN polygon は representative_point + admin sjoin で補完。
最終的に 79/81 polygon を市町に紐付け。
- STEP 5 (市町別 dissolve + union):
gdf.dissolve(by="市町名") で
同市町の polygon を合算後、全体は unary_union で重複除去。
81 polygon → 15 市町 → union 面積 4626 km²。
- STEP 6 (地形タイプ分類): 指定市町を本研究独自の 3 タイプ
(A 中山間 / B 都市辺縁 / C 島嶼小規模) に手動分類。集計と地図表示で使用。
- STEP 7 (L54 との合算): L54 union と L55 union を
unary_union で
合算し、L54 ∪ L55 = 6701 km² を算出。
入出力 Before/After 具体例 (1 polygon 追跡)
県知事ファイル中の最大 polygon (庄原市相当) の処理例:
| 段階 | 対象 | geometry | CRS | 面積 |
|---|
| RAW (zip) | Shapefile zip | 265 polygon (細片含) | EPSG:6668 (緯度経度) | — |
| 1. read_file + to_crs | GeoDataFrame | 265 polygon | EPSG:6671 | (計算可能に) |
| 2. make_valid | GeoDataFrame | 265 polygon (有効) | EPSG:6671 | — |
| 3. >1000 m² フィルタ | 主要のみ | 81 polygon | EPSG:6671 | 合計 4626 km² |
| 4. N03_004 で市町名取得 | 庄原 polygon | 1 polygon | EPSG:6671 | 1058 km² |
| 5. dissolve(by=市町名) | 市町別集約 | 15 市町 | EPSG:6671 | 15 行 |
| 6. unary_union | 重複除去後 | 1 MultiPolygon | EPSG:6671 | 4626 km² (54.6% of 県) |
実装コード (Shapefile 読込 + MakeValid + N03_004 同定 + dissolve)
↑ L55_specific_filling_zone.py 行 1899–1989
1
2
3
4
5
6
7
8
9
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941 | # 16 ファイル統合: 県知事ファイル単独 (主源) + N03_004 で市町同定
import geopandas as gpd, pandas as pd
from shapely import make_valid
from shapely.ops import unary_union
# 1. 県知事指定 Shapefile を読込 (51146, 県全域版)
shp = "data/extras/L55_specific_filling_zone/shp/" \
"340006_specific_earth_filling_regulation_area_shp_20230427.shp"
zone_pref = gpd.read_file(shp).to_crs("EPSG:6671")
# 2. トポロジ修復 (一部 polygon に自己交差等の不整合)
zone_pref["geometry"] = zone_pref.geometry.apply(
lambda g: make_valid(g) if g and not g.is_valid else g)
zone_pref["poly_area_km2"] = zone_pref.geometry.area / 1e6
# 3. 主要 polygon 抽出 (面積 > 1000 m²)
zones = zone_pref[zone_pref["poly_area_km2"] > 0.001].reset_index(drop=True)
zones["poly_id"] = range(len(zones))
# 4. N03_004 (国土数値情報の市町名) で直接同定 → admin sjoin で補完
zones["市町名"] = zones["N03_004"]
unfilled = zones[zones["市町名"].isna()].copy()
if len(unfilled) > 0:
upts = gpd.GeoDataFrame(
unfilled[["poly_id"]],
geometry=unfilled.geometry.representative_point(), crs="EPSG:6671")
j = gpd.sjoin(upts, admin_diss[["CITY_CD", "geometry"]],
how="left", predicate="within")
# ... NaN は intersects 最大重複で割り当て
pid_to_name = j.set_index("poly_id")["CITY_CD"].map(CITY_NAME).to_dict()
for pid, n in pid_to_name.items():
if n:
zones.loc[zones["poly_id"] == pid, "市町名"] = n
# 5. 市町別 dissolve + union 面積
zone_dissolved = zones.dissolve(by="市町名", as_index=False)
zone_dissolved["zone_area_km2"] = zone_dissolved.geometry.area / 1e6
zone_pref_geom = unary_union(list(zone_dissolved.geometry))
print(f"L55 polygon: {len(zones)}, union: {zone_pref_geom.area/1e6:.0f} km²")
# 6. L54 との合算 (制度補完)
combined_geom = unary_union([l54_union, zone_pref_geom])
print(f"L54 ∪ L55 = {combined_geom.area/1e6:.0f} km²")
|
図 1: L55 全区域マップ + 市町別指定面積 choropleth (2 panel)
なぜこの図か: 学習者がまず「L55 特定区域はどこにあるか」 を一目で把握するため。
左の地図で polygon の地理分布、右の choropleth で市町別の濃淡を見る。
L55 は L54 と異なり大きな polygon が県北部・県西部の山間地に集中することが視覚で確認できる。
この図から読み取れること:
- L55 規制区域は庄原市 (1058 km²) を筆頭に、
上位 5 市町 (庄原市, 三次市, 北広島町, 安芸高田市, 神石高原町) で
全指定面積の 68.1% を占める →
H1 (支持)。L54 (沿岸都市) と地理的に逆転した山間地偏重の構造。
- 地形タイプ別: A 中山間 = 83% / B 都市辺縁 = 14% /
C 島嶼小規模 = 2% → 中山間が圧倒的優位。
これは 30 条 1 項が地形条件 (傾斜度・渓流) + 下流人口を要件とする
法的設計に整合。
- 右 choropleth の濃紫域は県北部の中山間市町 (庄原・三次・北広島・安芸高田) に集中 →
これらは典型的な盆地・山間集落型市町で、上流盛土崩落 → 下流市街地被害の
地理的構造を最も持つ場所。
- 左マップの庄原市 polygon は単独で 1058 km² = 県の 12.5% を
占める→ 1 市町だけで L54 全体 (2075 km²) の約半分の面積。
これは庄原市が県内最大面積市町 (1244 km²) であり、その大半が中山間地である
地理的事実を反映する。
- 非指定市町 (灰色) は広島市・呉市・福山市・廿日市市東部等の都市計画区域内が大半の市町
→ これらは L54 (12 条系) でカバーされており、L55 とは制度間補完で役割分担。
図 2: L54 vs L55 制度補完マップ + L55 polygon 規模分布
なぜこの図か: L54 (12 条系, 緑) と L55 (30 条系, 紫) を 1 枚に重ねることで、
両制度の地理的補完性を視覚的に確認する。重なる場所が極めて少なく、
むしろ排他的に県土を分担する設計が見える。
右の polygon 規模分布は L55 polygon の規模幅を log で表示。
この図から読み取れること:
- L54 ∩ L55 = 0.01 km² = ほぼ完全排他。
これは制度設計上の意図的な分業:
12 条 (L54) は都市計画区域内 = 沿岸都市、
30 条 (L55) は宅造区域 以外 = 山間地。
法令で「以外」 と明示されているため両者は重ならない構造。
- L54 ∪ L55 = 6701 km² = 県の 79.0% を 2 制度合算でカバー →
盛土規制法は県土の約 8 割を地理的に監督下に置く設計。
残り 21% は森林・農地・水域で住民密度が低い地域 (= 当然対象外)。
- 右 polygon 規模分布: 中央値 0.036 km²、
最大 1058 km²、最小 1028 m²。
log 軸で 6 桁の幅 →
L54 (中央値 0.000386 km²) より中央値が大きく、
L55 は本質的に大規模 polygonを扱う制度であることを示す。
- L55 polygon は山間地市町を市町境界に近い形で丸ごと指定することが多く、
庄原・三次・北広島は単独 1 polygon で 500-1000 km² 級。
これは「市町全体を一括で 30 条 1 項対象」 とする地理的設計を反映。
- L54 と L55 の和は県土の 79% で、これは盛土規制法の
地理的射程の上限。これ以上のカバーには新たな区域類型を要する。
図 3: 地形タイプ別構成 (パイ) + 市町別指定面積ランキング (Top 15)
なぜこの図か: 規制区域指定の地形偏在を 2 つのスケールで見る。
左パイで「規制区域の中での 3 タイプの内訳」、右棒で市町別ランキング。
両方を並べることで、地形タイプの内訳と個別市町の量を別軸で読む基本訓練ができる。
この図から読み取れること:
- 左パイ: A 中山間 83% / B 都市辺縁 14% / C 島嶼小規模 2% →
L55 は中山間が圧倒的優位。L54 (沿岸都市 81%) と地理タイプが逆転している。
- 右ランキング: 棒の色は地形タイプ (緑=中山間/青=都市辺縁/橙=島嶼)。
上位 5 はすべて中山間市町 (庄原市, 三次市, 北広島町, 安芸高田市, 神石高原町) で
合計シェア 68.1% → H1 を視覚的に裏付ける。
- 安芸太田町 以下の市町は1 桁少ない指定面積
(311 km²) →
上位 1 市町 (庄原市) は単独で全県の 23% を占める。
- polygon 数と面積は必ずしも比例しない: polygon 数最多市町 (大崎上島町: 25 polygon) は
面積では下位 → これは島嶼の小ピース集合を意味する。
対して庄原・三次・北広島は1 polygon で巨大面積を占める。
- L54 の地形タイプ (沿岸 81% + 内陸 14% + 山間 4%) と L55 (中山間 83% + 都市辺縁 14% + 島嶼 2%) を比較すると、
ほぼ逆構成 → 12 条と 30 条の地理分業が定量的に確認される。
表: 全体サマリ (L55 + L54 比較 + 警戒区域 + L52/L53 連携)
| 指標 | 値 |
|---|
| 総 polygon 数 (主源) | 81 polygon (県知事ファイル中 主要 polygon, 市町別ファイル 15 件は重複なので参照用) |
| 対象市町数 | 15 市町 |
| L55 union 面積 | 4625.77 km² (県 8479 km² の 54.55%) |
| L54 union 面積 (既扱) | 2075.40 km² (県の 24.5%) |
| L54 ∪ L55 合算カバー | 6701.16 km² (県の 79.0% — 2 制度合算) |
| polygon 規模 中央値 / 最大 | 0.036 km² / 1058 km² |
| Top 1 市町 | 庄原市 (1058 km²) |
| Top 5 シェア | 68.1% |
| L55 ∩ 警戒区域 | 43.9 km² (L55 内 0.9%, 警戒の 27.5%) |
| (L54+L55) ∩ 警戒区域 | 104.8 km² (警戒の 65.8% を 2 制度でカバー) |
| 警戒のみ (L54 単独) | 98 km² (全警戒の 62%) |
| 警戒のみ (L54+L55 合算) | 54 km² (34.2%) — 縮小幅 44 km² |
| L52 152 件 → L55 内 | 19 件 (12.5%) = 30 条系許可 |
| L52 152 件 → L54 内 | 131 件 (86.2%) = 12 条系許可 |
| L53 284 件 → L55 内 | 124 件 (43.7%) = 40 条系届出 |
| L53 284 件 → L54 内 | 160 件 (56.3%) = 21 条系届出 |
| 二重リスク Top 3 シェア | 52% (庄原市, 三次市, 北広島町) |
この表から読み取れること: 81 polygon / 15 市町 / union 面積 4626 km² / 県シェア 54.6% という基礎数値、L54 ∪ L55 合算 79%、警戒のみ縮小 98→54 km² 等の横断指標が一覧で確認できる。RQ1〜RQ3 の核心が 17 行に集約された統合サマリ。
表: 市町別 L55 一覧 (面積順)
| 順位 | 市町名 | 地形タイプ | 面積_km2 | 指定面積シェア_% | 県総面積シェア_% | polygon数 |
|---|
| 1 | 庄原市 | A_中山間 | 1,058 | 22.9 | 12.5 | 1 |
| 2 | 三次市 | A_中山間 | 636.7 | 13.8 | 7.51 | 1 |
| 3 | 北広島町 | A_中山間 | 598.0 | 12.9 | 7.05 | 1 |
| 4 | 安芸高田市 | A_中山間 | 484.5 | 10.5 | 5.71 | 1 |
| 5 | 神石高原町 | A_中山間 | 372.5 | 8.05 | 4.39 | 1 |
| 6 | 安芸太田町 | A_中山間 | 311.3 | 6.73 | 3.67 | 1 |
| 7 | 廿日市市 | B_都市辺縁 | 293.3 | 6.34 | 3.46 | 1 |
| 8 | 世羅町 | A_中山間 | 251.3 | 5.43 | 2.96 | 1 |
| 9 | 三原市 | B_都市辺縁 | 177.1 | 3.83 | 2.09 | 6 |
| 10 | 府中市 | A_中山間 | 137.8 | 2.98 | 1.62 | 1 |
| 11 | 東広島市 | B_都市辺縁 | 118.0 | 2.55 | 1.39 | 4 |
| 12 | 尾道市 | B_都市辺縁 | 73.6 | 1.59 | 0.870 | 8 |
| 13 | 大竹市 | C_島嶼小規模 | 53.2 | 1.15 | 0.630 | 15 |
| 14 | 江田島市 | C_島嶼小規模 | 34.9 | 0.750 | 0.410 | 12 |
| 15 | 大崎上島町 | C_島嶼小規模 | 25.6 | 0.550 | 0.300 | 25 |
この表から読み取れること: 各市町の地形タイプ・面積・polygon 数を一覧で確認できる。Top 5 はすべて中山間市町で、上位 1 市町 (庄原市) だけで全県の 12% を占める。下位の島嶼小規模 (大崎上島 25 km²) は polygon 数 (25 個) が多いが面積は小さい =
島嶼の地理的特性 (細かい入江・湾岸)を反映する。
表: 地形タイプ別集計 (3 タイプ)
| 地形タイプ | 市町数 | 指定面積_km2 | シェア_% |
|---|
| A 中山間市町 (本制度の主舞台) | 8 | 3,850 | 83.2 |
| B 都市辺縁 | 4 | 662.1 | 14.3 |
| C 島嶼/小規模沿岸 | 3 | 113.7 | 2.50 |
| D その他 | 1 | 0.011 | 0.000 |
この表から読み取れること: 中山間 (A) が 83% を占め、都市辺縁 (B) 14% / 島嶼小規模 (C) 2% と続く。L54 の地形タイプ (沿岸 81% + 内陸 14% + 山間 4%) と L55 ({a_share:.0f}% + {b_share:.0f}% + {c_share:.0f}%) を比較すると、
ほぼ逆構成 = 12 条と 30 条の地理的分業が定量的に確認される。
表: L54 vs L55 制度比較 (姉妹制度の対比)
| 側面 | L54 (宅造区域) | L55 (特定区域, 本記事) |
|---|
| 根拠条文 | 法 12 条 1 項 | 法 30 条 1 項 |
| 対象地域 | 都市計画区域内の宅地 | 宅造区域以外で地形条件 + 下流人口 |
| 主な指定地 | 沿岸都市・市街地 | 山間地・農地・林地・島嶼 |
| 対象市町数 | 20+ 市町 (沿岸+少数山間) | 15 市町 (山間中心) |
| union 指定面積 | 2075 km² (県の 24.5%) | 4626 km² (県の 54.6%) |
| L54/L55 重複 | 0.0 km² (相互排他に近い) | 0.0 km² |
| 警戒 ∩ 規制 | 98 km² が警戒のみ残る | L55 単独 ∩ 警戒 = 43.9 km² |
| L52 許可立地 | 131/152 (86%, 12 条系) | 19/152 (12%, 30 条系) |
| L53 届出立地 | 160/284 (56%, 21 条系) | 124/284 (44%, 40 条系) |
この表から読み取れること: L54 と L55 の制度的対比が9 側面 (根拠条文・対象・主な指定地・市町数・面積・重複・警戒関係・許可立地・届出立地) で整理される。地理的にはほぼ排他、運用的にはL54 が中規模都市部、L55 が大規模山間地をそれぞれ捕捉する設計。盛土規制法の制度設計の意図が初めて 1 表で見える。
【RQ2】 警戒区域カバレッジ研究 — L54 + L55 合算で「警戒のみ」 98→54 km² に縮小
狙い (RQ2)
L55 (30 条系) は L54 (12 条系) で残った「警戒のみ」 (= 制度間ギャップ) = 山間地警戒区域の
61.7% (98 km²)を埋めるために設計された。本 RQ2 では (1) L55 ∩ 警戒の重複面積、
(2) L54 + L55 合算後の警戒のみ残存面積、(3) 二重リスクエリアの市町別偏在 を読む。
特に「L55 が L54 のギャップをどれだけ埋めたか」 が研究の核心。
L54 単独では警戒のみ = 98 km² (61.7%) だったが、
L55 を加えると 54 km² (34.2%) に縮小する仮説を
直接検証する。これは盛土規制法の制度間補完設計の有効性の定量診断。
手法 (geometry intersection + 4 区分集計)
- STEP 1 (各 union): L55 zone_pref_geom (= L55 全 polygon を unary_union)、
L54 union (= L54 全 polygon を unary_union)、警戒区域 union
(急傾斜 30K + 土石流 13K)。前 2 つは数秒、警戒は数十秒で計算可能。
- STEP 2 (L55 ∩ 警戒):
zone_pref_geom.intersection(warn_pref_geom) で重複面積を計算。
L55 内に占める警戒の割合 (overlap_in_zone_pct) と、警戒内に占める L55 の割合
(overlap_in_warn_pct) を別々に算出。
- STEP 3 (L54 ∪ L55 合算カバー):
unary_union([l54_union, zone_pref_geom]) で 2 制度合算 polygon を作成。
これと警戒の intersection が「2 制度合算でカバーする警戒区域」、
警戒からこれを引いた残りが「警戒のみ (合算後)」。
- STEP 4 (市町別二重リスク): 各市町の L55 polygon と警戒の intersection を
取って市町別二重リスク面積を計算。
入力: L55 polygon (union 4626 km²) + L54 polygon (union 2075 km²) + 警戒区域 (union 159 km²)。
出力: 警戒のみ縮小幅、市町別二重リスク、4 区分カバレッジ。
実装コード (geometry intersection + 4 区分集計)
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 | # RQ2: L55 × 警戒区域 + L54 制度補完
from shapely.ops import unary_union
# 1. L55 union (規制区域 polygon → 1 つに統合)
zone_pref_geom = unary_union(list(zone_dissolved.geometry))
print(f"L55 union: {zone_pref_geom.area/1e6:.0f} km²")
# 2. L55 ∩ 警戒
warn_pref_geom = warn_all_geom # 急傾斜 30K + 土石流 13K の union (前計算済)
overlap_l55 = zone_pref_geom.intersection(warn_pref_geom)
overlap_l55_km2 = overlap_l55.area / 1e6
print(f"L55 ∩ 警戒: {overlap_l55_km2:.1f} km²")
# 3. L54 ∪ L55 合算
combined_geom = unary_union([l54_union, zone_pref_geom])
combined_km2 = combined_geom.area / 1e6
print(f"L54 ∪ L55: {combined_km2:.0f} km²")
# 4. 警戒のみ (L54 単独 vs L54+L55 合算)
warn_only_l54 = warn_pref_geom.difference(l54_union)
warn_only_combined = warn_pref_geom.difference(combined_geom)
print(f"警戒のみ L54 単独: {warn_only_l54.area/1e6:.0f} km² (制度間ギャップ)")
print(f"警戒のみ L54+L55 合算: {warn_only_combined.area/1e6:.0f} km² ← 縮小")
# 5. 市町別二重リスク
double_risk = []
for _, r in zone_dissolved.iterrows():
inter = r.geometry.intersection(warn_pref_geom)
double_risk.append({
"市町名": r["市町名"],
"二重リスク_km2": inter.area / 1e6 if not inter.is_empty else 0,
})
|
図 4: L55 × 警戒区域 重ね合わせ全県マップ
なぜこの図か: 全県で L55 (紫) と警戒区域 (赤=急傾斜・橙=土石流) が
どう重なるかを 1 図で俯瞰する。L55 は山間地に広く分布するが、
警戒区域は急傾斜地・渓流に局所集中するため、空間目的の違いが見える。
この図から読み取れること:
- L55 ∩ 警戒 = 43.9 km²、L55 内 0.9% →
H3 (反証)。予想 10-30% を大きく下回り、L54 (2.9%) よりさらに低い 0.9% という結果。
これは L55 が山間地内陸の広い領域を指定するのに対し、
警戒区域は急傾斜地・渓流の局所を捉えるため空間目的が異なることを定量確認。
- 逆方向で見ると、警戒区域内の27.5%が L55 内 →
警戒区域の 1/4 以上は L55 によって新たにカバーされた = L54 単独時代に
残っていた山間地の警戒区域を埋めた。
- マップを見ると、L55 (紫) は県北部・県西部の山間地全域に広く分布し、
警戒区域 (赤+橙) は L55 の外周や境界部に多く分布 →
これは「L55 = 山間地の上流域 (盛土発生源)」、「警戒 = 下流谷筋・斜面 (盛土崩落の被害想定)」
という空間目的の違いを端的に表現する。
- 上位 3 二重リスク市町 (庄原市, 三次市, 北広島町) は
ラベル付きで表示 → これらは「中山間で人口集落 + 警戒区域」 を併せ持つ市町。
盛土規制と災害想定の二重防御が最も実装される場所。
- L55 内の警戒比率がわずか 0.9% という事実は、
L55 が「警戒区域そのもの」 ではなく「警戒区域に至りうる上流盛土発生地」を
指定する設計を意味する。これは熱海土石流災害の教訓 (上流盛土の崩落 → 下流被害) を
法的に反映した結果と解釈できる。
図 5: L54 単独 vs L54+L55 合算の警戒のみ縮小 — H4 直接検証
なぜこの図か: 本記事最重要の発見 = 「L55 が L54 のギャップを埋める」 を
直接検証する図。左の 4 区分パイで合算後の県土カバレッジ、
右の比較棒で警戒のみ縮小幅 (98 → 54 km²) を 1 枚で表現する。
この図から読み取れること:
- 警戒のみ縮小: L54 単独 = 98 km² (62%) →
L54 + L55 合算 = 54 km² (34%)。
縮小幅 = 44 km² (45% 削減) →
H4 (強支持)。L55 は L54 が捕捉しきれなかった山間地警戒区域を
確実に埋める制度として機能している。
- 左 4 区分パイ:
規制 ∩ 警戒 (L54+L55) = 105 km² (1.2%) /
規制のみ = 6596 km² (78%) /
警戒のみ = 54 km² (34.2%) /
該当外 = 1724 km²。
- 「警戒のみ 54 km²」 はもう県の 0.6% に縮小 →
これが盛土規制法の最終ギャップ。
具体的には森林・農地内の急傾斜地で、住民密度が極めて低いため
30 条 1 項の「下流人口条件」 を満たさず指定外になった場所と推察される。
- 一方で、L54+L55 合算は警戒区域の 66% を捕捉 →
盛土規制法は「警戒区域の 2/3 以上」 を直接監督下に置く設計に成功している。
これは制度間補完設計の定量的成功事例。
- 残り 54 km² (警戒のみ) を埋めるには、
L48 多段階洪水・L46 砂防指定地等の他制度との連携、
あるいは30 条 1 項の指定基準緩和が必要。これは今後の制度改定の課題。
図 6: 市町別 L55 二重リスク choropleth + ランキング
なぜこの図か: 二重リスクを市町単位で正規化したランキングと地図。
L55 内警戒比率は全県平均で 0.9% と低いが、市町別には差がある。
中山間市町でも下流人口条件を強く満たす場所では二重リスクが集中する。
この図から読み取れること:
- 二重リスク Top 3:
庄原市 (9.1 km²) / 三次市 (8.2 km²) / 北広島町 (5.6 km²) →
上位 3 で全二重リスクの 52%。
これらは中山間で規模の大きい市町(庄原市 1058 km²、三次市 637 km²、北広島町 598 km²)
で、絶対的な二重リスク面積でも上位を占める。
- 右ランキング: 灰色背景バー = 区域面積、赤バー = 二重リスク面積 →
区域面積が大きいほど二重リスクも大きいが、その区域内警戒比率は
市町間で 1.6% から
0.5% まで幅がある。
- 左 choropleth の色は絶対面積のため、巨大山間市町の濃赤が目立つ →
これは「面積の大きい中山間市町に L55 が集中するため、結果として絶対的二重リスクも
集中する」 という量的な相関を反映する。
- 区域内警戒比率が低い (1% 未満) のは、L55 が市町全体を丸ごと指定するため
内部の警戒区域比率が薄まる結果。これは L55 の面的指定戦略の特徴。
- 下位市町 (二重リスク 0.5 km² 未満) は島嶼または小規模沿岸市町
(大竹市, 大崎上島町, 江田島市) →
これらは指定面積が小さく警戒も少ない。L55 のカバレッジは限定的。
表: 市町別 L55 二重リスクランキング (Top 12)
| 順位 | 市町名 | 区域面積_km2 | 二重リスク_km2 | 区域内警戒区域比率_% |
|---|
| 1 | 庄原市 | 1,058 | 9.08 | 0.900 |
| 2 | 三次市 | 636.7 | 8.20 | 1.30 |
| 3 | 北広島町 | 598.0 | 5.64 | 0.900 |
| 4 | 安芸高田市 | 484.5 | 5.24 | 1.10 |
| 5 | 神石高原町 | 372.5 | 3.16 | 0.800 |
| 6 | 廿日市市 | 293.3 | 2.26 | 0.800 |
| 7 | 府中市 | 137.8 | 2.24 | 1.60 |
| 8 | 世羅町 | 251.3 | 1.91 | 0.800 |
| 9 | 安芸太田町 | 311.3 | 1.63 | 0.500 |
| 10 | 三原市 | 177.1 | 1.28 | 0.700 |
| 11 | 東広島市 | 118.0 | 1.04 | 0.900 |
| 12 | 尾道市 | 73.6 | 0.989 | 1.30 |
この表から読み取れること: 二重リスク面積トップは 庄原市 (9.1 km², 区域内警戒比率 0.9%)。区域内警戒比率は 1% 前後で全市町ほぼ均一 = L55 は山間地全体を面的に指定するため警戒区域比率が薄まるという構造的特徴。
表: 4 区分カバレッジ (L54+L55 合算 × 警戒)
| 区分 | 面積_km2 | 県シェア_% | 意味 |
|---|
| 1. (L54+L55) ∩ 警戒 (二重リスク) | 104.8 | 1.24 | 盛土規制 (12 or 30 条) + 自然災害想定 = 二重防御 |
| 2. (L54+L55) のみ (警戒区域外) | 6,596 | 77.8 | 盛土規制のみ。地形リスクは想定外だが工事監督対象 |
| 3. 警戒のみ (L54+L55 合算でも残る) | 54.4 | 0.640 | 災害想定のみ。山間集落で盛土規制が及ばない最終ギャップ |
| 4. どちらも該当外 | 1,724 | 20.3 | 両制度の対象外。森林・農地・水域の県全域の大半 |
この表から読み取れること: 4 区分のうち「警戒のみ」が わずか 54 km² (34.2%) に縮小 → L54 単独時代の 98 km² (61.7%) から劇的に削減された = L55 が L54 のギャップを埋めた制度間補完設計の成功事例。残り 54 km² が盛土規制法の最終ギャップで、森林・農地内の急傾斜地等で住民密度が低い場所と推察される。
【RQ3】 許可・届出盛土 (L52/L53) との関係 — 30 条系運用の実態
狙い (RQ3)
L52 (許可) / L53 (届出) は条文ごとに 12 条系と 30 条系の 2 系統を持つ。
L52 12 条系 = 12 条 1 項許可 (L54 区域内) / L52 30 条系 = 30 条 1 項許可 (L55 区域内)。
L53 21 条系 = 21 条 1 項届出 (L54 区域内) / L53 40 条系 = 40 条 1 項届出 (L55 区域内)。
本 RQ3 では L52 152 件 / L53 284 件を L54 / L55 へ in/out 判定することで、
初めて30 条系内訳を定量化する。さらに 12 条系 vs 30 条系の規模・件数・地理差を
比較し、30 条系制度の初期運用実態を診断する。
30 条系は新法施行 (2023-05-26) 以降の指定で、L52/L53 既収集データはまだ
12 条系の蓄積が中心。30 条系の運用は始まったばかりであることを念頭に読む必要がある。
手法 (within 判定 + 規模比較 + 区域別件数集計)
- STEP 1 (L52/L53 各点に L54/L55 in/out 付与):
g52.geometry.within(zone_pref_geom) = L55 内判定。
g52.geometry.within(l54_union) = L54 内判定。
両者を組み合わせて L54 内 / L55 内 / L54 ∩ L55 / 両外の 4 分類。
- STEP 2 (件数集計): L52 152 件のうち L55 内 = 30 条系許可件数、
L53 284 件のうち L55 内 = 40 条系届出件数。
- STEP 3 (規模比較): L54 内 (12 条系) と L55 内 (30 条系) の
盛土の高さ・面積・土量の中央値を比較。30 条系は山間地大規模工事を
捕捉すると予想される。
- STEP 4 (区域別件数):
gpd.sjoin で各 L52/L53 点に zone_id を付与。
区域別の L52 30 条許可・L53 40 条届出件数を集計。
入力: L52 152 件 + L53 284 件 + L55 zone_pref_geom + L54 union。
出力: L52/L53 の 4 分類別件数、12 条系 vs 30 条系規模比較、市町別 30 条系運用件数。
実装コード (within 判定 + 規模比較)
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 | # RQ3: L52 / L53 を L54 / L55 へ in/out 判定し、12 条系 vs 30 条系を分離
import geopandas as gpd, pandas as pd
# 1. L52 (許可) / L53 (届出) の点 GeoDataFrame
df_l52 = pd.read_csv("lessons/assets/L52_permits_processed.csv", encoding="utf-8-sig")
df_l53 = pd.read_csv("lessons/assets/L53_notifications_processed.csv", encoding="utf-8-sig")
g52 = gpd.GeoDataFrame(df_l52,
geometry=gpd.points_from_xy(df_l52["lon"], df_l52["lat"]),
crs="EPSG:4326").to_crs("EPSG:6671")
g53 = gpd.GeoDataFrame(df_l53,
geometry=gpd.points_from_xy(df_l53["lon"], df_l53["lat"]),
crs="EPSG:4326").to_crs("EPSG:6671")
# 2. 各点に L54 / L55 in/out フラグ
g52["in_l54"] = g52.geometry.within(l54_union)
g52["in_l55"] = g52.geometry.within(zone_pref_geom)
g53["in_l54"] = g53.geometry.within(l54_union)
g53["in_l55"] = g53.geometry.within(zone_pref_geom)
# 3. 4 分類集計 (例: L52)
n_l52_only_l54 = (g52["in_l54"] & ~g52["in_l55"]).sum() # 12 条系
n_l52_only_l55 = (~g52["in_l54"] & g52["in_l55"]).sum() # 30 条系
n_l52_both = (g52["in_l54"] & g52["in_l55"]).sum() # 重複指定 (まれ)
n_l52_neither = (~g52["in_l54"] & ~g52["in_l55"]).sum() # 制度外
print(f"L52: 12 条系 {n_l52_only_l54}, 30 条系 {n_l52_only_l55}")
print(f" 両方 {n_l52_both}, 制度外 {n_l52_neither}")
# 4. 12 条系 vs 30 条系 規模比較
print(f"L54 内 中央値 面積: {g52[g52['in_l54']]['area_m2'].median():.0f} m²")
print(f"L55 内 中央値 面積: {g52[g52['in_l55']]['area_m2'].median():.0f} m²")
|
図 7: L52/L53 × L54/L55 in/out オーバーレイマップ
なぜこの図か: 12 条系 vs 30 条系の地理分布差を直接視覚化する。
左 L52 (許可)、右 L53 (届出) を別々に表示。点の色 = 区域種別 (緑=L54内/紫=L55内/灰=両外)。
30 条系点 (紫▲) は山間地に分布し、12 条系点 (緑●) は沿岸都市に集中することを
1 枚で確認できる。
この図から読み取れること:
- L52 30 条系内訳: L55 内 = 19/152 件 (12.5%) →
H5 (支持) 予想 5-15% の範囲内。
L52 152 件中の9 割近くは 12 条系 (L54 内) = 旧法時代からの宅造規制区域内許可案件。
30 条系はまだ少数派。
- L53 40 条系内訳: L55 内 = 124/284 件 (43.7%) →
L52 (12.5%) よりずっと多い 44%!
これは届出制度 (L53) が新法施行時の経過措置遡及で
旧来の山間地盛土を一斉に届出させた影響。
40 条系の方が 30 条系より運用が進んでいる。
- 左 L52 マップ: 緑● (12 条系) は瀬戸内海沿岸の都市部に集中 →
これは都市部の戸建擁壁・宅地造成。
紫▲ (30 条系) は県北部の中山間市町に分散 →
山間地の大規模盛土 = 太陽光発電・農地造成・林業作業地等。
- 右 L53 マップ: 緑● (21 条系) と紫▲ (40 条系) がほぼ同数で分散 →
届出制度は許可制度より規模閾値が低いため、両系統で広く運用。
経過措置遡及で旧来の盛土が一斉届出された結果、地理的な偏りが少ない。
- 「両外」 (灰×) はわずか 2 件 (L52) / 0 件 (L53) →
盛土規制法はほぼ全件をL54 or L55 のいずれかで捕捉している。
これは制度設計上の意図された全件監督体制を裏付ける。
図 8: 12 条系 vs 30 条系 盛土規模比較 (L52)
なぜこの図か: L52 152 件を 12 条系 (L54 内) と 30 条系 (L55 内) に分け、
盛土の高さ・面積・土量の中央値を比較する。30 条系が大規模工事を捕捉する仮説を直接検証。
この図から読み取れること:
- 30 条系は大規模工事を捕捉: L54 内 (12 条系) 面積中央値 929 m² vs
L55 内 (30 条系) 面積中央値 3825 m² = 4.1 倍。
高さも L54 中央値 2.10m vs L55 4.40m = 2 倍超 →
30 条系は明確に大規模工事を捕捉する制度として機能。
- これは制度設計の意図的な分業: 12 条系 (沿岸都市) は中規模戸建擁壁 (~1000 m²) 中心、
30 条系 (山間地) は大規模面工事 (~4000 m²) 中心。
法的には許可閾値はほぼ同じだが、実際の許可案件は地理タイプで質的に異なる。
- 左ヒスト (log): 30 条系 (紫) の分布は 12 条系 (緑) より右にシフト →
大規模側に裾を持つ。30 条系の上限は L55 内 max面積で 12 条系の数倍。
- 右棒 (log10 中央値): 高さ・面積・土量すべての指標で 30 条系 > 12 条系 →
制度全般で 30 条系の方が大規模。これは「山間地の盛土は本質的に大規模」 という
地形的事実を反映 (= 平地の都市開発より単一プロジェクト規模が大きい)。
- 30 条系の捕捉対象として推察される具体例: 太陽光発電パネル基礎の山間地造成、
農地造成・林道整備に伴う盛土、大規模残土処分場等。
これらは旧法時代は規制対象外だったため、新法 30 条 1 項で初めて法的監督下に。
図 9 から読み取れること: Top 8 L55 区域の区域面積・二重リスク・L52 30 条系・L53 40 条系を 4 系列棒で並べた総合図。庄原・三次・北広島は区域面積が大きいが L52/L53 件数は中程度 → 大面積 = 大量盛土発生 ではないこと、つまり山間地は面積に対して工事密度が低いことを 1 図で確認できる。これは都市部 (L54) との明確な対比。
表: L52 規模比較 (12 条系 vs 30 条系)
| 指標 | L54 内 (12 条系) | L55 内 (30 条系) | 差 (30-12) |
|---|
| 件数 (件) | 131.0 | 19.0 | -112.0 |
| 高さ 中央値 (m) | 2.07 | 4.40 | 2.33 |
| 面積 中央値 (m²) | 929.0 | 3,825 | 2,896 |
| 盛土量 中央値 (m³) | 611.0 | 5,650 | 5,038 |
| 面積 最大 (m²) | 9,954 | 41,501 | 31,546 |
この表から読み取れること: L52 152 件のうち、30 条系 (L55 内) は中央値で面積 4.1 倍・高さ 2 倍超。30 条系は明確に大規模工事を捕捉する制度。差 (30-12) 列を見ると、全規模指標で 30 条系が大きく、これは制度設計の意図を反映する。
表: 区域別 30 条系運用件数 (L52 許可 + L53 届出)
| 順位 | 市町名 | 区域面積_km2 | L52許可 | L53届出 | L52+L53合計 | L52密度_件km2 | L53密度_件km2 |
|---|
| 1 | 三次市 | 636.7 | 4 | 23 | 27 | 0.006 | 0.036 |
| 2 | 三原市 | 177.1 | 4 | 15 | 19 | 0.023 | 0.085 |
| 3 | 庄原市 | 1,058 | 3 | 15 | 18 | 0.003 | 0.014 |
| 4 | 世羅町 | 251.3 | 2 | 15 | 17 | 0.008 | 0.060 |
| 5 | 安芸高田市 | 484.5 | 1 | 12 | 13 | 0.002 | 0.025 |
| 6 | 神石高原町 | 372.5 | 2 | 11 | 13 | 0.005 | 0.029 |
| 7 | 北広島町 | 598.0 | 1 | 9 | 10 | 0.002 | 0.015 |
| 8 | 府中市 | 137.8 | 0 | 6 | 6 | 0.000 | 0.044 |
| 9 | 東広島市 | 118.0 | 0 | 5 | 5 | 0.000 | 0.042 |
| 10 | 江田島市 | 34.9 | 1 | 3 | 4 | 0.029 | 0.086 |
| 11 | 尾道市 | 73.6 | 0 | 3 | 3 | 0.000 | 0.041 |
| 12 | 大竹市 | 53.2 | 0 | 3 | 3 | 0.000 | 0.056 |
| 13 | 廿日市市 | 293.3 | 1 | 2 | 3 | 0.003 | 0.007 |
| 14 | 大崎上島町 | 25.6 | 0 | 1 | 1 | 0.000 | 0.039 |
| 15 | 安芸太田町 | 311.3 | 0 | 1 | 1 | 0.000 | 0.003 |
この表から読み取れること: 区域別の 30/40 条系件数集計。L52+L53 合計上位は 三次市 (4+23=27 件) 等の中山間市町 → 山間地の盛土需要が定量的に確認される。密度 (件/km²) は L54 内に比べ非常に低く、これは山間地の単位面積あたり工事密度が都市部より少ないことを反映。
表: 市町別ファイルメタ (15 ファイル確認用)
| 市町コード | 市町名 | polygon数 | 面積_km2 |
|---|
| 342050 | 三原市 | 20 | 177.2 |
| 342068 | 尾道市 | 34 | 73.7 |
| 342084 | 府中市 | 1 | 137.8 |
| 342092 | 三次市 | 1 | 636.7 |
| 342106 | 庄原市 | 1 | 1,058 |
| 342114 | 大竹市 | 24 | 53.2 |
| 342122 | 東広島市 | 15 | 118.0 |
| 342131 | 廿日市市 | 13 | 293.3 |
| 342149 | 安芸高田市 | 1 | 484.5 |
| 342157 | 江田島市 | 51 | 34.9 |
| 343684 | 安芸太田町 | 1 | 311.3 |
| 343692 | 北広島町 | 1 | 598.0 |
| 344621 | 世羅町 | 1 | 251.3 |
| 345458 | 神石高原町 | 1 | 372.5 |
| 344541 | 大崎上島町 | 50 | 25.6 |
この表から読み取れること: 県知事ファイルの polygon と市町別ファイルの polygon が対応していることを確認。庄原市の市町別ファイル 1057.94 km² は県知事ファイル中の対応 polygon と完全一致 = 市町別ファイルは県知事ファイルの市町別切り出し版であり独立データではない。本研究では二重カウント回避のため県知事ファイル単独を採用した。
仮説検証総合
本記事の 5 仮説と観測結果の照合:
| 仮説 | 予想 | 観測 | 判定 |
|---|
| H1 (山間地偏重, 上位 5 シェア ≥ 50%, RQ1) | Top 5 市町で全県の 50% 以上 | Top 5 = 庄原市, 三次市, 北広島町, 安芸高田市, 神石高原町, シェア 68.1% | 支持 |
| H2 (大カバー率 ≥ 40%, RQ1) | L55 単独で県の 40% 以上を覆う | 54.6% (L54 24% の 2 倍以上) | 強支持 |
| H3 (警戒重複 10-30%, RQ2) | L55 ∩ 警戒の比率が L54 (2.9%) より高い 10-30% | L55 ∩ 警戒 = 43.9 km², L55 内 0.9% | 反証 (低 0.9% — L55 は山間内陸で警戒は急傾斜・渓流で空間目的が異なる) |
| H4 (制度間ギャップ縮小, RQ2) | L55 追加で『警戒のみ』が 98 → 30 km² 以下に縮小 | L54 単独 98 km² → L54+L55 合算 54 km² (45% 縮小) | 部分支持 |
| H5 (30 条系運用 5-15%, RQ3) | L52 のうち L55 内立地は 5-15% | L52 L55 内 19/152 = 12.5% / L53 L55 内 124/284 = 43.7% | 支持 |
3 RQ × 3 結論
- RQ1 結論: L55 特定盛土等規制区域は 81 polygon / 15 市町指定 / union 面積 4626 km² で、県総面積 8479 km² の 54.6% を占める。上位 5 市町 (庄原市, 三次市, 北広島町, 安芸高田市, 神石高原町) で 68% を占め、地形タイプは中山間 83% / 都市辺縁 14% / 島嶼 2% という山間地偏重の構造。L54 (沿岸都市偏重 24%) と地理的にほぼ排他で、L54 ∪ L55 = 6701 km² (79.0% of 県) を 2 制度合算でカバー。盛土規制法の地理的射程はほぼ確定された。
- RQ2 結論: L55 ∩ 警戒区域 = 43.9 km² (L55 内 0.9%, 警戒の 27.5%) → L55 と警戒区域は空間目的が異なる(L55=山間地内陸広範囲, 警戒=急傾斜地・渓流局所) ことを定量確認。重要な発見: L54 + L55 合算で『警戒のみ』 が 98 → 54 km² に縮小 (45% 削減) → L55 が L54 の制度間ギャップを 45% 埋める設計通りに機能。残り 54 km² が盛土規制法の最終ギャップ。
- RQ3 結論: L52 152 件のうち L55 内 = 19 件 (12.5%) = 30 条系許可。L53 284 件のうち L55 内 = 124 件 (43.7%) = 40 条系届出。30 条系は L52 で 12 条系の 1/7 (12.5% vs 86%) と少数派だが、L53 では 40 条系 vs 21 条系がほぼ同数。30 条系盛土の規模中央値はL54 内の 4.1 倍 (面積 3825m² vs 929m²) → 30 条系は大規模山間地盛土を捕捉する制度として機能。これは熱海土石流対応の制度設計に整合。
4 制度モデル — L52 / L53 / L54 / L55 の関係表
| 側面 | L54 (宅造区域) | L55 (特定区域) | L52 (許可) | L53 (届出) |
|---|
| 種別 | 区域指定 | 区域指定 | 個別工事許可 | 個別工事届出 |
| 根拠条文 | 12 条 1 項 | 30 条 1 項 | 12 条 / 30 条 | 21 条 / 40 条 |
| 本データ単位 | 2075 km² (24% of 県) | 4626 km² (55% of 県) | 152 件 | 284 件 |
| 12 条系 / 30 条系 | 12 条 1 項のみ | 30 条 1 項のみ | 12 条 131 / 30 条 19 | 21 条 160 / 40 条 124 |
| 主な地域 | 沿岸都市 | 山間地 | 都市部中規模 | 全域分散 |
| L52/L53 中央値規模 | L52: 929m² | L52: 3825m² | 全体中央値 945m² | 全体中央値 3700m² |
この表から読み取れること: 盛土規制法の4 制度連鎖が初めて 1 表に集約された: (1) 区域指定 (L54 = 12 条 1 項 / L55 = 30 条 1 項) が地理範囲を法的に固定。(2) 個別工事監督 (L52 許可 / L53 届出) がその区域内で発動。(3) L52 / L53 はそれぞれ12 条系(L54 内) と30 条系(L55 内) の 2 系統で運用される。本記事 L55 を加えた 4 本セットで初めて、盛土規制法の制度設計が立体的に理解できる構造となった。
発展課題
結果 X → 新仮説 Y → 課題 Z (3 RQ × 1 課題以上)
発展課題 1 (RQ1 由来): 30 条 1 項指定基準の地理的検証
- 結果 X: L55 は山間地 83% / 都市辺縁 14% / 島嶼 2% の構造で、
L54 とほぼ排他的に県土を分担。L54 ∪ L55 = 79% of 県をカバー。
- 新仮説 Y: 30 条 1 項の指定基準「地形条件 (傾斜度・渓流) + 周辺人口条件」 のうち、
傾斜度は L39 (地形傾斜) で測定可能、渓流は L4 (河川) で測定可能、
周辺人口は L23 (人口) で測定可能。これら 3 要因を組み合わせて
L55 指定外で30 条 1 項基準を満たす場所が存在するはず
(= 行政の指定漏れ候補)。
- 課題 Z: L39 (地形傾斜 polygon) で傾斜 30 度以上のセル、
L4 (河川) で河川 100m バッファのエリア、
L23 (人口) で下流人口 1000 人/km²以上の市町を抽出し、
3 条件すべて満たす場所と L55 を
gpd.overlay で比較。
L55 指定外で 3 条件を満たすエリアが30 条 1 項追加指定候補。
これは行政への政策提言研究に発展可能。
発展課題 2 (RQ2 由来): 警戒のみ最終ギャップ (54 km²) の地理特性
- 結果 X: L54 + L55 合算で警戒のみ = 54 km² に縮小したが、
これは盛土規制法の最終ギャップとして残る。
- 新仮説 Y: 残りの「警戒のみ」 54 km² は
森林・農地内の急傾斜地に集中し、
住民密度が極めて低いため 30 条 1 項の「下流人口条件」 を満たさず指定外になった場所。
L46 (砂防指定地) や L41 (森林資源) と空間的に重なる可能性が高い。
- 課題 Z: warn_only_combined エリアと
L46 (砂防指定地) / L41 (森林資源 polygon) / L23 (人口グリッド)を
gpd.overlay で空間結合し、(1) 砂防指定で間接監督されているか、
(2) 森林内 vs 農地内の比率、(3) 周辺 1km の人口密度分布を集計。
これにより「最終ギャップは砂防 + 森林法でカバー済 → 盛土規制法だけでは不要」 か
「砂防外の真のギャップ」 かを判別できる。
後者なら盛土規制法の指定基準改定が政策課題として浮上する。
発展課題 3 (RQ3 由来): 30 条系の運用実態時系列追跡
- 結果 X: L52 30 条系 = 19 件 (12%)、L53 40 条系 = 124 件 (44%)。
30 条系の規模中央値は 12 条系の 4.1 倍 = 大規模山間地盛土を捕捉。
- 新仮説 Y: 30 条系は新法施行 (2023-05-26) 以降の指定で運用蓄積が始まったばかり。
時系列で見ると2024 年以降に 30 条系許可案件が急増するはず。
また、30 条系で許可される盛土は太陽光発電関連が大半 = メガソーラー建設の
盛土を捕捉する目的が暗黙にある。
- 課題 Z: L52 の
permit_date 列を月別に集計し、
30 条系 vs 12 条系の時系列推移を比較。2024 年 1 月以降 vs 2023 年以前で
30 条系の比率がどう変わるかを検証。
また、許可申請理由 (= 工事種別) を XLSX 補足資料から取得し、
太陽光発電関連の比率を 30 条系 vs 12 条系で比較。
これは制度の真の運用目的を実証する応用研究。
発展課題 4 (4 制度統合): 盛土規制法 4 階層の地理的可視化
- 結果 X: L52 / L53 / L54 / L55 の 4 制度連鎖が定量化された。
L54 + L55 = 79% of 県のカバレッジ、L52 152 件 / L53 284 件の 12 条系 / 30 条系内訳判明。
- 新仮説 Y: 4 制度の盛土時系列上の発動順序は:
(1) L54/L55 区域指定 (= 法的前提) →
(2) L52 許可 (= 規模超工事) または L53 届出 (= 規模以下) →
(3) 工事完了後の残土追跡。
つまり盛土規制法は「予防 (区域) → 個別審査 (許可/届出) → 事後追跡」 の 3 段階で
地理的・時間的に連鎖する。
- 課題 Z: 各 L52/L53 申請の start_date / end_date から工事期間を
算出し、区域指定日 (2023-04-27) との時間関係を集計。
2023-05-26 以前 = 旧法での許可継続、以降 = 新法での新規許可、と分類して
4 制度の制度移行の地理的・時間的パターンを可視化。
これは行政データ科学の典型的な制度連鎖研究で、
盛土規制 4 制度の運用ガイドブックに発展可能な総合課題。