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データセット名
#333dataset #333
#444dataset #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 条系内訳を定量化する。

独自用語の定義

研究の問い (3 RQ)

仮説 H1〜H5

  1. H1 (山間地偏重, RQ1): 16 区域は山間中山間市町に偏在し、 上位 5 (庄原市・三次市・北広島町・安芸高田市・神石高原町等) で全体の 50% 以上を占める。 L54 (沿岸都市偏重) と地理的に補完。
  2. H2 (大カバー率, RQ1): L55 単独で県の 40% 以上を覆う = L54 (24%) を超える広域指定。 30 条 1 項が地形条件 + 下流人口を満たす広い領域を対象とすることに整合。
  3. H3 (警戒重複高, RQ2): L55 ∩ 警戒区域の重複率は L54 (2.9%) より高い 10-30%。 30 条 1 項自体が地形条件 + 災害リスクを考慮した区域指定で空間相関が高いはず。
  4. H4 (制度間ギャップ ≪ L54 単独, RQ2): L54 + L55 合算カバーで「警戒のみ」 は L54 単独 98 km² から 30 km² 以下に縮小。L55 が L54 のギャップを埋める設計通り。
  5. H5 (30 条系運用は控えめ, RQ3): L52 のうち L55 内立地は 5-15% 程度。 12 条系 (L54 86%) に比べ少数派。30 条系は新法施行以降の指定で許可案件の蓄積が 始まったばかり。L53 も同傾向。

到達点

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

  1. 1 つの「区域 Shapefile」 (81 polygon, 県知事 1 + 市町長 15 = 16 ファイル) から、 L54 と L55 の地理的補完性を可視化し、L54 ∪ L55 = 79.0% of 県という 合算カバレッジを定量化する方法を習得する。
  2. L52 / L53 の30 条系内訳を初めて算出し、12 条系 vs 30 条系の運用差 (規模・件数・地理) を読む眼を獲得する。30 条系は大規模工事を捕捉する制度であることを 実データから確認できる。
  3. 「警戒のみ」 残存エリアが L54 単独 98 km² から L54+L55 合算 54 km² に縮小する事実から、 制度間補完設計の有効性を定量診断する手法を体感する。

使用データ

DoBoX のシリーズ「特定盛土等規制区域」 1 件のみを単独で扱う。 リソースは Shapefile 16 件 (県知事 1 + 市町長 15) + XLSX 1 件の計 17 ファイル構造:

項目
dataset_id1428
名称特定盛土等規制区域
組織広島県土木建築局 都市環境整備課
リソース 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 条) 以外で地形条件 + 下流人口を満たす場所
CRSEPSG:6668 (JGD2011 緯度経度) → 解析時 EPSG:6671 へ変換
指定日2023-04-27 (新法施行直前)
ライセンスクリエイティブ・コモンズ表示 4.0
取得日2026-05-09

データの構造

CRS と単位の取扱

本記事は 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 → 集計)

入出力 Before/After 具体例 (1 polygon 追跡)

県知事ファイル中の最大 polygon (庄原市相当) の処理例:

段階対象geometryCRS面積
RAW (zip)Shapefile zip265 polygon (細片含)EPSG:6668 (緯度経度)
1. read_file + to_crsGeoDataFrame265 polygonEPSG:6671(計算可能に)
2. make_validGeoDataFrame265 polygon (有効)EPSG:6671
3. >1000 m² フィルタ主要のみ81 polygonEPSG:6671合計 4626 km²
4. N03_004 で市町名取得庄原 polygon1 polygonEPSG:66711058 km²
5. dissolve(by=市町名)市町別集約15 市町EPSG:667115 行
6. unary_union重複除去後1 MultiPolygonEPSG:66714626 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 が県北部・県西部の山間地に集中することが視覚で確認できる。

図 1 (RQ1): L55 全区域マップ + 市町別指定面積 choropleth
図 1 (RQ1): L55 全区域マップ + 市町別指定面積 choropleth

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

図 2: L54 vs L55 制度補完マップ + L55 polygon 規模分布

なぜこの図か: L54 (12 条系, 緑) と L55 (30 条系, 紫) を 1 枚に重ねることで、 両制度の地理的補完性を視覚的に確認する。重なる場所が極めて少なく、 むしろ排他的に県土を分担する設計が見える。 右の polygon 規模分布は L55 polygon の規模幅を log で表示。

図 2 (RQ1): L54 vs L55 制度補完マップ + polygon 規模分布
図 2 (RQ1): L54 vs L55 制度補完マップ + polygon 規模分布

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

図 3: 地形タイプ別構成 (パイ) + 市町別指定面積ランキング (Top 15)

なぜこの図か: 規制区域指定の地形偏在を 2 つのスケールで見る。 左パイで「規制区域の中での 3 タイプの内訳」、右棒で市町別ランキング。 両方を並べることで、地形タイプの内訳と個別市町の量を別軸で読む基本訓練ができる。

図 3 (RQ1): 地形タイプ別 + 市町別ランキング (Top 15)
図 3 (RQ1): 地形タイプ別 + 市町別ランキング (Top 15)

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

表: 全体サマリ (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,05822.912.51
2三次市A_中山間636.713.87.511
3北広島町A_中山間598.012.97.051
4安芸高田市A_中山間484.510.55.711
5神石高原町A_中山間372.58.054.391
6安芸太田町A_中山間311.36.733.671
7廿日市市B_都市辺縁293.36.343.461
8世羅町A_中山間251.35.432.961
9三原市B_都市辺縁177.13.832.096
10府中市A_中山間137.82.981.621
11東広島市B_都市辺縁118.02.551.394
12尾道市B_都市辺縁73.61.590.8708
13大竹市C_島嶼小規模53.21.150.63015
14江田島市C_島嶼小規模34.90.7500.41012
15大崎上島町C_島嶼小規模25.60.5500.30025

この表から読み取れること: 各市町の地形タイプ・面積・polygon 数を一覧で確認できる。Top 5 はすべて中山間市町で、上位 1 市町 (庄原市) だけで全県の 12% を占める。下位の島嶼小規模 (大崎上島 25 km²) は polygon 数 (25 個) が多いが面積は小さい = 島嶼の地理的特性 (細かい入江・湾岸)を反映する。

表: 地形タイプ別集計 (3 タイプ)

地形タイプ市町数指定面積_km2シェア_%
A 中山間市町 (本制度の主舞台)83,85083.2
B 都市辺縁4662.114.3
C 島嶼/小規模沿岸3113.72.50
D その他10.0110.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 区分集計)

入力: 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 は山間地に広く分布するが、 警戒区域は急傾斜地・渓流に局所集中するため、空間目的の違いが見える。

図 4 (RQ2): L55 × 警戒区域 重ね合わせ全県マップ
図 4 (RQ2): L55 × 警戒区域 重ね合わせ全県マップ

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

図 5: L54 単独 vs L54+L55 合算の警戒のみ縮小 — H4 直接検証

なぜこの図か: 本記事最重要の発見 = 「L55 が L54 のギャップを埋める」 を 直接検証する図。左の 4 区分パイで合算後の県土カバレッジ、 右の比較棒で警戒のみ縮小幅 (98 → 54 km²) を 1 枚で表現する。

図 5 (RQ2): L54 単独 vs L54+L55 合算の警戒のみ縮小 — H4 直接検証
図 5 (RQ2): L54 単独 vs L54+L55 合算の警戒のみ縮小 — H4 直接検証

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

図 6: 市町別 L55 二重リスク choropleth + ランキング

なぜこの図か: 二重リスクを市町単位で正規化したランキングと地図。 L55 内警戒比率は全県平均で 0.9% と低いが、市町別には差がある。 中山間市町でも下流人口条件を強く満たす場所では二重リスクが集中する。

図 6 (RQ2): 市町別 L55 二重リスク choropleth + ランキング
図 6 (RQ2): 市町別 L55 二重リスク choropleth + ランキング

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

表: 市町別 L55 二重リスクランキング (Top 12)

順位市町名区域面積_km2二重リスク_km2区域内警戒区域比率_%
1庄原市1,0589.080.900
2三次市636.78.201.30
3北広島町598.05.640.900
4安芸高田市484.55.241.10
5神石高原町372.53.160.800
6廿日市市293.32.260.800
7府中市137.82.241.60
8世羅町251.31.910.800
9安芸太田町311.31.630.500
10三原市177.11.280.700
11東広島市118.01.040.900
12尾道市73.60.9891.30

この表から読み取れること: 二重リスク面積トップは 庄原市 (9.1 km², 区域内警戒比率 0.9%)。区域内警戒比率は 1% 前後で全市町ほぼ均一 = L55 は山間地全体を面的に指定するため警戒区域比率が薄まるという構造的特徴。

表: 4 区分カバレッジ (L54+L55 合算 × 警戒)

区分面積_km2県シェア_%意味
1. (L54+L55) ∩ 警戒 (二重リスク)104.81.24盛土規制 (12 or 30 条) + 自然災害想定 = 二重防御
2. (L54+L55) のみ (警戒区域外)6,59677.8盛土規制のみ。地形リスクは想定外だが工事監督対象
3. 警戒のみ (L54+L55 合算でも残る)54.40.640災害想定のみ。山間集落で盛土規制が及ばない最終ギャップ
4. どちらも該当外1,72420.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 判定 + 規模比較 + 区域別件数集計)

入力: 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 枚で確認できる。

図 7 (RQ3): L52/L53 × L54/L55 in/out オーバーレイ
図 7 (RQ3): L52/L53 × L54/L55 in/out オーバーレイ

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

図 8: 12 条系 vs 30 条系 盛土規模比較 (L52)

なぜこの図か: L52 152 件を 12 条系 (L54 内) と 30 条系 (L55 内) に分け、 盛土の高さ・面積・土量の中央値を比較する。30 条系が大規模工事を捕捉する仮説を直接検証。

図 8 (RQ3): 12 条系 vs 30 条系 盛土規模比較 (L52)
図 8 (RQ3): 12 条系 vs 30 条系 盛土規模比較 (L52)

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

図 9 (4 制度統合): Top 8 L55 区域の総合プロファイル
図 9 (4 制度統合): Top 8 L55 区域の総合プロファイル

図 9 から読み取れること: Top 8 L55 区域の区域面積・二重リスク・L52 30 条系・L53 40 条系を 4 系列棒で並べた総合図。庄原・三次・北広島は区域面積が大きいが L52/L53 件数は中程度 → 大面積 = 大量盛土発生 ではないこと、つまり山間地は面積に対して工事密度が低いことを 1 図で確認できる。これは都市部 (L54) との明確な対比。

表: L52 規模比較 (12 条系 vs 30 条系)

指標L54 内 (12 条系)L55 内 (30 条系)差 (30-12)
件数 (件)131.019.0-112.0
高さ 中央値 (m)2.074.402.33
面積 中央値 (m²)929.03,8252,896
盛土量 中央値 (m³)611.05,6505,038
面積 最大 (m²)9,95441,50131,546

この表から読み取れること: L52 152 件のうち、30 条系 (L55 内) は中央値で面積 4.1 倍・高さ 2 倍超。30 条系は明確に大規模工事を捕捉する制度。差 (30-12) 列を見ると、全規模指標で 30 条系が大きく、これは制度設計の意図を反映する。

表: 区域別 30 条系運用件数 (L52 許可 + L53 届出)

順位市町名区域面積_km2L52許可L53届出L52+L53合計L52密度_件km2L53密度_件km2
1三次市636.7423270.0060.036
2三原市177.1415190.0230.085
3庄原市1,058315180.0030.014
4世羅町251.3215170.0080.060
5安芸高田市484.5112130.0020.025
6神石高原町372.5211130.0050.029
7北広島町598.019100.0020.015
8府中市137.80660.0000.044
9東広島市118.00550.0000.042
10江田島市34.91340.0290.086
11尾道市73.60330.0000.041
12大竹市53.20330.0000.056
13廿日市市293.31230.0030.007
14大崎上島町25.60110.0000.039
15安芸太田町311.30110.0000.003

この表から読み取れること: 区域別の 30/40 条系件数集計。L52+L53 合計上位は 三次市 (4+23=27 件) 等の中山間市町 → 山間地の盛土需要が定量的に確認される。密度 (件/km²) は L54 内に比べ非常に低く、これは山間地の単位面積あたり工事密度が都市部より少ないことを反映。

表: 市町別ファイルメタ (15 ファイル確認用)

市町コード市町名polygon数面積_km2
342050三原市20177.2
342068尾道市3473.7
342084府中市1137.8
342092三次市1636.7
342106庄原市11,058
342114大竹市2453.2
342122東広島市15118.0
342131廿日市市13293.3
342149安芸高田市1484.5
342157江田島市5134.9
343684安芸太田町1311.3
343692北広島町1598.0
344621世羅町1251.3
345458神石高原町1372.5
344541大崎上島町5025.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 結論

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 条 1921 条 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 項指定基準の地理的検証

発展課題 2 (RQ2 由来): 警戒のみ最終ギャップ (54 km²) の地理特性

発展課題 3 (RQ3 由来): 30 条系の運用実態時系列追跡

発展課題 4 (4 制度統合): 盛土規制法 4 階層の地理的可視化