⚠️ このスクリプトは自動取得に対応していません。以下のデータセットを DoBoX から手動でダウンロードし、data/extras/ 以下に保存してください。
| ID | データセット名 |
|---|---|
| #71 | 都市計画区域情報_建物利用現況_海田町 |
| #222 | dataset #222 |
| #512 | 都市計画区域情報_建物利用現況_府中市 |
| #999 | dataset #999 |
| #1187 | 3D都市モデル_呉市 |
| #1188 | 3D都市モデル_福山市 |
| #1189 | 3D都市モデル_海田町 |
| #1278 | 過去に発生した災害情報 |
| #1294 | 各種法令の規制情報_広島県普通河川等保全条例 |
| #1302 | 3D都市モデル_府中市 |
| #1316 | 3D都市モデル_広島市 |
| #1323 | 都市計画区域情報_建物利用現況_呉市 |
| #1327 | 都市計画区域情報_建物利用現況_三次市 |
| #1334 | 都市計画区域情報_新築動向_熊野町_2016-2020 |
| #1443 | 3D都市モデル_竹原市 |
| #1444 | 3D都市モデル_三次市 |
| #1469 | 都市計画区域情報_建物利用現況_広島市 |
| #1474 | 都市計画区域情報_建物利用現況_竹原市 |
| #1483 | 都市計画区域情報_建物利用現況_福山市 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L14_3d_city_model_compare.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
本記事は 3D都市モデル 7 市町 = 7 dataset_id を統合分析:
全 PLATEAU CityGML 規格で統一されており、統合可能。
ただし CityGML 本体は重量級なため、同 7 市町の建物利用現況 GeoJSON
(#1469 / #1483 / #1323 / #1327 / #512 / #71 / #1474) を Plan B として採用。
これらは PLATEAU の建物 footprint + 属性 (階数・軒高) と内容が一致する軽量版で、
本研究の論点 (建物高度の地理学) には十分。
対応表 7/7 件 論理カバー。
KAISUU) と軒高 (TATE_H) と用途 (TATE_YO) を含むKAISUU を 5 区分にビン化:
平屋 (1) / 2 階 / 低中層 (3-4 階) / 中層 (5-9 階) / 高層 (10 階以上)shapely の標準関数。
建物 footprint を 1 点に縮約することで sjoin (空間結合) を高速化する| 指標 | 結果 |
|---|---|
| 対象市町 | 7 市町 (人口 23,000 〜 1,189,000) |
| 統合 建物数 | 787,389 棟 |
| 最大 階数 | 52 階 (広島市) |
| 最大 軒高 | 178 m (広島市) |
| 5 階以上 建物 (高層) | 13,885 棟 |
| 10 階以上 建物 (タワー) | 2,905 棟 |
| 致命的建物 (浸水3m+ × 平屋) | 35,816 棟 |
| 処理時間 | 28.8 秒 (7/7 市町 cached) |
| 市町 | 3D都市モデル | 建物利用現況 | 取得状況 | 建物数 | 読込時間 (s) |
|---|---|---|---|---|---|
| 広島市 | #1316 | #1469 | OK (cached) | 350,774 | 0.3 |
| 福山市 | #1188 | #1483 | OK (cached) | 250,284 | 0.2 |
| 呉市 | #1187 | #1323 | OK (cached) | 94,558 | 0.1 |
| 三次市 | #1444 | #1327 | OK (cached) | 31,827 | 0.0 |
| 府中市 | #1302 | #512 | OK (cached) | 25,368 | 0.0 |
| 海田町 | #1189 | #71 | OK (cached) | 11,048 | 0.0 |
| 竹原市 | #1443 | #1474 | OK (cached) | 23,530 | 0.0 |
本記事は 3D 都市モデル 7 dataset_id を「論理カバー」する。 CityGML 直接処理は重すぎるため、同 7 市町の建物利用現況 GeoJSON で代替。 PLATEAU は CityGML から 建物 footprint と階数・軒高を生成しているので、 本記事の分析対象 (= 階数・軒高・footprint) は両者で一致する。
| 市町 | 3D都市モデル CityGML (本来の対象) | 建物利用現況 GeoJSON (採用 = Plan B) |
|---|---|---|
| 広島市 | #1316 (~950 MB) | #1469 (~33 MB) |
| 府中市 | #1302 | #512 |
| 呉市 | #1187 | #1323 (~12 MB) |
| 福山市 | #1188 | #1483 (~29 MB) |
| 海田町 | #1189 | #71 (~1.3 MB) |
| 竹原市 | #1443 | #1474 (~1.9 MB) |
| 三次市 | #1444 | #1327 (~1.1 MB) |
対応表 7/7 件 論理カバー。
| ファイル | 内容 |
|---|---|
| L14_city_stats.csv | 7 市町 × 基本統計 (建物数/平均階数/最大階数/5階以上率/平屋率) |
| L14_band_cross_count.csv | 市町×階数バンド 棟数 |
| L14_band_cross_pct.csv | 市町×階数バンド 構成比 |
| L14_yoto_cross.csv | 市町×用途バンド 棟数 |
| L14_yoto_cross_pct.csv | 市町×用途バンド 構成比 |
| L14_yoto_kaisuu_mean.csv | 市町×用途バンド 平均階数 (ヒートマップ元) |
| L14_height_dist.csv | 軒高 (TATE_H) 中央値・P75/P95/P99/最大 |
| L14_flood_overlay.csv | 浸水域 sjoin 結果 (致命率含む) |
| L14_deadly_summary.csv | 致命率 市町ランキング |
| L14_did_compare.csv | DID 内外 階数比較 |
| ファイル | 内容 |
|---|---|
| L14_small_multiples_kaisuu.png | 図1 7 市町 small multiples (主題図) |
| L14_band_compare.png | 図2 階数バンド構成比 + 5階以上率/平屋率 |
| L14_height_hist.png | 図3 軒高 (TATE_H) 分布 ヒストグラム |
| L14_flood_compare.png | 図4 浸水×階数 致命率比較 |
| L14_flood_overlay_map.png | 図5 浸水×建物 主題図 (広島市拡大) |
| L14_did_compare.png | 図6 DID 内外 箱ひげ比較 |
| L14_yoto_kaisuu_heatmap.png | 図7 市町×用途 平均階数ヒートマップ |
| L14_pref_map.png | 図8 県全域 主題図 |
| L14_3d_city_model_compare.py | 再現スクリプト (本記事) |
cd "2026 DoBoX 教材"
# 7 市町の建物利用現況 GeoJSON を取得 (合計 ~80 MB, ~20 秒)
mkdir data\extras\bld_data -Force
iwr "https://hiroshima-dobox.jp/resource_download/94767" -OutFile "data\extras\bld_hiroshima.zip" # 広島市
iwr "https://hiroshima-dobox.jp/resource_download/94848" -OutFile "data\extras\bld_fukuyama.zip" # 福山市
iwr "https://hiroshima-dobox.jp/resource_download/50387" -OutFile "data\extras\bld_kure.zip" # 呉市
iwr "https://hiroshima-dobox.jp/resource_download/50423" -OutFile "data\extras\bld_miyoshi.zip" # 三次市
iwr "https://hiroshima-dobox.jp/resource_download/51056" -OutFile "data\extras\bld_fuchu.zip" # 府中市
iwr "https://hiroshima-dobox.jp/resource_download/51057" -OutFile "data\extras\bld_kaita.zip" # 海田町
iwr "https://hiroshima-dobox.jp/resource_download/94794" -OutFile "data\extras\bld_takehara.zip" # 竹原市
# 解凍 (PowerShell 5.1+)
Expand-Archive data\extras\bld_hiroshima.zip data\extras\bld_data -Force
# (他都市も同様に)
# 浸水深 (X09 と同じ #1278)
mkdir data\extras\flood_shp -Force
# (X09 / L09 で取得済みなら不要)
py -X utf8 lessons\L14_3d_city_model_compare.py
キャッシュ機構: 初回実行で
data/extras/_l14_cache/{slug}.parquet を生成。
2 回目以降は parquet から数秒で読込 (要件 S 1 分以内を担保)。
キャッシュを破棄したい場合は _l14_cache フォルダを削除。
7 市町を 政令市 (広島) → 中核市 (福山・呉) → 中山間市町 (三次・府中) → 都市近郊町 (海田町) → 瀬戸内市 (竹原) の階層に並べ、各階層で建物プロファイル (棟数密度・平均階数・5 階以上率・平屋率) がどう変わるかを概観する。 これが H1 (広島市が最も高層) と H2 (三次市が最も平屋多) の検証の出発点となる。
KAISUU (階数) 列を使うn_bld, mean_kaisuu, max_kaisuu,
rate_high_pct (5 階以上率), rate_flat_pct (1 階率) を計算KAISUU == 0 は不明・倉庫等として除外して平均・中央値を算出↑ L14_3d_city_model_compare.py 行 224–260
なぜこの図か: 棒グラフでは「広島市の中心部にタワーが集中している」「三次市は広く分散して平屋」のような 地理的なパターンが見えない。同じスケール感で 7 市町を並べることで、各市町の都市形態 (compact / sprawl) を直感的に比較する (要件 T)。

この図から読み取れること:
| 市町 | 人口 | 面積 km² | 建物数 | 棟/km² | 平均階数 | 最大階数 | 5階以上率 | 平屋率 |
|---|---|---|---|---|---|---|---|---|
| 広島市 | 1,189,000 | 906.7 | 350,774 | 386.9 | 2.22 | 52 | 3.17% | 12.2% |
| 福山市 | 459,000 | 518.1 | 250,284 | 483.1 | 1.89 | 28 | 0.43% | 17.4% |
| 呉市 | 210,000 | 352.8 | 94,558 | 268.0 | 1.99 | 19 | 1.54% | 21.1% |
| 三次市 | 50,000 | 778.2 | 31,827 | 40.9 | 1.61 | 11 | 0.20% | 33.0% |
| 府中市 | 37,000 | 195.8 | 25,368 | 129.6 | 1.58 | 14 | 0.15% | 45.9% |
| 海田町 | 30,000 | 13.8 | 11,048 | 800.6 | 2.08 | 15 | 0.91% | 8.5% |
| 竹原市 | 23,000 | 118.2 | 23,530 | 199.1 | 1.82 | 15 | 0.13% | 20.7% |
この表から読み取れること:
建物を 5 つの階数バンド (平屋 / 2 階 / 3-4 階 / 5-9 階 / 10 階以上) に分類し、 さらに 用途バンド (業務・商業・住宅・工業・倉庫運輸他 等) と組み合わせて、 「政令市の高層は何用途か?」「中核市と中山間市で 商業の階数はどう違うか?」を見る。 これが H4 (港湾系は中層中心) を検証する基盤になる。
階数バンド (本レッスン独自定義):
| バンド | 定義 | 都市的意味 |
|---|---|---|
| 平屋 (1 階) | KAISUU == 1 | 戸建住宅・倉庫・小規模店舗 |
| 2 階 | KAISUU == 2 | 戸建住宅・町並みの主役 |
| 3-4 階 (低中層) | 3 ≤ KAISUU ≤ 4 | 共同住宅・小規模ビル・商店併用 |
| 5-9 階 (中層) | 5 ≤ KAISUU ≤ 9 | マンション・オフィスビル・ホテル中規模 |
| 10 階以上 (高層) | KAISUU ≥ 10 | タワーマンション・高層オフィス・ランドマーク |
用途バンド (TATE_YO 401-499 を 7 区分に集約): 業務 / 商業 / 娯楽サービス / 文教 / 住宅 / 工業 / 倉庫運輸他
↑ L14_3d_city_model_compare.py 行 1375–1430
なぜこの図か: 7 市町の階数構成を 積み上げ棒 1 本/市町 で見ると、 「都市階層を上に行くほど高層比率がスライドして増える」というスケーリング則を視覚的に確認できる。 右の棒は H1 vs H2 の対比 (高層率 vs 平屋率) を 1 図で並べる (要件 H)。

この図から読み取れること:
| 市町 | 平屋(1階) | 2階 | 3-4階(低中層) | 5-9階(中層) | 10階以上(高層) | 0階・不明 |
|---|---|---|---|---|---|---|
| 広島市 | 12.2% | 70.4% | 13.0% | 2.5% | 0.7% | 1.3% |
| 福山市 | 17.4% | 78.5% | 3.3% | 0.4% | 0.1% | 0.4% |
| 呉市 | 21.1% | 65.8% | 9.8% | 1.3% | 0.2% | 1.7% |
| 三次市 | 33.0% | 42.4% | 1.9% | 0.2% | 0.0% | 22.6% |
| 府中市 | 45.9% | 50.9% | 3.0% | 0.1% | 0.0% | 0.0% |
| 海田町 | 8.5% | 25.3% | 5.5% | 0.7% | 0.2% | 59.9% |
| 竹原市 | 20.7% | 74.4% | 2.0% | 0.1% | 0.0% | 2.9% |
この表から読み取れること:
なぜこの図か: 棒グラフでは 「住宅は何階が中心か」「商業はどこで階数が上がるか」のような 2 軸の関係性が見えない。ヒートマップで 1 図で集約 (要件 H)。

この表 (図7 の元データ) から読み取れること:
| 市町\用途 | 業務 | 商業 | 娯楽サービス | 文教 | 住宅 | 工業 |
|---|---|---|---|---|---|---|
| 広島市 | 2.81 | 2.19 | 2.16 | 1.58 | 1.20 | 1.35 |
| 福山市 | 1.99 | 1.97 | 1.61 | 1.20 | 1.05 | 1.15 |
| 呉市 | 2.40 | 1.95 | 1.95 | 2.38 | 1.59 | — |
| 三次市 | 1.43 | 1.73 | 1.45 | 1.28 | 1.18 | 1.07 |
| 府中市 | 1.68 | 1.68 | 1.30 | 1.49 | 1.07 | 1.06 |
| 海田町 | 1.98 | 2.22 | 1.72 | 1.72 | 1.03 | 1.10 |
| 竹原市 | 1.80 | 1.94 | 1.25 | 1.09 | 1.03 | 1.45 |
階数 KAISUU は離散値 (1, 2, 3...) だが、軒高 TATE_H は m 単位の連続値。 同じ「3 階建て」でも、商業ビル (天井 4 m × 3 = 12 m) と低層マンション (天井 3 m × 3 = 9 m) では軒高が違う。 都市ごとの軒高分布を P95/P99 で見比べると、「裾の長さ」 = 高層化の進度が分かる。
TATE_H > 0 の建物だけ抽出 (0 は未測定)median, P75, P95, P99, max を計算なぜこの図か: 軒高は典型的な 裾の長い分布 (大半が低い、ごく一部が高い)。 log y で描くと裾の構造が読み取れる。P95/P99 を縦線で示すことで「上位 5% / 1% の境界」を明示 (要件 H)。

この図から読み取れること:
| 市町 | 軒高 既知数 | 中央値 m | P75 | P95 | P99 | 最大 |
|---|---|---|---|---|---|---|
| 広島市 | 350,774 | 7.1 | 8.3 | 11.9 | 25.1 | 178.1 |
| 呉市 | 94,558 | 7.0 | 8.2 | 11.1 | 16.3 | 58.3 |
| 海田町 | 11,048 | 6.7 | 7.6 | 10.1 | 15.9 | 48.1 |
| 福山市 | 250,284 | 6.5 | 7.6 | 9.6 | 13.6 | 88.8 |
| 竹原市 | 23,530 | 5.7 | 7.2 | 8.7 | 12.3 | 72.4 |
| 府中市 | 25,368 | 5.2 | 6.8 | 8.7 | 11.9 | 43.6 |
| 三次市 | 0 (TATE_H 全 0=未測定) | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
この表から読み取れること:
本記事の最重要分析。
浸水想定深 3 m 以上 (#1278 の rank ≥ 50) の地域に立つ平屋 (1 階建て) は、
垂直避難先がなく 命の危険最高ランク である。これを 「致命的建物」 と定義し、市町ランキングを取る。
H3 (致命的建物の存在) と H6 (市町間 10 倍以上の差) を同時に検証する。
素朴な発想: 全建物 footprint と 全浸水ポリゴンを gpd.overlay() で総当たり交差。
しかし 50 万棟 × 600 浸水ポリゴン = 3 億回の交差判定 → 数十分かかる (要件 S 違反)。
本記事の高速化: 建物 footprint を representative_point() で 1 点に縮約 → 浸水ポリゴンに sjoin(predicate='within')。
点 vs ポリゴンの sjoin は GEOS の R-Tree インデックスで O(N log M) で完了する。
建物 footprint の代表点が浸水ポリゴン内にあれば、その建物は浸水想定域内と判定。
精度は「建物の中心 1 点で代表する」近似だが、商業ビル / 戸建のいずれも footprint が小さいため十分。
建物 i が致命的 ⇔ depth_rank ≥ 50 (3 m 以上) かつ KAISUU == 1 (平屋)
相対安全建物: in_flood かつ KAISUU ≥ 2 (浸水深に関わらず 2 階以上で垂直避難可能)
↑ L14_3d_city_model_compare.py 行 1500–1566
なぜこの図か: ランキング棒で「どの市町が致命率が高いか」を直感的に見せ、 散布図で「曝露量 (浸水域内棟数) と致命率」の 2 軸関係 + 人口バブルで 3 軸目も同時表示 (要件 H, T)。

この図から読み取れること:
なぜこの図か: ランキングだけでは「どの地区に致命的建物が集中するか」が見えない。 広島市デルタを拡大し、浸水深 3 m 以上 (青塗り) × 致命的建物 (赤点) を 1 枚に重ねることで、 「太田川河口南岸の平屋密集地」のような具体的な地理パターンを可視化 (要件 T 主役級)。

この図から読み取れること:
| 市町 | 建物数 | 浸水域内 | 浸水率 | 3m以上 | うち平屋(致命) | 致命率 | 2階以上(相対安全) | 相対安全率 |
|---|---|---|---|---|---|---|---|---|
| 広島市 | 350,774 | 166,280 | 47.4% | 105,812 | 15,035 | 9.0% | 139,390 | 83.8% |
| 福山市 | 250,284 | 144,197 | 57.6% | 86,888 | 11,729 | 8.1% | 124,438 | 86.3% |
| 呉市 | 94,558 | 20,470 | 21.6% | 3,809 | 835 | 4.1% | 16,448 | 80.4% |
| 三次市 | 31,827 | 18,594 | 58.4% | 13,421 | 3,642 | 19.6% | 9,006 | 48.4% |
| 府中市 | 25,368 | 13,595 | 53.6% | 8,864 | 3,633 | 26.7% | 8,091 | 59.5% |
| 竹原市 | 23,530 | 8,999 | 38.2% | 5,329 | 879 | 9.8% | 7,184 | 79.8% |
| 海田町 | 11,048 | 7,652 | 69.3% | 801 | 63 | 0.8% | 2,689 | 35.1% |
この表から読み取れること:
同じ市町内でも 中心市街地 (DID) は階数が高く、郊外は平屋が多い はず。 DID 内外で建物階数を比較して 「都市勾配 (urban gradient)」 を市町別に数値化する。 これは 「中心 vs 郊外」 の差が 大都市 (広島) では大きく、小都市 (竹原) では平坦 という都市地理学の古典的仮説の検証。
dissolve で市町内 DID 全体を 1 ポリゴンに統合representative_point が DID ポリゴン内にあるか within 判定↑ L14_3d_city_model_compare.py 行 1589–1639
なぜこの図か: 平均だけだと外れ値 (タワー) に引っ張られる。箱ひげで中央値・四分位を見せ、平均は丸でオーバーレイ。 左 (DID 内) → 右 (DID 外) の階段状の落差が 「都市勾配」 の視覚化 (要件 H)。

この図から読み取れること:
| 市町 | DID内 建物数 | DID外 建物数 | DID内 平均階数 | DID外 平均階数 | 差 (中心-郊外) | 比 (中心/郊外) |
|---|---|---|---|---|---|---|
| 広島市 | 277,465 | 68,904 | 2.29 | 1.95 | +0.34 | 1.17 |
| 福山市 | 120,712 | 128,530 | 1.96 | 1.81 | +0.15 | 1.08 |
| 呉市 | 52,481 | 40,449 | 2.09 | 1.85 | +0.25 | 1.13 |
| 府中市 | 12,049 | 13,319 | 1.70 | 1.48 | +0.22 | 1.15 |
| 海田町 | 4,125 | 306 | 2.10 | 1.76 | +0.34 | 1.19 |
| 竹原市 | 4,766 | 18,081 | 1.87 | 1.80 | +0.07 | 1.04 |
DID 比較から除外された市町:
この表から読み取れること:
なぜこの図か: 個別の small multiples (図1) では市町ごとの構造が見えるが、 県全体としてどこに高層ストックが集中しているか はワンショットで掴みにくい。 1 枚に 7 市町を統合した主題図は、本記事の「7 市町統合」というテーマ自体の象徴 (要件 T)。

この図から読み取れること:
| 仮説 | 内容 | 判定 | 根拠 |
|---|---|---|---|
| H1 | 広島市は最も高層建物率が高い (5階以上率) | 支持 | 広島市 3.17% vs 他市町 最大 1.54% |
| H2 | 山間部 (三次市) は平屋率が高い | 支持 | 三次市 平屋率 33.0% vs 他市町 (除く府中) 平均 16.0% |
| H3 | 浸水想定3m+ × 平屋 = 命の危険最高ランクが存在する | 支持 | 致命的建物 (深3m+ × 平屋) 合計 35,816 棟 |
| H4 | 港湾系 (呉市/福山市) は中層 (3-4階) 中心 | 支持 | 呉/福山 平均3-4階率 6.5% vs 三次 1.9% |
| H5 | 旧市街地 (竹原市) は低層密集 (平屋+2階) | 支持 | 竹原 低層率 95.0% vs 広島 低層率 82.6% |
| H6 | 浸水域内 平屋率は市町間で 10倍以上の差 | 支持 | 致命率の最大/最小 比 = 32.5 倍 (最大=26.7%, 最小=0.82%) |
sklearn.cluster.DBSCAN + 国交省ジオロジカル地盤マップRoofSurface) を抽出。plateaupy または citygml-tools ライブラリ。
重量を割り切る前提で、建物 1 万棟までサンプル抽出。
屋根勾配の市町間比較 → 気候適応の可視化sjoin_nearest で距離結合。
駅からの距離 × 階数バンドの分布を作る。
駅前再開発の効果定量化につながる