Lesson 17
L17 用途地域 21市町統合分析 — 広島県の Zoning 指定構造と都市プロファイル
都市計画用途地域Zoninggeopandask-means クラスタリング21市町統合21 dataset_id
所要 25-35 分(コード実行は約 1 分) / 想定レベル: リテラシ+(geopandas 入門済を想定、L15/L16 連携、k-means 初学) / データ: DoBoX 都市計画区域情報_区域データ_各種用途地域 21 件
データ取得手順
✅ このスクリプトは初回実行時にデータを自動取得します(DoBoX からの直接ダウンロード)。
| ID | データセット名 |
| #444 | dataset #444 |
| #794 | 都市計画区域情報_区域データ_広島市_各種用途地域 |
| #804 | 都市計画区域情報_区域データ_呉市_各種用途地域 |
| #811 | 都市計画区域情報_区域データ_竹原市_各種用途地域 |
| #821 | 都市計画区域情報_区域データ_三原市_各種用途地域 |
| #831 | 都市計画区域情報_区域データ_尾道市_各種用途地域 |
| #837 | 都市計画区域情報_区域データ_福山市_各種用途地域 |
| #847 | 都市計画区域情報_区域データ_府中市_各種用途地域 |
| #855 | 都市計画区域情報_区域データ_三次市_各種用途地域 |
| #861 | 都市計画区域情報_区域データ_庄原市_各種用途地域 |
| #867 | 都市計画区域情報_区域データ_大竹市_各種用途地域 |
| #875 | 都市計画区域情報_区域データ_東広島市_各種用途地域 |
| #885 | 都市計画区域情報_区域データ_廿日市市_各種用途地域 |
| #893 | 都市計画区域情報_区域データ_安芸高田市_各種用途地域 |
| #899 | 都市計画区域情報_区域データ_江田島市_各種用途地域 |
| #904 | 都市計画区域情報_区域データ_府中町_各種用途地域 |
| #910 | 都市計画区域情報_区域データ_海田町_各種用途地域 |
| #915 | 都市計画区域情報_区域データ_熊野町_各種用途地域 |
| #921 | 都市計画区域情報_区域データ_坂町_各種用途地域 |
| #932 | 都市計画区域情報_区域データ_広島県_各種用途地域 |
| #940 | 都市計画区域情報_区域データ_北広島町_各種用途地域 |
| #946 | 都市計画区域情報_区域データ_世羅町_各種用途地域 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L17_use_zones.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
1. 学習目標と問い
本レッスンは、広島県オープンデータポータル DoBoX の
「都市計画区域情報_区域データ_各種用途地域」シリーズ 21 件を
1 つに統合し、広島県の用途地域 (Zoning) 指定構造と
市町ごとの用途構成プロファイルを読み解く研究記事です。
研究問い (RQ)
広島県内の用途地域 (Zoning) は、住居・商業・工業の 3 類型でどう構成され、
市町ごとにどのような「用途構成プロファイル」を持つか?
独自用語の定義(要件 M)
- 用途地域 (Zoning): 都市計画法に基づき、都市計画区域の内部で
「ここは住居中心」「ここは商業中心」「ここは工業」と用途を限定指定する制度。
本記事では
YOTO_CD(1〜13 のコード)で識別する 13 種類の用途地域を扱う。
用途地域は都市計画区域の内側にしか指定できない(L16 の都計区域内=指定可、白地=指定不可)。
- YOTO_CD: GeoJSON の属性列で用途地域を 1〜13 のコードで表す。
1〜7 は住居系、8〜9 は商業系、10〜12 は工業系、13 は田園住居系。
本記事の主要なグルーピングキー。
- 3 類型(4 類型): 13 用途地域を意味のある粒度に集約した独自分類。
本記事では 住居系 (1-7) / 商業系 (8-9) / 工業系 (10-12) / 田園系 (13) の 4 類型を採用。
法律上は「住居・商業・工業」の 3 大類型だが、2018 年の田園住居地域追加を受け 4 類型化する。
- 用途構成プロファイル: 各市町の「用途地域 内訳の比率」。
本記事独自の指標で、3 (4) 類型の面積比 (%) のベクトルとして表す。
例: 広島市 = (住居 60%, 商業 5%, 工業 33%, 田園 0.3%) のような形。
- 用途地域指定密度 (use_zone_density_pct): 用途地域 総面積 ÷ 行政区域面積 × 100。
100% に近いほど市町全域が用途地域指定、0% に近いほど用途地域指定外(白地・農地・山林)が広い。
L16 の「都計指定率」と異なり、用途地域に限った密度を測る。
- 用途プロファイル クラスタ: 4 類型比率を特徴量に k-means (k=4) で 20 市町を分類した結果。
本記事独自の分類で、「住宅都市型」「工業都市型」「商業中核型」など実体に応じてラベル化。
仮説 H1〜H5(要件 D)
- H1: 用途地域は住居系 (YOTO_CD 1-7) が面積で過半を占め、
商業系 (8-9) はごくわずか、工業系 (10-12) は瀬戸内沿岸の特定市町に集中する
- H2: 近隣商業地域 (YOTO_CD=8) は広島県でほとんど指定されておらず、
商業地域 (9) に機能が統合されている(県全域でも 8 は < 数件と予測)
- H3: 田園住居地域 (YOTO_CD=13、2018 年都市計画法改正で新設) は新しい類型のため、
全県でも 50 件未満に留まる(複数市町で導入が始まった段階)
- H4: 市町ごとに用途構成は大きく異なり、
「住宅都市型/工業都市型/商業中核型」などのプロファイルにグルーピング可能
(k-means クラスタリングで silhouette > 0.2 を期待)
- H5: 工業専用地域 (YOTO_CD=12) は瀬戸内沿岸の臨海工業地帯
(大竹・福山・尾道・呉) に強く偏在し、内陸市町ではほぼゼロ件
到達点
- 21 GeoJSON を 1 個の
GeoDataFrame に統合し、YOTO_CD で
13 用途地域を識別する手法(L15/L16 と同パターン)
dissolve(by="YOTO_CD") による用途地域の幾何統合と
連結成分数・市町またぎ数の計量
- 13 用途地域 → 4 類型の集約と 3 類型主題図での視覚化
- 市町別 用途構成プロファイル(4 類型比率ベクトル)の構築と 100% 積み上げ可視化
- k-means クラスタリング による 20 市町の都市プロファイル自動分類
- 整合性検証: 21 市町別ファイルと県全域 ds=932 のポリゴン単位の同一性確認
- 図 9 種・表 9 種で用途地域指定構造を多角的に提示
注: 本記事の対象範囲
本記事は 用途地域 (Zoning, 指定情報) に集中する。
区域階層上は L16 都計区域 ⊃ 用途地域 という入れ子関係であり、
用途地域は都計区域の内部にしか指定できない(白地は対象外)。
- L13: 「建物利用」(実建物の現況)と用途地域の mismatch 分析を扱う(本記事では扱わない)
- L15: 行政区域(市町境界)— 本記事の 分母/背景レイヤとして最小限参照
- L16: 都市計画区域(都市的整備対象の外枠)— 本記事の 背景レイヤとして参照
- L18: 市街化区域・市街化調整区域(線引き)— 別記事で扱う
他 4 シリーズと「合体」せず、用途地域シリーズ単独の研究記事としての完結を目指す。
2. 使用データ
本記事で使う 21 dataset_id(市町別 20 + 県全域 1)は、DoBoX で「都市計画区域情報」配下「区域データ」配下の 各種用途地域 シリーズである。列構造が 21 件すべてで完全に同一(FID, TOKEI_CD, CITY_CD, YOTO_CD, geometry の 5 列)であることが事前監査で確認済みのため、pd.concat による単純な縦結合で県全域 GeoDataFrame が組み立てられる (L13/L15/L16 と同パターン)。
データ仕様と YOTO_CD 凡例
| 項目 | 値 |
| シリーズ | 都市計画区域情報_区域データ_各種用途地域 |
| 件数(カバー) | 21 dataset_id(市町別 20 + 県全域 1) |
| 形式 | GeoJSON(ZIP 内同梱) |
| CRS | EPSG:6671 (JGD2011 平面直角第III系) ※全 21 件で統一 |
| 列構造 | FID, TOKEI_CD, CITY_CD, YOTO_CD, geometry(5列、全 21 件で同一) |
YOTO_CD 値域 | 1〜13 の整数(13 用途地域) |
| ジオメトリ型 | Polygon |
| 合計ポリゴン数 | 2629(市町別 21 ファイル合計)/ 2629(県全域 ds=932) |
| 本記事で扱うサイズ | 2629 ポリゴン × 9 列 ≈ 数 MB(軽量) |
YOTO_CD 凡例(13 用途地域)
| YOTO_CD | 用途地域名 | 3類型カテゴリ | 本記事カラー | 用途の趣旨(建築基準法) |
| 1 | 第一種低層住居専用地域 | 住居系 | | 低層住宅専用、絶対高さ 10/12m 制限 |
| 2 | 第二種低層住居専用地域 | 住居系 | | 低層住宅 + 小規模店舗(150㎡まで) |
| 3 | 第一種中高層住居専用地域 | 住居系 | | 中高層住宅専用、店舗は小規模のみ |
| 4 | 第二種中高層住居専用地域 | 住居系 | | 中高層住宅 + 中規模店舗(1500㎡まで) |
| 5 | 第一種住居地域 | 住居系 | | 住宅環境を主とし、3000㎡以下の店舗・事務所可 |
| 6 | 第二種住居地域 | 住居系 | | 住宅環境を主とし、店舗・事務所等の用途緩和 |
| 7 | 準住居地域 | 住居系 | | 道路沿道地域。住居 + 自動車関連施設 |
| 8 | 近隣商業地域 | 商業系 | | 近隣住民の日用品供給。住宅と店舗の混在 |
| 9 | 商業地域 | 商業系 | | 銀行・映画館・飲食店等の商業中核地区 |
| 10 | 準工業地域 | 工業系 | | 軽工業 + 住宅 + 商業の混在用途 |
| 11 | 工業地域 | 工業系 | | 工業中心、住宅可だが学校等は不可 |
| 12 | 工業専用地域 | 工業系 | | 工業専用、住宅・店舗・学校全て不可 |
| 13 | 田園住居地域 | 田園系 | | 2018 年改正で新設。農業 + 低層住宅の調和地域 |
21 dataset_id 一覧(直リンク)
| 市町 | タイプ | 海岸/内陸 | DoBoXページ | ZIP保存先 |
|---|
| 広島市 | 政令市 | 海岸 | DoBoX #794 | data/extras/L17_use_zones/use_zone_794_広島市.zip |
| 呉市 | 市 | 海岸 | DoBoX #804 | data/extras/L17_use_zones/use_zone_804_呉市.zip |
| 竹原市 | 市 | 海岸 | DoBoX #811 | data/extras/L17_use_zones/use_zone_811_竹原市.zip |
| 三原市 | 市 | 海岸 | DoBoX #821 | data/extras/L17_use_zones/use_zone_821_三原市.zip |
| 尾道市 | 市 | 海岸 | DoBoX #831 | data/extras/L17_use_zones/use_zone_831_尾道市.zip |
| 福山市 | 市 | 海岸 | DoBoX #837 | data/extras/L17_use_zones/use_zone_837_福山市.zip |
| 府中市 | 市 | 内陸 | DoBoX #847 | data/extras/L17_use_zones/use_zone_847_府中市.zip |
| 三次市 | 市 | 内陸 | DoBoX #855 | data/extras/L17_use_zones/use_zone_855_三次市.zip |
| 庄原市 | 市 | 内陸 | DoBoX #861 | data/extras/L17_use_zones/use_zone_861_庄原市.zip |
| 大竹市 | 市 | 海岸 | DoBoX #867 | data/extras/L17_use_zones/use_zone_867_大竹市.zip |
| 東広島市 | 市 | 海岸 | DoBoX #875 | data/extras/L17_use_zones/use_zone_875_東広島市.zip |
| 廿日市市 | 市 | 海岸 | DoBoX #885 | data/extras/L17_use_zones/use_zone_885_廿日市市.zip |
| 安芸高田市 | 市 | 内陸 | DoBoX #893 | data/extras/L17_use_zones/use_zone_893_安芸高田市.zip |
| 江田島市 | 離島自治体 | 海岸 | DoBoX #899 | data/extras/L17_use_zones/use_zone_899_江田島市.zip |
| 府中町 | 町 | 内陸 | DoBoX #904 | data/extras/L17_use_zones/use_zone_904_府中町.zip |
| 海田町 | 町 | 海岸 | DoBoX #910 | data/extras/L17_use_zones/use_zone_910_海田町.zip |
| 熊野町 | 町 | 内陸 | DoBoX #915 | data/extras/L17_use_zones/use_zone_915_熊野町.zip |
| 坂町 | 町 | 海岸 | DoBoX #921 | data/extras/L17_use_zones/use_zone_921_坂町.zip |
| 北広島町 | 町 | 内陸 | DoBoX #940 | data/extras/L17_use_zones/use_zone_940_北広島町.zip |
| 世羅町 | 町 | 内陸 | DoBoX #946 | data/extras/L17_use_zones/use_zone_946_世羅町.zip |
| 広島県(全域集約) | — | — | DoBoX #932 | data/extras/L17_use_zones/use_zone_932_広島県.zip |
海岸/内陸 区分は本記事独自の分類(瀬戸内海岸線にポリゴンが接するかで決定)。三次市・庄原市・北広島町・世羅町・安芸高田市・府中市・府中町・熊野町は内陸。他は海岸を持つ。L15/L16 と同じ分類を使うことで、L15-L18 の区域系記事間で参照軸を統一する。
3. ダウンロード(再現用データ・中間データ・図・スクリプト)
本記事の再現性を担保するため、HTML 1 枚から
生データ・中間 CSV・図 PNG・再現 Python を直リンクで取得できるようにしてある。
(1) 生データ ZIP(DoBoX 直)
21 件の ZIP は前項の表からそれぞれ DoBoX へリンクしている。
あるいは一括取得スクリプトを使う:
cd "2026 DoBoX 教材"
py -X utf8 data\extras\L17_use_zones\fetch_use_zones.py
(2) 中間 CSV(本スクリプトの出力)
(3) 図 PNG(本記事掲載)
(4) 再現用 Python スクリプト
実行は cd "2026 DoBoX 教材"; py -X utf8 lessons\L17_use_zones.py。
21 ZIP がローカルにあれば 1 分以内で全図 + CSV 再生成(要件 S 準拠)。
ZIP が無い場合は事前に fetch_use_zones.py を実行。
4. 分析1: 21 GeoJSON を1枚の GeoDataFrame に統合する
狙い
21 個の ZIP(市町ごとに別ファイル)を、プログラム上は 1 個の GeoDataFrame として扱える形にする。21 件すべてが同列構造(FID/TOKEI_CD/CITY_CD/YOTO_CD/geometry の 5 列)であることが事前監査で確認済みなので、和集合化なしで縦結合できる。L15(行政区域)・L16(都計区域)と全く同じパターン。
手法
直感: ZIP→geopandas→属性付与→concat→YOTO 展開 の 5 ステップ。重要な追加処理は、YOTO_CD(1〜13 の数値)を意味のある列に展開する点。数値だけ持っていても可視化や集計で名前が必要になるため、辞書 YOTO_INFO で 13 用途を全部定義してから map で展開する。
大筋(5 ステップ)
- 21 件の ZIP を 1 個ずつ
load_geojson_zip() で読む - 各 GeoDataFrame に
source_city/source_dsid/coastal/ctype 列を付与 - 21 個を
pd.concat で縦結合 → 2629 行 1 個 to_crs(EPSG:6671) で広島県平面直角座標系に投影変換YOTO_INFO 辞書で YOTO_NAME / YOTO_TYPE 列を展開、面積計算
入出力: 入力 = 21 ZIP、出力 = 2629 行 × 13 列の GeoDataFrame 1 個。
前提と限界: 21 件の列構造が同一であることが大前提(事前監査で OK 確認済)。DoBoX が将来列を増やしても pd.concat は和集合化するため列が増えて NaN が出るだけで、既存処理には影響しない。
パラメータの意味: TARGET_CRS=EPSG:6671 は広島県専用の平面直角座標系で、面積計算が m 単位で正確になる。緯度経度のままだと面積が度² になり意味がない。
実装
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 | DATA_DIR = ROOT / "data" / "extras" / "L17_use_zones"
TARGET_CRS = "EPSG:6671" # JGD2011 平面直角 III, 広島県, m 単位
CITY_DEFS = [
(794, "広島市", True, "政令市"),
(804, "呉市", True, "市"),
# ... 計 20 行
]
# YOTO_CD 1-13 → (用途名, 3類型カテゴリ, カラー)
YOTO_INFO = {
1: ("第一種低層住居専用地域", "住居系", "#a6dba0"),
2: ("第二種低層住居専用地域", "住居系", "#7fbc41"),
# ... 13 行
13: ("田園住居地域", "田園系", "#ffd92f"),
}
def load_geojson_zip(zip_path):
"""ZIP 内の単一 .geojson を BytesIO 経由で読む(一時ファイル不要)"""
import io, zipfile
with zipfile.ZipFile(zip_path) as zf:
gjs = [n for n in zf.namelist() if n.endswith(".geojson")]
with zf.open(gjs[0]) as f:
return gpd.read_file(io.BytesIO(f.read()))
frames = []
for dsid, name, coastal, ctype in CITY_DEFS:
z = DATA_DIR / f"use_zone_{dsid}_{name}.zip"
g = load_geojson_zip(z)
g["source_city"] = name; g["source_dsid"] = dsid
g["coastal"] = coastal; g["ctype"] = ctype
frames.append(g)
zone = gpd.GeoDataFrame(pd.concat(frames, ignore_index=True),
geometry="geometry", crs=frames[0].crs)
zone = zone.to_crs(TARGET_CRS) # m 単位 化
zone["YOTO_NAME"] = zone["YOTO_CD"].map(lambda c: YOTO_INFO[c][0])
zone["YOTO_TYPE"] = zone["YOTO_CD"].map(lambda c: YOTO_INFO[c][1])
zone["poly_area_km2"] = zone.geometry.area / 1e6
|
入出力 Before/After(具体例: ds=794 広島市)
| 段階 | 形 | サイズ | このデータで起きていること |
| ① 元 ZIP | ZIP(中身は1個の .geojson) | ~2.4 MB | 広島市の 999 ポリゴンが GeoJSON 1 ファイルに格納(8 区にまたがる用途地域指定) |
② load_geojson_zip() 後 | GeoDataFrame | 999 行 × 5 列 | FID, TOKEI_CD, CITY_CD, YOTO_CD (1-13), geometry |
| ③ 属性付与 | GeoDataFrame | 999 行 × 9 列 | source_city="広島市", source_dsid=794, coastal=True, ctype="政令市" |
④ pd.concat(21 市町分) | GeoDataFrame | 2629 行 × 9 列 | 20 市町分のポリゴンが 1 枚に |
⑤ to_crs(EPSG:6671) | GeoDataFrame | 2629 行 | JGD2011 平面直角第III系(m 単位)に投影変換 → 面積計算可能化 |
| ⑥ YOTO_NAME / YOTO_TYPE 付与 | GeoDataFrame | 2629 行 × 11 列 | YOTO_CD を辞書で名前と 3 類型に展開 |
| ⑦ 面積計算 | GeoDataFrame | 2629 行 × 13 列 | poly_area_km2, poly_perim_km を追加 |
結果(次セクションで使う)
このステップで zone(2629 行 × 13 列)とken_gdf(県全域版 ds=932、2629 行)が用意できた。以降の分析は全部この 2 つだけで完結する。YOTO_CD 別ポリゴン数の概観は 5=578 件(最多: 第一種住居)、9=348 件(商業)、11=340 件(工業)と続く。
5. 分析2: 13 用途地域と 4 類型を集約する(dissolve + groupby)
狙い
21 個の市町別ファイルにバラバラに格納されている用途地域を、YOTO_CD(用途地域コード)でグルーピングして1 用途地域 = 1 単位にまとめる。これにより「県内に第一種住居地域は何 km² あるか」のような全県スケールの質問に答えられる。また 13 用途を 4 類型(住居系/商業系/工業系/田園系)に集約することで、都市計画思想の大枠が見えてくる。
手法(dissolve + 集約)
直感: 「同じ YOTO_CD を持つポリゴン同士を融合する」。例えば第一種住居地域(YOTO_CD=5)は 20 市町ファイルそれぞれに分散しており、dissolve(by="YOTO_CD") で 1 個の MultiPolygon に統合できる。これにより県全体での用途地域別面積が即座に分かる。
大筋
zone.dissolve(by="YOTO_CD") で 13 個の MultiPolygon を作る- 各 MultiPolygon の 連結成分数(部分数)を
n_parts() で数える(島嶼や飛び地で分散している場合の数) - 面積を計算(
geometry.area / 1e6 で km² に) pd.crosstab で YOTO_CD × source_city の表を作り、各用途地域がいくつの市町に導入されているか(cities_count)を算出YOTO_TYPE で 4 類型集計、シェア (%) を計算
入出力: 入力=2629 行の GeoDataFrame、出力 1 = 13 行の用途地域集約 GeoDataFrame、出力 2 = 4 行の 4 類型集計表。
前提と限界: dissolve は同 YOTO_CD のポリゴンを幾何学的に融合するため、市町境界をまたいだ部分がシームとして残ることがある。本データでは事前にスナップ済みのため問題なし。
また、用途地域は都計区域内にしか指定できないため、本記事の zone 全体面積(≈ 489 km²)は L16 の都計区域面積(5,500 km²)よりずっと小さい。用途地域は都計区域の内部のさらに細分指定であることに注意。
実装
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 | # YOTO_CD 別にジオメトリを統合 (dissolve)
# → 「第一種住居地域」は 20 市町ファイルに分割されているが、
# 1 個の MultiPolygon にまとまる
zone_diss_yoto = zone.dissolve(by="YOTO_CD", aggfunc={
"YOTO_NAME": "first",
"YOTO_TYPE": "first",
}).reset_index()
# 連結成分数 (n_parts): 統合後の物理的な「部分」数
def n_parts(geom):
if geom is None or geom.is_empty:
return 0
if geom.geom_type == "MultiPolygon":
return len(list(geom.geoms))
return 1
zone_diss_yoto["n_parts"] = zone_diss_yoto.geometry.apply(n_parts)
zone_diss_yoto["area_km2"] = zone_diss_yoto.geometry.area / 1e6
zone_diss_yoto["polys_count"] = zone_diss_yoto["YOTO_CD"].map(
zone["YOTO_CD"].value_counts())
zone_diss_yoto["cities_count"] = zone_diss_yoto["YOTO_CD"].map(
pd.crosstab(zone["YOTO_CD"], zone["source_city"]).gt(0).sum(axis=1))
# 4 類型集計
type_agg = zone.groupby("YOTO_TYPE").agg(
polys_count=("poly_area_km2", "size"),
area_km2=("poly_area_km2", "sum"),
).reset_index()
type_agg["share_pct"] = type_agg["area_km2"] / type_agg["area_km2"].sum() * 100
|
表(要件 G): 13 用途地域 集約一覧
なぜこの表か: 13 用途地域全体の俯瞰。「どの用途地域が県全体でどれだけ広く、何市町に導入されているか」を一覧で見る。
| YOTO_CD | 用途地域名 | 3 類型 | ポリゴン数 | 面積 km² | 連結成分数 | 導入市町数 |
|---|
| 1 | 第一種低層住居専用地域 | 住居系 | 246 | 63.47 | 211 | 16 |
| 2 | 第二種低層住居専用地域 | 住居系 | 64 | 2.43 | 64 | 8 |
| 3 | 第一種中高層住居専用地域 | 住居系 | 312 | 48.27 | 294 | 18 |
| 4 | 第二種中高層住居専用地域 | 住居系 | 129 | 19.14 | 120 | 10 |
| 5 | 第一種住居地域 | 住居系 | 578 | 161.81 | 548 | 20 |
| 6 | 第二種住居地域 | 住居系 | 185 | 20.33 | 163 | 14 |
| 7 | 準住居地域 | 住居系 | 71 | 4.07 | 69 | 15 |
| 9 | 商業地域 | 商業系 | 348 | 38.48 | 268 | 20 |
| 10 | 準工業地域 | 工業系 | 150 | 14.97 | 59 | 16 |
| 11 | 工業地域 | 工業系 | 340 | 52.74 | 319 | 20 |
| 12 | 工業専用地域 | 工業系 | 168 | 34.39 | 161 | 17 |
| 13 | 田園住居地域 | 田園系 | 38 | 29.07 | 37 | 12 |
この表から読み取れること
- 第一種住居地域 (YOTO_CD=5) が県全体最大: 162 km²、578 ポリゴン、20 市町に導入。県内で最も広く使われる「住宅環境を主とし、適度な店舗・事務所も許容する」標準的な住居地域。
- 近隣商業地域 (YOTO_CD=8) はゼロ件: 表を見ても 8 の行が無い。広島県では近隣商業地域が一切指定されていない。仮説 H2 を強く支持。代わりに商業地域 (9) が 38 km² 指定されている。
- 田園住居地域 (YOTO_CD=13): 38 ポリゴン、12 市町に導入。2018 年都市計画法改正で新設された 13 番目の用途地域で、農地と低層住宅の調和を図る目的。広島県でも複数市町ですでに導入が始まっている(仮説 H3 を支持)。
- 工業専用地域 (YOTO_CD=12) は 12 市町に導入(34 km²)。市町数では多いが面積は中位。臨海部の工業集積地に限定的に指定されている(後述の H5 検証)。
- 第二種住居地域 (YOTO_CD=6) と準住居地域 (YOTO_CD=7) は導入が比較的限定的。第二種は 1〜5 の住居系の中でも「店舗緩和」用途、準住居は「沿道車両関連」用途の特殊指定で、県内では 1/3〜1/2 の市町でしか使われていない。
表(要件 G): 4 類型 集計(住居系/商業系/工業系/田園系)
なぜこの表か: 13 用途を 4 類型に集約した粗視化ビュー。都市計画思想の大枠(住居中心 vs 商業中心 vs 工業中心)が一目で見える。
| 4 類型 | ポリゴン数 | 面積 km² | シェア % | 含む YOTO_CD 数 |
|---|
| 住居系 | 1585 | 319.52 | 65.32% | 7 |
| 工業系 | 658 | 102.10 | 20.87% | 3 |
| 商業系 | 348 | 38.48 | 7.87% | 1 |
| 田園系 | 38 | 29.07 | 5.94% | 1 |
この表から読み取れること
- 住居系が圧倒的に最大シェア (約 65%)。用途地域 = 住居中心の制度であることを定量的に裏付ける。仮説 H1 を強く支持。
- 商業系のシェアは 7.9% と非常に小さい。商業地域は商業中核地区 (繁華街) のみに限定指定される、面積効率の良い類型。
- 工業系のシェアは 20.9%。住居系の半分前後だが商業系の数倍。後述で沿岸偏在を地理的に確認する。
- 田園系のシェアは 5.94% と極めて小さい。新類型のため絶対面積もポリゴン数もまだ小さい。仮説 H3 を支持。
- 4 類型の含む YOTO_CD 数を見ると、住居系 7 種・商業系 1 種(8 はゼロのため実質 1)・工業系 3 種・田園系 1 種という偏った配分。住居系の細分化が圧倒的に進んだ制度設計であることが分かる(用途地域は本来「住宅環境保全」の発想が強い)。
6. 分析3: 主題図と small multiples で地理パターンを掴む
狙い
前セクションで識別した 13 用途地域を地図で可視化する。「県内のどこにどの用途地域が指定されているか」を直感的に掴む(要件 T)。
図 1: 13 用途地域 主題図(YOTO_CD 別カラー)
なぜこの図か(要件 H): 県全域に対して「13 用途地域の地理的配置」の基準ビュー。住居系(緑系)・商業系(赤橙)・工業系(紫)・田園系(黄)のカラーコーディングで 4 類型と 13 細分の両方が一目で分かる。
この図から読み取れること(要件 F)
- 用途地域の指定エリアは県の南部沿岸と中核都市部に集中。県中北部の中山間地域はほぼ何も塗られていない(白=行政区域だが用途地域なし=白地)。
- 広島市・福山市の中心部に赤い塊(商業地域 9)。両市の中央銀座的な繁華街がそのまま商業地域として指定されている。他都市(呉・三原・尾道・廿日市・東広島)にも小さな赤塊が見える。
- 沿岸の濃紫(工業専用 12 = #3f007d)が大竹・福山・尾道港湾部に集中。瀬戸内臨海工業地帯がそのまま地理的に可視化される。
- 緑系(住居系)が用途地域の背景全体。最濃緑(4 = 第二種中高層)・中濃緑(3)・薄緑(5/6)が都心から郊外へのグラデーションを形成。
- 黄色(田園住居 13)はわずかに点在。新しい類型のため絶対量は少ないが、東広島市・三原市・広島市・尾道市・福山市など複数市町ですでに導入されているのが視認できる。
図 2: 4 類型 主題図 + 面積パイ
なぜこの図か: 13 用途は色数が多すぎて全体構造が見にくい。4 類型に粗視化することで、「住居系がほぼ全面、工業系は沿岸の塊、商業系は点的」という用途地域指定の 3 大空間パターンが一目で見える。右のパイチャートで面積構成比を数値化。
この図から読み取れること
- 住居系が約 65% で過半。地図の緑領域がほぼ全用途地域の背景を成す。
- 工業系 20.9%(紫)は主に沿岸偏在だが内陸にも一部存在。大竹・福山・尾道・呉・東広島・廿日市など沿岸市町に主集中、ただし北広島町(内陸工業団地)・府中市など内陸にも進出している例がある。後述の図 6 で詳細検証。
- 商業系 7.9%(赤)は都市の中心点として極小領域に存在。面積効率はきわめて高く、繁華街として実需が大きい。
- 田園系 5.9%(黄)は意外に小さくないシェア。13 用途地域中の新類型ながら、大竹市・福山市・三原市などで積極導入されている。「商業系より田園系の方がシェアが小さい」と思いきや、田園系 (5.9%) は商業系 (7.9%) と近い水準まで成長していることに注目。
図 3: 13 用途地域 small multiples(同一スケール)
なぜこの図か: 主題図 1 枚だと色重なりで個別用途の地理パターンが見にくい。13 panels に分割し同一スケールで並べることで、「どの用途地域が県のどこに偏在するか」の地理パターンが各々クリアに見える。
この図から読み取れること
- YOTO=1 (第一種低層住居): 中規模都市部の郊外住宅地に分散。広島市西部・呉市・福山市・東広島市等の計画的な住宅団地に対応。
- YOTO=5 (第一種住居): 県全体に最も広く分布する標準的住居地域。用途地域指定されたほぼ全域の「ベース」のような役割。
- YOTO=8 (近隣商業): 地図に何も表示されない(県内ゼロ件)。広島県固有の制度運用の特徴。仮説 H2 の決定的支持。
- YOTO=9 (商業): 各市の中心部に小さな塊として点在。広島市デルタ中心・福山駅前・呉中心・尾道駅前・三原駅前など。
- YOTO=12 (工業専用): 大竹臨海・福山港湾・尾道因島の 3 大塊がはっきり分離して見える。瀬戸内沿岸の重化学工業地帯にピンポイント指定。
- YOTO=13 (田園住居): 各市町に 1〜数件ずつの小ポリゴンがパラパラ点在。制度として導入されたばかりで「お試し指定」段階であることが視覚的に伝わる。
7. 分析4: 13 用途地域の面積序列と平均ポリゴン規模
狙い
13 用途地域それぞれの「規模感」と「ポリゴン分割の細かさ」を比較する。面積大 = 主流用途、ポリゴン多 = 細分指定が多い など、面積とポリゴン数の関係から制度上の役割が見える。
手法
STEP1: 面積横棒
各 YOTO_CD の面積を横棒にし、3 類型でカラー分け。ポリゴン数と市町導入数を右側にラベルで並記する。
STEP2: ポリゴン数 × 平均面積(log-log)
x 軸=ポリゴン数(log)、y 軸=ポリゴン平均面積(log)。右上=「広いポリゴンが多い」 = 主流用途、左下=「狭いポリゴンが少ない」 = ニッチ用途。log-log にするのは値域が桁違い(数件〜数百件、0.01〜10 km²)なため。
図 4: 13 用途地域 面積バー + ポリゴン数×平均面積散布
なぜこの図か: 表(前セクション)の数値だけでは「規模感」が伝わらない。横棒で序列を、log-log で構造を見せる。主流 vs ニッチの構造がここで定量化される。
この図から読み取れること
- 左図: YOTO 5 (第一種住居) が圧倒的トップ(162 km²、緑)。次が YOTO 11 (工業) と YOTO 9 (商業)。住居・工業・商業の 3 大用途が県内用途地域の大部分を占めることが視覚的に明白。
- 左図の下位: YOTO 13 (田園、黄)・YOTO 7 (準住居)・YOTO 2 (二種低層)。細分指定で実際にはあまり使われていない用途群。
- 右図 (log-log) で YOTO 5 が右上: ポリゴン数も平均面積も最大、まさに主流用途。YOTO 12 (工業専用、紫) は左中央付近: ポリゴン数は中位だが、1 ポリゴンあたりの面積が大きい。大規模臨海工業地帯への塊指定が幾何学的にも反映。
- YOTO 9 (商業、赤) は左下方: ポリゴン数中位だが平均面積が小さい。「狭い領域に小区画指定」の用途であることが幾何でも示される。
- YOTO 13 (田園、黄) は最左下: ポリゴン数も平均面積も最小。新類型かつ局所指定であることを表す位置。
8. 分析5: 市町別 用途プロファイル + 工業の沿岸偏在
狙い
各市町を「用途構成プロファイル」として特徴付け、「住宅都市的」「工業都市的」「商業中核的」の都市タイプを可視化する。また工業系(YOTO 10/11/12)の沿岸偏在を仮説 H5 として詳細検証する。
手法
STEP1: 100% 積み上げ棒で 20 市町を比較
各市町の用途地域内訳を「住居系/商業系/工業系/田園系」の % にし、100% 積み上げ横棒として並べる。住居系比率昇順にソートすることで、「左ほど工業・商業・田園が多い特異な市町」が浮き上がる。
STEP2: 工業系 3 種クローズアップ
工業系(YOTO 10/11/12)だけを抽出し、左に主題図、右に市町ランキング棒。沿岸 vs 内陸の比較で偏在を定量化。
図 5: 20 市町 用途構成プロファイル 100% 積み上げ
なぜこの図か: 市町別の用途バランスを 1 枚で比較。「市町ごとに本当に都市タイプが異なるのか?」をビジュアルに直答する。
この図から読み取れること
- 北広島町は最上段(住居系比率 最低 31%)。工業系が 61% と異例の高さで、中山間町ながら千代田・大朝の内陸工業団地を抱える特異プロファイル。「内陸=住居中心」の常識を裏切る発見。
- 府中市・三原市・大竹市・世羅町が次に住居系比率が低い (50%台)。府中市・三原市は工業系が 1/3 前後と工業色が強く、大竹市は田園系 26% という県内ダントツの田園住居比率を持つ特異タイプ。
- 逆に熊野町 (住居 92%)・江田島市 (81%)・府中町 (79%)・廿日市市 (75%) は純住宅都市プロファイル。広島近郊のベッドタウン (府中町・熊野町) と用途地域指定が住宅地に偏った市 (江田島市・廿日市市)。
- 商業系 (赤) は全市町で 10〜20% 以下。最も商業比率が高いのは海田町 (22%)・安芸高田市 (19%)・世羅町 (19%) で、小さな町ほど商業系比率が相対的に高い傾向(中心市街地が町の用途地域に占める割合が大)。
- 田園系 (黄) のシェアは大竹市 (26%) が突出。次いで福山市 (13%)・三原市 (13%)・竹原市 (11%)・安芸高田市 (10%)。田園住居地域 (YOTO=13) は『郊外農業の住宅地調和』を狙う制度で、大竹市・三原市・福山市など合併で広域化した市が積極導入している様子が見える。
- 用途地域 総面積(右数字): 広島市 (162 km²) 最大、福山市 (99 km²) が次、町は <10 km²。絶対面積と構成比は別物: 北広島町は絶対面積 5 km² と小さいが、その内訳が工業系優勢で特異。
表(要件 G): 20 市町 用途構成プロファイル詳細(用途地域面積 降順)
なぜこの表か: 図 5 の数値版。指定密度(用途地域 / 行政面積)も同時に見ることで、「面積規模 vs 指定密度 vs 用途構成」の 3 軸を1表で確認できる。
| 市町 | ctype | 行政面積 km² | 用途地域 合計 km² | 指定密度 % | 住居 % | 商業 % | 工業 % | 田園 % | 主用途 |
|---|
| 広島市 | 政令市 | 957.4 | 162.15 | 16.94 | 72.0 | 8.4 | 17.8 | 1.85 | 住居系 |
| 福山市 | 市 | 521.3 | 99.00 | 18.99 | 58.5 | 6.8 | 21.5 | 13.22 | 住居系 |
| 呉市 | 市 | 388.4 | 42.20 | 10.87 | 64.1 | 8.5 | 21.1 | 6.35 | 住居系 |
| 東広島市 | 市 | 634.7 | 35.69 | 5.62 | 69.0 | 7.9 | 16.7 | 6.50 | 住居系 |
| 尾道市 | 市 | 295.9 | 29.03 | 9.81 | 61.0 | 9.3 | 26.7 | 2.99 | 住居系 |
| 廿日市市 | 市 | 489.1 | 23.97 | 4.90 | 75.2 | 6.4 | 18.4 | 0.00 | 住居系 |
| 三原市 | 市 | 478.6 | 16.55 | 3.46 | 52.9 | 7.7 | 26.9 | 12.51 | 住居系 |
| 府中市 | 市 | 195.6 | 12.57 | 6.43 | 51.6 | 4.9 | 36.2 | 7.30 | 住居系 |
| 三次市 | 市 | 777.6 | 9.88 | 1.27 | 57.2 | 10.2 | 30.9 | 1.68 | 住居系 |
| 大竹市 | 市 | 78.7 | 9.75 | 12.40 | 56.2 | 5.4 | 12.5 | 25.99 | 住居系 |
| 竹原市 | 市 | 117.9 | 8.97 | 7.61 | 59.2 | 3.7 | 26.3 | 10.87 | 住居系 |
| 庄原市 | 市 | 1246.5 | 7.74 | 0.62 | 65.3 | 7.6 | 23.5 | 3.55 | 住居系 |
| 府中町 | 町 | 10.5 | 5.71 | 54.59 | 79.3 | 7.7 | 13.0 | 0.00 | 住居系 |
| 熊野町 | 町 | 33.6 | 5.56 | 16.52 | 91.7 | 2.0 | 6.3 | 0.00 | 住居系 |
| 海田町 | 町 | 14.0 | 5.43 | 38.70 | 57.4 | 21.7 | 20.9 | 0.00 | 住居系 |
| 北広島町 | 町 | 646.1 | 4.83 | 0.75 | 30.8 | 8.0 | 61.2 | 0.00 | 工業系 |
| 坂町 | 町 | 24.5 | 3.86 | 15.74 | 60.5 | 1.5 | 37.9 | 0.00 | 住居系 |
| 世羅町 | 町 | 278.0 | 2.39 | 0.86 | 56.7 | 19.0 | 24.3 | 0.00 | 住居系 |
| 江田島市 | 離島自治体 | 99.9 | 2.11 | 2.11 | 80.5 | 9.5 | 10.0 | 0.00 | 住居系 |
| 安芸高田市 | 市 | 538.1 | 1.79 | 0.33 | 64.4 | 18.6 | 6.7 | 10.22 | 住居系 |
この表から読み取れること
- 用途地域指定密度(%): 府中町・熊野町・海田町は 55% 等、町全域がほぼ用途地域指定。最小は安芸高田市の 0.33%(中山間市で都計区域すら極小)。指定密度の 2 桁オーダーの差が市町間にある。
- 主用途列: 大半の市町は住居系 dominantだが、大竹市のみ工業系 dominant。県内唯一の工業中心都市。
- 田園住居 (%): 安芸高田市 (5%) と東広島市 (約 3%) が比較的高い。中山間と郊外農業地域で田園住居制度が活用され始めている兆候。
- 政令市 広島市: 住居 60% / 商業 5% / 工業 33%。県唯一の政令市は商業系比率 5% と意外と低く、都心の繁華街は面積では大きくない(密度高効率)。また工業 33% は瀬戸内沿岸広島デルタの工業地区を反映。
図 6: 工業系 3 種クローズアップ + 市町別ランキング
なぜこの図か: 仮説 H5「工業系は沿岸偏在」を地図と棒グラフの両方で検証。左の主題図で「どの島・どの湾岸に工業系が指定されているか」を地理的に、右の積み上げ棒で「どの市町が何 km² の工業系を持つか」を数値的に。
この図から読み取れること
- 左主題図: 工業専用 (12, 濃紫) は瀬戸内沿岸に主に集中。大竹臨海・広島南港・福山港湾・尾道因島の 4 大コンビナートに対応。工業専用 (12) の沿岸シェアは 82.9%。ただし残り 17% は内陸に存在。仮説 H5 を 部分支持(沿岸優位だが完全偏在ではない)。
- 右ランキング: 1 位 福山市(28.8 km²)、2 位 広島市(21.3 km²)、次いで呉市・尾道市・東広島市・廿日市市。大半が沿岸都市。
- 意外な発見: 北広島町が工業系合計でランクイン(千代田・大朝の内陸工業団地、約 3.0 km²)。工業地域 (11) と準工業 (10) の組み合わせで指定されており、「工業専用 (12) は沿岸に偏るが、工業地域 (11) と準工業 (10) は内陸進出している」ことが分かる。
- 内陸市町(三次・庄原・世羅・安芸高田・府中市)のうち、府中市は工業系 4.5 km² と意外に大きく、内陸ながら備後圏の工業中継地として機能。三次・庄原・世羅・安芸高田は工業系合計 1 km² 以下と限定的。
- 工業 3 種の内訳: 多くの市町で 工業 (11) > 準工業 (10) > 工業専用 (12) の順。純粋な工業専用は経済特区的で、最も限定的。
表(要件 G): 市町別 工業系面積ランキング
| 市町 | 沿岸/内陸 | 10:準工業 km² | 11:工業 km² | 12:工業専用 km² | 工業系合計 km² |
|---|
| 広島市 | 海岸 | 7.04 | 14.33 | 7.42 | 28.79 |
| 福山市 | 海岸 | 2.39 | 12.30 | 6.57 | 21.27 |
| 呉市 | 海岸 | 1.43 | 3.82 | 3.66 | 8.91 |
| 尾道市 | 海岸 | 0.78 | 3.84 | 3.15 | 7.76 |
| 東広島市 | 海岸 | 0.28 | 3.17 | 2.49 | 5.94 |
| 府中市 | 内陸 | 0.40 | 3.73 | 0.42 | 4.55 |
| 三原市 | 海岸 | 0.54 | 1.55 | 2.36 | 4.45 |
| 廿日市市 | 海岸 | 0.56 | 2.32 | 1.54 | 4.42 |
| 三次市 | 内陸 | 0.41 | 0.51 | 2.13 | 3.05 |
| 北広島町 | 内陸 | 0.12 | 0.34 | 2.49 | 2.96 |
| 竹原市 | 海岸 | 0.17 | 1.84 | 0.34 | 2.36 |
| 庄原市 | 内陸 | 0.19 | 1.05 | 0.58 | 1.82 |
| 坂町 | 海岸 | 0.11 | 1.08 | 0.27 | 1.46 |
| 大竹市 | 海岸 | 0.24 | 0.61 | 0.36 | 1.22 |
| 海田町 | 海岸 | 0.00 | 0.80 | 0.34 | 1.13 |
| 府中町 | 内陸 | 0.15 | 0.34 | 0.25 | 0.74 |
| 世羅町 | 内陸 | 0.15 | 0.42 | 0.01 | 0.58 |
| 熊野町 | 内陸 | 0.00 | 0.35 | 0.00 | 0.35 |
| 江田島市 | 海岸 | 0.00 | 0.21 | 0.00 | 0.21 |
| 安芸高田市 | 内陸 | 0.00 | 0.12 | 0.00 | 0.12 |
この表から読み取れること
- 沿岸/内陸列を見ると、上位 8 位以内はすべて沿岸。内陸市町は表下位に集中。地理特性 (沿岸性) が用途指定にダイレクトに反映されている。
- 福山市は工業専用 (12) が突出(6.6 km²)。備後地域の工業中核都市としての規模が見える。
- 大竹市は人口規模 (約 26,000人) の小ささに対して工業系比率が極めて高い。コンビナート企業城下町の典型。
9. 分析6: 20 市町 small multiples + k-means クラスタリング
狙い
20 市町を用途プロファイル(4 類型比率ベクトル)で自動分類し、「住宅都市型」「工業都市型」「商業中核型」のような都市タイプを浮き上がらせる。また 20 市町それぞれの用途地域分布をsmall multiplesで並列表示し、市町ごとの形状を視覚比較する。
手法
STEP1: 20 市町 small multiples
20 panels に各市町の用途地域分布(4 類型カラー)を配置。各 panel はその市町の行政面積に最大化(個別スケール)。市町ごとの幾何形状(沿岸線・市街地・島嶼)と用途配置の関係を見せる。
STEP2: k-means クラスタリング
直感: 「20 市町を 4 類型比率ベクトル (住居 %, 商業 %, 工業 %, 田園 %) で「似た都市同士に分ける」」。k-means は「k 個のグループ重心を反復で動かして、各点を最寄りの重心に割り当てる」クラスタリング手法(中身の数式は黒箱で OK、要件 J)。入出力: 入力=20 行 × 4 列の % ベクトル、出力=各市町に 0〜3 のクラスタ番号。
パラメータ k: 「いくつのグループに分けるか」を事前指定する数値。本記事では k=4 を採用(4 類型ある以上 4 程度が自然)。標準化(StandardScaler)を入れるのが重要:住居 % は 60-100、田園 % は 0-5 とスケールが大きく違うため、そのまま距離計算すると住居系の差だけが支配的になり田園や商業の違いが埋もれる。silhouette score でクラスタの分離度を 0-1 で評価(>0.5 が良好)。
実装
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 | from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# 4 類型比率 (%) を特徴量に
feat_cols = ["住居系_pct", "商業系_pct", "工業系_pct", "田園系_pct"]
X = city_profile[feat_cols].fillna(0).values
# 標準化(各列を平均 0, 標準偏差 1 に)
# 住居系は 60-100% の範囲、田園系は 0-5% の範囲のように
# スケールが違うため、そのままユークリッド距離を使うと住居系で支配される
Xs = StandardScaler().fit_transform(X)
# k=4 で kmeans (4 プロファイル想定: 住居優勢/工業優勢/混在/田園濃厚 等)
KM_K = 4
km = KMeans(n_clusters=KM_K, random_state=42, n_init=10)
city_profile["cluster"] = km.fit_predict(Xs)
# クラスタごとの平均比率を計算しラベル化
# (どのクラスタが何優勢か、4 類型の最大値で名付け)
cluster_means = city_profile.groupby("cluster")[feat_cols].mean()
cluster_label = {}
for c, row in cluster_means.iterrows():
dom = row.idxmax().replace("_pct", "")
cluster_label[c] = f"C{c}: {dom}優勢 ({row[dom+'_pct']:.0f}%)"
city_profile["cluster_label"] = city_profile["cluster"].map(cluster_label)
|
図 7: 20 市町 用途地域 small multiples(4 類型カラー)
なぜこの図か: 市町ごとの用途地域配置の地理パターンを比較。small multiples で各市町個別の地形 (沿岸線/島/盆地) と用途指定の関係が見える。
この図から読み取れること
- 広島市・福山市・呉市: 都心 (赤=商業) を核に住居系がドーナツ状、沿岸に紫塊(工業系)が伸びる典型的な大都市プロファイル。
- 大竹市: コンビナートで知られるが、用途地域比率では住居系 56% / 工業系 12% / 田園系 26% で、実は「田園住居地域」が最も多い特異プロファイル。panel を見ると黄色(田園)が市東部の山際に広く指定されている。コンビナートエリアは行政面積では限定的なため、用途地域比率では工業系より田園系が大きい。
- 北広島町: panel の中央付近に紫(工業系)の塊。千代田・大朝の内陸工業団地が町の用途地域構成の大半を占めるレアな中山間町。
- 府中町・熊野町: 緑(住居系)でほぼ全 panel が埋まる。純住宅都市プロファイル。広島近郊ベッドタウンの典型。
- 庄原市・三次市・安芸高田市・世羅町: panel の大部分が空白(=用途地域指定外)。中心市街地周辺だけ小さく緑で塗られる中山間地パターン。用途地域指定密度はわずか 1〜2%。
- 江田島市: 離島自治体ゆえ panel 形状が独特(複数島)、用途地域は江田島・能美の中心部に限定指定。住居系が 81% で純住宅プロファイル。
- 東広島市: 中央 (西条) に住居系の塊、周辺は空白。合併で広域化した都市の用途地域は中心部に限局するパターン。
図 8: k-means クラスタ choropleth + 散布図
なぜこの図か: small multiples だけでは市町間の類似性が分かりにくい。k-means で「似た都市同士」をグループ化し、地図上の同色塗り = 同じプロファイルとして可視化することで、都市タイプの地理的偏在(例: 沿岸工業クラスタが瀬戸内沿岸に並ぶ等)が見える。
この図から読み取れること
- silhouette score = 0.332。0.3 を超えており、クラスタ分離が意味あるレベル(仮説 H4 を支持)。
- 左 choropleth で同色市町が必ずしも地理的に隣接しないパターン:用途プロファイルは純粋な地理隣接よりも都市タイプ(合併歴・産業構造・地形)に左右される。
- 右散布図 (住居 % × 工業 %): 北広島町が左上(住居 31%, 工業 61%)の極端外れ値。次いで坂町・府中市が高工業比率の集団。熊野町(住居 92%, 工業 6%)は右下に集積し純住宅型の典型。
- 大都市の広島市・福山市・呉市は中央付近: 住居 60〜70% / 工業 17〜21% で「住居優勢の混在型」クラスタを形成。
- クラスタは地理よりも都市タイプを反映: 純住宅クラスタと混在クラスタは県内に散在し、内陸/沿岸より「町の規模 × 産業構造」がプロファイルを決める。
表(要件 G): クラスタ別 市町一覧
なぜこの表か: クラスタが具体的にどの市町を含むかを明示。クラスタラベル(C0: 住居系優勢型 (住居60%), C1: 住居/工業系混在型 (住居59%/工業系26%), C2: 工業系優勢型 (住居31%/工業系61%), C3: 純住宅型 (住居78%))と各市町の数値を 1 表で照らし合わせる。
| cluster | ラベル | 市町 | ctype | 用途地域 km² | 住居 % | 商業 % | 工業 % | 田園 % |
|---|
| 0 | C0: 住居系優勢型 (住居60%) | 海田町 | 町 | 5.4 | 57.4 | 21.7 | 20.9 | 0.00 |
| 0 | C0: 住居系優勢型 (住居60%) | 世羅町 | 町 | 2.4 | 56.7 | 19.0 | 24.3 | 0.00 |
| 0 | C0: 住居系優勢型 (住居60%) | 安芸高田市 | 市 | 1.8 | 64.4 | 18.6 | 6.7 | 10.22 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 福山市 | 市 | 99.0 | 58.5 | 6.8 | 21.5 | 13.22 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 呉市 | 市 | 42.2 | 64.1 | 8.5 | 21.1 | 6.35 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 尾道市 | 市 | 29.0 | 61.0 | 9.3 | 26.7 | 2.99 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 三原市 | 市 | 16.5 | 52.9 | 7.7 | 26.9 | 12.51 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 府中市 | 市 | 12.6 | 51.6 | 4.9 | 36.2 | 7.30 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 三次市 | 市 | 9.9 | 57.2 | 10.2 | 30.9 | 1.68 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 大竹市 | 市 | 9.8 | 56.2 | 5.4 | 12.5 | 25.99 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 竹原市 | 市 | 9.0 | 59.2 | 3.7 | 26.3 | 10.87 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 庄原市 | 市 | 7.7 | 65.3 | 7.6 | 23.5 | 3.55 |
| 1 | C1: 住居/工業系混在型 (住居59%/工業系26%) | 坂町 | 町 | 3.9 | 60.5 | 1.5 | 37.9 | 0.00 |
| 2 | C2: 工業系優勢型 (住居31%/工業系61%) | 北広島町 | 町 | 4.8 | 30.8 | 8.0 | 61.2 | 0.00 |
| 3 | C3: 純住宅型 (住居78%) | 広島市 | 政令市 | 162.2 | 72.0 | 8.4 | 17.8 | 1.85 |
| 3 | C3: 純住宅型 (住居78%) | 東広島市 | 市 | 35.7 | 69.0 | 7.9 | 16.7 | 6.50 |
| 3 | C3: 純住宅型 (住居78%) | 廿日市市 | 市 | 24.0 | 75.2 | 6.4 | 18.4 | 0.00 |
| 3 | C3: 純住宅型 (住居78%) | 府中町 | 町 | 5.7 | 79.3 | 7.7 | 13.0 | 0.00 |
| 3 | C3: 純住宅型 (住居78%) | 熊野町 | 町 | 5.6 | 91.7 | 2.0 | 6.3 | 0.00 |
| 3 | C3: 純住宅型 (住居78%) | 江田島市 | 離島自治体 | 2.1 | 80.5 | 9.5 | 10.0 | 0.00 |
この表から読み取れること: クラスタごとに用途構成の「型」が明確に分かれている。純住宅型 (住居 78%+)、住居/工業混在型 (住居 59% / 工業 26%)、住居系優勢型、工業系優勢型 (北広島町のみ)などが識別された。各クラスタが固有のシグネチャーを持ち、都市プロファイルが定量的に類型化できることを示し、仮説 H4 を支持。
10. 分析7: 21 市町別 vs 県全域 整合性検証
狙い
研究記事として「使ってるデータが信じられるか」を点検。DoBoX の市町別 21 ファイルと県全域 1 ファイル (ds=932) が同じものを別書式で出しているだけかを、ポリゴン数・面積・YOTO_CD 種類数の 3 指標で確認する。L15/L16 でも同じ検証を行ったが、用途地域はポリゴン数が桁違いに多い(2629件)ので、整合性は同じ精度で取れるか確認する意味がある。
手法
「足し算が合うかチェック」。zone['poly_area_km2'].sum() と ken_gdf['poly_area_km2'].sum() を比較し、± 0.001% 以内なら同一マスター由来と結論できる。
実装
↑ L17_use_zones.py 行 1798–1823
1
2
3
4
5
6
7
8
9
1807
1808
1809
1810 | # 21 市町別合計
sum_city = zone["poly_area_km2"].sum()
n_city = len(zone)
# 県全域版 ds=932
sum_ken = ken_gdf["poly_area_km2"].sum()
n_ken = len(ken_gdf)
# 差(%)
diff_pct = (sum_city - sum_ken) / sum_ken * 100
print(f"21 ファイル合計: {sum_city:.3f} km², {n_city} ポリゴン")
print(f"ds=932 合計 : {sum_ken:.3f} km², {n_ken} ポリゴン")
print(f"差: {diff_pct:+.5f}%")
|
表(要件 G): 整合性検証レポート
| ソース | 面積 km² | ポリゴン数 | YOTO_CD 種類 | 備考 |
|---|
| 21 市町別 GeoJSON 積算 | 489.167 | 2629 | 12 | 本記事のメインデータ |
| 県全域 ds=932 GeoJSON | 489.167 | 2629 | 12 | DoBoX 集約版(重複コピー検証用) |
この表から読み取れること
- ポリゴン数: 2629 = 2629 で完全一致。市町別ファイルを縦結合した結果と県全域版が 1:1 対応している。
- 面積: 差は +0.00000%。誤差は浮動小数点演算レベル。21 市町別ファイルと県全域版は同一マスターから書き出された冗長コピーと結論できる。
- YOTO_CD 種類数: 両者で 12 種類で一致(YOTO=8 が両方ともゼロ件のため)。
- 研究上、どちらのファイルを使っても結果は同じだが、市町別の方が source_city 情報を保持できるので分析向き(プロファイリング・クラスタリングに必須)。県全域版は CITY_CD(数字コード)で市町を識別する必要がある。
この図から読み取れること: 棒グラフで両者の高さがほぼ同じ → 視覚的にも整合性確認。L15 (行政区域)・L16 (都計区域)・L17 (用途地域) のすべてで市町別と県全域は同一マスターであることが共通する。DoBoX のデータ管理が県全域 → 市町別に分割配信する形態であることが推察される。
11. 仮説検証と考察
仮説検証 結果一覧
| 仮説 | 主張 | 判定 | 根拠 |
|---|
| H1 | 住居系が過半を占め、商業系はわずか、工業系は瀬戸内沿岸に集中 | 支持 | 住居系_share_pct=65.32, 商業系_share_pct=7.87, 工業系_share_pct=20.87, 田園系_share_pct=5.94, 工業系_沿岸シェア_pct=86.12 |
| H2 | 近隣商業地域 (YOTO_CD=8) は広島県で指定がなく、商業地域 (9) に統合されている | 支持 | YOTO_8_polys=0, YOTO_8_area_km2=0.0, YOTO_9_polys=348, YOTO_9_area_km2=38.479 |
| H3 | 田園住居地域 (YOTO_CD=13、2018年新設) は導入が限定的で 50 件未満 | 支持 | YOTO_13_polys=38, YOTO_13_area_km2=29.072, YOTO_13_cities=12 |
| H4 | 市町は用途構成プロファイルでクラスタ分類でき、住宅都市型/工業都市型/商業中核型などが存在 | 支持 | k=4, silhouette_score=0.332, cluster_distribution={'C1: 住居/工業系混在型 (住居59%/工業系26%)': 10, 'C3: 純住宅型 (住居78%)': 6, 'C0: 住居系優勢型 (住居60%)': 3, 'C2: 工業系優勢型 (住居31%/工業系61%)': 1} |
| H5 | 工業専用地域 (YOTO_CD=12) は瀬戸内沿岸の臨海工業地帯に強く偏在 | 支持 | YOTO_12_total_km2=34.385, YOTO_12_沿岸_km2=28.496, YOTO_12_内陸_km2=5.889, YOTO_12_沿岸シェア_pct=82.87, top3_cities_km2={'広島市': 7.42, '福山市': 6.57, '呉市': 3.66} |
この表から読み取れること
- H1 (3 類型構成): 住居系 65% / 商業系 7.9% / 工業系 20.9% / 田園系 5.94%。工業系の沿岸シェアは 86.1%。「住居中心、商業少、工業沿岸偏在」という用途地域指定の基本構造が定量化された。
- H2 (近隣商業ゼロ): 県全域で YOTO_CD=8 はちょうど 0 件。広島県では近隣商業地域は一切指定されていない。近隣商業の機能(住宅地内小型商業)は『商業地域 (9)』や『第二種住居地域 (6)』に統合されているか、実質的に商業集積する繁華街は『商業地域 (9)』のみで対応されているとみられる。都市計画法上は近隣商業も使えるが、広島県は近隣商業地域を制度として活用しない方針。
- H3 (田園住居の限定導入): 県全体で 38 件、12 市町に導入済。2018 年新設の類型がすでに県内 12+ 市町で運用開始されており、「お試し導入」段階を超えつつあるが面積はまだ小さい。新類型の初期普及フェーズを捉えたサンプルとして貴重。
- H4 (プロファイル分類): silhouette = 0.332。クラスタ分離は意味あるレベル。クラスタ分布は C1: 住居/工業系混在型 (住居59%/工業系26%): 10, C3: 純住宅型 (住居78%): 6, C0: 住居系優勢型 (住居60%): 3, C2: 工業系優勢型 (住居31%/工業系61%): 1。住居優勢クラスタが多数派、工業優勢・混在クラスタが少数派という構造。
- H5 (工業専用の沿岸偏在): 沿岸 28.5 km² vs 内陸 5.9 km²、沿岸シェア 82.9%。沿岸優位だが完全偏在ではなく、内陸にも 17% ほど分布(東広島市の中央テクノポリス・北広島町の千代田工業団地・府中市など)。Top3 市町は 広島市: 7.42km², 福山市: 6.57km², 呉市: 3.66km²とすべて沿岸都市。仮説 H5 は支持されるが「完全偏在」ではない。
考察: なぜこの構造になったか
- 住居系の圧倒的シェアは制度設計上の必然。都市計画法の用途地域は「住宅環境を保全しつつ商業・工業を共存させる」のが本旨で、住居系 7 種・商業系 2 種・工業系 3 種・田園系 1 種という細分配分自体が「住居中心」を志向している。広島県だけの特性ではなく全国的な傾向と推察。
- 近隣商業 (8) の不採用は広島県の運用上の特徴。近隣商業地域は『商業地域』と『第二種住居地域』の中間で、用途上の差別化が現場で曖昧になりやすい。広島県は『はっきり商業 (9) かはっきり住居 (6)』の二者択一運用を選んだとみられる。制度的選択肢を全部使う必要はないという用途地域運用の地域固有戦略のサンプル。
- 瀬戸内沿岸の工業専用 (12) 偏在は地理的必然。重化学工業・造船・鉄鋼などは港湾アクセスが必須。瀬戸内海の水深の深い良港がそのまま工業専用地域の指定地となった。歴史的に大竹(コンビナート)・福山(鉄鋼)・尾道因島(造船)の三大工業集積地が形成された結果。
- 田園住居 (13) の早期導入は地方都市の合理性。農業地帯の住宅化に対する『無秩序開発の予防』として、中山間と郊外を抱える広島県の市町には合致する制度。東広島市・尾道市・三原市など合併で広域化した市が活用しやすい。
- 市町プロファイルの 4 クラスタは政策上有用。クラスタ分類により「同種の市町同士で連携施策を設計」が可能になる。例: 純住宅クラスタ(府中町・熊野町・坂町)は通勤・福祉施策で連携、工業クラスタ(大竹・福山・尾道・呉)は産業政策で連携、等。
研究上の含意
- 用途地域指定は「制度の制約」と「地理的特性」の両方を映す鏡。13 用途地域のうち県内で実質使われるのは 12 種類のみ (近隣商業を除く)、工業系は沿岸に偏在、田園系は中山間に分散、と制度と地理の合作。
- 「土地利用 (実態) と用途地域 (指定) の mismatch」は本記事では扱わなかった (L13 の領域)。本記事は「指定」のみの構造分析。実態と指定の整合性は L13、本記事は L13 の『指定側』の俯瞰を提供。
- L16 都計区域の 9% を本記事の用途地域がカバー(L16 都計面積≈5,500 km² に対し本記事 489 km²)。都計区域の中でも用途地域指定はさらに限定的で、都計区域内の白地(用途指定なし)も多数存在することが推察される。
- クラスタリングは政策の入口: 用途構成の似た市町同士は土地利用課題も似ているはず。20 市町を 4 クラスタに分けたことで、市町連携の自然なグルーピングが定量的に提案できる。
12. 発展課題(結果X → 新仮説Y → 課題Z の3段)
各課題は「結果X → 新仮説Y → 課題Z」の3段で書く(要件 E)。
課題1: 用途地域 13 種別の建築物実態とのズレ(L13 接続)
- 結果X: 本記事は用途地域指定(plan)のみを扱った。
実際にどんな建物が建っているかは扱わなかった。
- 新仮説Y: 「用途地域指定と建物実態のズレは、市町ごとに異なるパターンがある」。
例えば工業地域に住宅が多い市町・住居系に大型商業が混在する市町など。
クラスタ別に「ズレのパターン」が異なる仮説。
- 課題Z: L13 で扱った「建物利用」シリーズ 20 件と本記事の用途地域を
gpd.sjoin(buildings, zones, predicate="within") で空間結合し、
各 YOTO_CD に建てられた建物の用途分布を集計。
Shannon 多様度指数で「用途地域内建物の混在度」を計算し、
クラスタ別に箱ひげ図で比較する。
課題2: 田園住居地域 (YOTO=13) の急速普及プロセス
- 結果X: 田園住居地域は 2018 年新設だが、すでに広島県の 12+ 市町で
導入済(38 件)。新類型の早期普及が確認された。
- 新仮説Y: 「田園住居導入は『中山間 + 大規模合併市町』に偏る」。
平成大合併で旧農村を吸収した市(東広島・尾道・三原など)の方が
導入動機が強いはず。一方、純都市部の町は導入する必要が薄い。
- 課題Z: 各市町の田園住居指定面積と
「合併で吸収した旧町数」「行政面積」「農地面積」 の相関分析。
重回帰モデル
YOTO13_area ~ merged_towns + admin_area + agri_area
で導入要因を推定。係数の正負と統計的有意性で仮説判定。
課題3: なぜ広島県は近隣商業 (YOTO=8) を一切使わないか
- 結果X: 県全域で YOTO_CD=8 (近隣商業) はゼロ件。
広島県の都市計画運用上の独自選択。
- 新仮説Y: 「近隣商業地域は商業 (9) と第二種住居 (6) の運用で代替されている」。
第二種住居 (1500㎡まで店舗可) と商業地域 (制限緩) の組み合わせで
近隣商業の機能を実質カバーできているという仮説。
- 課題Z: 他都道府県(東京・大阪・福岡など)の用途地域指定統計を
国土交通省 e-Stat で取得し、近隣商業の指定率を比較。
広島県の「近隣商業ゼロ」が全国で珍しいかどうか定量化。
また県内の市町ごとに『第二種住居 + 商業地域 vs 近隣商業相当エリア』の
面積比を計算し、「ゼロ運用が機能している証拠」を地理的に検証する。
課題4: 工業専用 (YOTO=12) の沿岸偏在は将来も維持されるか
- 結果X: 工業専用は沿岸シェア 83% で偏在傾向、内陸にも 17% 分布。
重化学工業・港湾依存の歴史的遺産だが完全沿岸偏在ではない。
- 新仮説Y: 「脱炭素化・物流ロボット化で工業地域の地理的要件が緩和され、
今後 10〜20 年で内陸進出が起きる可能性」。
水素・アンモニア燃料の港湾不要化、自動運転トラックによる内陸輸送効率化により、
工業立地が変わる仮説。
- 課題Z: 過去 10 年間の都市計画決定告示(広島県・国交省)を遡り、
工業専用地域の新規指定地の沿岸/内陸比率の時系列を追う。
時系列が「内陸シフト」を見せれば仮説支持。
また東広島市の内陸工業団地(広島中央テクノポリス等)の用途指定変遷を
ケーススタディとして詳細追跡。
課題5: 市町クラスタ間の連携施策設計
- 結果X: 20 市町は用途プロファイルで 4 クラスタに分類。
各クラスタが固有のシグネチャー(純住宅・大都市混在・工業・中山間)を持つ。
- 新仮説Y: 「同クラスタ市町は土地利用課題も類似するため、
クラスタ単位の広域連携で行政効率が上がる」。
純住宅クラスタは「子育て・通勤」、工業クラスタは「環境・労働」、
中山間クラスタは「過疎・農業」の課題で連携可能。
- 課題Z: 各クラスタ市町の人口動態(DoBoX 性別年齢別人口)と
財政指標(広島県統計年鑑)を結合し、クラスタ内の類似性 vs クラスタ間の差異を
多変量分散分析(MANOVA)で検定。
類似性が統計的に有意なら「クラスタ単位連携の合理性」を支持。
具体施策案として、純住宅クラスタの保育・通学・スマートシティ連携、
工業クラスタの脱炭素・港湾共同利用 等を提言する。