✅ このスクリプトは初回実行時にデータを自動取得します(DoBoX からの直接ダウンロード)。
| ID | データセット名 |
|---|---|
| #18 | dataset #18 |
| #70 | 都市計画区域情報_土地利用現況_広島市 |
| #71 | 都市計画区域情報_建物利用現況_海田町 |
| #222 | dataset #222 |
| #493 | 都市計画区域情報_土地利用現況_呉市 |
| #494 | 都市計画区域情報_土地利用現況_竹原市 |
| #495 | 都市計画区域情報_土地利用現況_三原市 |
| #496 | 都市計画区域情報_土地利用現況_尾道市 |
| #497 | 都市計画区域情報_土地利用現況_福山市 |
| #498 | 都市計画区域情報_土地利用現況_府中市 |
| #499 | 都市計画区域情報_土地利用現況_三次市 |
| #500 | 都市計画区域情報_土地利用現況_庄原市 |
| #501 | 都市計画区域情報_土地利用現況_大竹市 |
| #502 | 都市計画区域情報_土地利用現況_東広島市 |
| #503 | 都市計画区域情報_土地利用現況_廿日市市 |
| #504 | 都市計画区域情報_土地利用現況_安芸高田市 |
| #505 | 都市計画区域情報_土地利用現況_江田島市 |
| #506 | 都市計画区域情報_土地利用現況_府中町 |
| #507 | 都市計画区域情報_土地利用現況_海田町 |
| #508 | 都市計画区域情報_土地利用現況_熊野町 |
| #509 | 都市計画区域情報_土地利用現況_坂町 |
| #510 | 都市計画区域情報_土地利用現況_北広島町 |
| #511 | 都市計画区域情報_土地利用現況_世羅町 |
| #512 | 都市計画区域情報_建物利用現況_府中市 |
| #513 | 都市計画区域情報_建物利用現況_世羅町 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #1321 | 都市計画区域情報_建物利用現況_安芸高田市 |
| #1322 | 都市計画区域情報_建物利用現況_熊野町 |
| #1323 | 都市計画区域情報_建物利用現況_呉市 |
| #1325 | 都市計画区域情報_建物利用現況_江田島市 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L13_urban_planning_survey.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
pd.concat() + gpd.sjoin() で 40 個の GeoJSON を統合し、
用途地域 (X09 と同じ指定地ポリゴン) と交差させて
「指定された用途 ≠ 実際の建物利用」のメッシュをカウント。
data/extras/urban_planning_survey/fetch_log.json)。
pd.concat() で 1 つの GeoDataFrame にまとめる手法| 指標 | 結果 |
|---|---|
| 統合した dataset_id | 40 件 (建物 20 + 土地 20) |
| 統合 250m メッシュ | 建物 40,740 メッシュ / 土地 40,693 メッシュ |
| 用途地域メッシュ交差 | 建物 7,494 / 土地 7,494 メッシュ |
| H1: 第一種住居×商業 | 0.6% (14/2,463 メッシュ) |
| H2: 工業系指定×農地 | 3.1% (50/1,592 メッシュ) |
| H4: 田園住居×住宅+農林一致 | 14.9% (62/415 メッシュ) |
| H5: 商業 / 第一種低層 密度比 | ×7.5 (279 / 37 棟/km²) |
| ミスマッチ率最大の市町 | 府中市 (48.4%) |
| ミスマッチ率最小の市町 | 熊野町 (9.3%) |
| 処理時間 | 31.3 秒 (要件S 1〜3 分) |
都市計画基礎調査の建物利用現況・土地利用現況は 市町ごとに別 dataset_id として公開されており、県全域版 dataset_id が存在しない。
このため 20 市町 × 2 シリーズ = 40 dataset_id を pd.concat() で統合する。
属性スキーマは国土交通省実施要領 (第4版) に準拠して全市町で共通 (一部の B_USE 列は市町で 0 件のため省略されているが、統合時に fillna(0) で揃える)。
X09 の用途地域 GeoJSON (340006: 県全域版 / 341002: 広島市版) を gpd.sjoin() で建物メッシュ・土地メッシュと交差させる。
sjoin は内部で R-tree 空間インデックスを使うため、40,740 点 × 12 ポリゴンでも数秒で完了する。
| 建物 B_USE 主要コード | 細分類 | 系統 |
|---|---|---|
| 4011 | 業務 (事務所/銀行/会議場) | 商業系 |
| 4021〜4027 | 商業 (店舗/飲食/娯楽) | 商業系 |
| 4031 | 宿泊 (ホテル/旅館) | 商業系 |
| 4111 | 専用住宅 | 住居系 |
| 4121 | 共同住宅 (アパート/マンション) | 住居系 |
| 4131〜4151 | 併用住宅 | 住居系 |
| 4211 | 官公庁 (庁舎/警察/消防) | 公共系 |
| 4221〜4227 | 文教厚生 (学校/病院/福祉) | 公共系 |
| 4311〜4313 | 運輸倉庫 (駅舎/卸売市場) | 工業系 |
| 4411〜4415 | 工場 | 工業系 |
| 4511 | 農林漁業用施設 | 農林漁業系 |
| 4521 | 供給処理 (浄水/火葬/発電) | 工業系 |
| 土地 LUI 主要コード | 用途 | 系統 |
|---|---|---|
| 201 / 202 | 田 / 畑 | 農地 |
| 203 | 山林 | 森林 |
| 204 / 205 | 水面 / その他自然地 | 水面 / 自然地 |
| 211 / 212 / 213 | 住宅 / 商業 / 工業 用地 | 住宅 / 商業 / 工業 |
| 214 / 218 | 公益施設 / その他公的 | 公益 |
| 215 / 216 | 道路 / 交通施設 | 交通インフラ |
| 217 | 公園緑地 / 公共空地 | 公共空地 |
| 219 | 農林漁業施設用地 | 農林漁業 |
| ファイル | 内容 |
|---|---|
| L13_city_building_summary.csv | 市町別 建物利用 集計 (棟数/密度/系統別) |
| L13_city_landuse_summary.csv | 市町別 土地利用 集計 (面積/系統別) |
| L13_mismatch_by_city.csv | 市町別 ミスマッチ率 ランキング |
| L13_zone_x_main.csv | 用途地域 × 建物主用途 ピボット |
| L13_mismatch_heatmap.csv | ヒートマップ用 % ピボット |
| L13_zone_density.csv | 用途地域別 建物密度 (棟/km²) |
| L13_city_main_compo.csv | 市町別 主用途構成比 (棟数 %) |
| L13_city_lu_compo.csv | 市町別 土地利用構成比 (面積 %) |
| L13_hypothesis_results.json | 仮説H1〜H5 検証結果 |
| L13_map_building_main_use.png | 図1 県全域 建物主用途 主題図 |
| L13_map_landuse_main_use.png | 図2 県全域 土地利用 主題図 |
| L13_map_city_small_multiples.png | 図3 市町別 small multiples (12 panels) |
| L13_mismatch_heatmap.png | 図4 用途地域 × 実利用 ミスマッチ ヒートマップ |
| L13_mismatch_by_city.png | 図5 市町別 ミスマッチ率 ランキング |
| L13_zone_density_bar.png | 図6 用途地域別 建物密度 |
| L13_city_main_compo.png | 図7 市町別 主用途構成 (棟数) |
| L13_city_lu_compo.png | 図8 市町別 土地利用構成 (面積) |
| L13_overlay_zone_x_building.png | 図9 重ね合わせ — 用途地域枠 × 建物主用途 |
| L13_city_scatter.png | 図10 散布図 農地比率 × 建物密度 |
| L13_urban_planning_survey.py | 再現スクリプト |
個別取得 (PowerShell, 40 dataset_id を一括):
cd "2026 DoBoX 教材"
py -X utf8 data\extras\urban_planning_survey\_fetch_meta.py
取得スクリプトはデータセットページ HTML を 1 度だけ GET し、
250mメッシュ単位 GeoJSON リソースID を抽出して resource_download 直リンクから zip を取得する。
40 リクエスト × 数秒 = 約 2〜3 分で完走 (DoBoX 側 rate limit 配慮 0.2s スリープ込み)。
シリーズ系列 (=同じ Desc 書式の連番群) を 1 個の DataFrame に束ねる ことで、県全域分析を可能にする。 これは DoBoX のように「市町ごとに別 dataset_id」というデータ提供形式で必須のテクニック。
geopandas.read_file() で GeoDataFrame として読み込む (= 表 + 図形列)pd.concat([df1, df2, ...], ignore_index=True) で 縦に積み重ねるpd.concat は自動的に和集合を取り、欠落セルは NaN で埋める"city" 列を追加してから concat| 段階 | 形 (rows × cols) | 追加列 |
|---|---|---|
| 1. 広島市 GeoJSON 読込 | 6,731 × 110 | (なし) |
2. g["city"] = "広島市" 付与 | 6,731 × 111 | +city |
| 3. 同様に 20 市町の DF を作成 | 20 個の DF | 各 +city |
4. pd.concat() で縦結合 | 40,740 × 138 | 欠落列は NaN |
5. fillna(0) + 系統別 GRP_* 集約 | 40,740 × 144 | +主用途6系統 |
列数が市町ごとに違う ({63〜110}) 理由: 値が常に 0 の B_USE_xxx (例: 大都市にしかない高度商業) はデータ提供時に省略されている。
pd.concat は和集合を取るので統合後は自動的に最大列数になり、欠落セルは NaN→0 で埋める。
20 市町 × 平均 2,037 メッシュ = 計 40,740 メッシュの建物利用統合データが完成。 土地利用も同様に 40,693 メッシュ。これが本記事の「土俵」。
なぜこの可視化を選んだか: 統合直後の構造を 表で示すのが最も明確 (地図はあとで作る)。BeforeAfter テーブルは要件K (入出力の具体例) を満たす目的。
40 統合データの「全体像」をひと目で見る。「住居系が圧倒的に多いだろう」という直感を地図で確認/反証する。
GeoDataFrame.plot(color=df["color"]) で系統別色分けgeometry.simplify(50) で形状を 50m 精度に丸める (1分以内完走に必須)なぜこの図か: 県全域の「都市性のグラデーション」を 1 枚に圧縮するには 主題図 (choropleth) が最適。色1色 = 1メッシュの主用途。

読み取り:

読み取り:
県全域の主題図では「個々の市町の細部」が見えない。 12 市町を同じ縮尺で並べる small multiples で、市町ごとの構成パターンを比較する。
なぜこの図か: 1 枚の県全域図では市町の輪郭がつぶれて見える。 条件 (=市町) だけ変えて並べる small multiples はパターン比較に最適。

読み取り:
本記事の主役。用途地域は法的に「ここは住居系を想定」「ここは商業系を想定」と指定しているが、 実際にそこに建っている建物の主用途は必ずしも一致しない。 13 用途地域 × 6 主用途のクロス表を作り、ヒートマップで一覧する。
| STEP | 役割 | 入力 | 出力 |
|---|---|---|---|
| STEP1: sjoin | 建物メッシュ重心が用途地域ポリゴン内にあるか判定 | 40,740 重心点 + 12 用途ポリゴン | 7,494 行 (yoto + MAIN_GRP) |
| STEP2: pivot | (yoto, MAIN_GRP) でクロス集計 | 同上 | 13 行 × 6 列のピボット表 |
| STEP3: 行内 % | 各用途地域 (行) を 100% にした実利用比率 | ピボット | 0〜100% のヒートマップ用行列 |
↑ L13_urban_planning_survey.py 行 938–966
なぜヒートマップか: 13 × 6 の 2 軸クロスを一望するには色面が最適。 対角に近いほど指定通り、対角から外れるほどミスマッチ。

読み取り:

なぜこの図か: ヒートマップは「比率」を見るが、絶対の建物密度差は別軸。同じ「住居系優位」でも商業地域と田園住居では建物密度が桁違い。
| yoto | n_mesh | bld_total | area_total_km2 | density |
|---|---|---|---|---|
| 第二種低層住居 | 36.0 | 6,955.0 | 2.4 | 2,911.1 |
| 第一種低層住居 | 958.0 | 143,466.0 | 63.6 | 2,256.1 |
| 準工業 | 229.0 | 30,033.0 | 15.2 | 1,975.5 |
| 第一種住居 | 2,463.0 | 319,467.0 | 163.5 | 1,954.1 |
| 商業 | 584.0 | 75,463.0 | 38.8 | 1,946.6 |
| 第二種中高層住居 | 270.0 | 33,787.0 | 17.9 | 1,885.1 |
| 第二種住居 | 296.0 | 34,169.0 | 19.6 | 1,739.7 |
| 第一種中高層住居 | 727.0 | 77,561.0 | 48.3 | 1,606.8 |
| 準住居 | 71.0 | 7,153.0 | 4.7 | 1,518.3 |
| 工業 | 784.0 | 59,001.0 | 52.0 | 1,133.8 |
| 工業専用 | 481.0 | 20,135.0 | 31.9 | 630.7 |
| 田園住居 | 415.0 | 12,372.0 | 27.6 | 449.0 |
表 (用途地域別 建物密度): なぜこの表か: ヒートマップは「分布」だが、 密度 (棟/km²) は絶対量の差を示す。商業地域の極端な高密度を数値で確認。
仮説 H3 (ミスマッチ率は市町で異なる、特に広島市が高い) を検証。 全 20 市町の中で、用途指定と実利用の乖離が大きいのはどこか?
↑ L13_urban_planning_survey.py 行 978–995
978 979 980 981 982 983 984 |
なぜ横棒グラフか: 市町順位を直接読みたいため。色分けで 50% 超を赤、未満を青にして直感的に良し悪しを示す。

読み取り:
表 (市町別 集計):
| city | n_total | n_match | mismatch_pct |
|---|---|---|---|
| 府中市 | 192.0 | 99.0 | 48.4 |
| 大竹市 | 146.0 | 85.0 | 41.8 |
| 庄原市 | 117.0 | 71.0 | 39.3 |
| 竹原市 | 130.0 | 80.0 | 38.5 |
| 海田町 | 82.0 | 51.0 | 37.8 |
| 安芸高田市 | 27.0 | 17.0 | 37.0 |
| 福山市 | 1,492.0 | 952.0 | 36.2 |
| 世羅町 | 39.0 | 25.0 | 35.9 |
| 三原市 | 241.0 | 155.0 | 35.7 |
| 江田島市 | 34.0 | 22.0 | 35.3 |
| 三次市 | 134.0 | 87.0 | 35.1 |
| 呉市 | 628.0 | 413.0 | 34.2 |
| 東広島市 | 511.0 | 337.0 | 34.1 |
| 北広島町 | 56.0 | 37.0 | 33.9 |
| 坂町 | 61.0 | 43.0 | 29.5 |
| 尾道市 | 442.0 | 318.0 | 28.1 |
| 府中町 | 97.0 | 71.0 | 26.8 |
| 広島市 | 2,442.0 | 1,829.0 | 25.1 |
| 廿日市市 | 357.0 | 275.0 | 23.0 |
| 熊野町 | 86.0 | 78.0 | 9.3 |
各市町の「都市性プロファイル」を 2 角度から確認: 建物視点 (棟数構成) と 土地視点 (面積構成)。
なぜ積み上げ棒グラフか: 市町間で比率を直接比較するため。横軸=市町、縦軸=100%、色=系統。

読み取り:
なぜこの図か: 建物棟数だけだと「建物がない山林」が見えない。土地面積で見ることで森林県・農村県としての実態が浮かぶ。

読み取り:
表 (市町別 建物集計):
| city | mesh_n | bld_total | area_km2 | bld_density_per_km2 | 住居系 | 商業系 | 工業系 |
|---|---|---|---|---|---|---|---|
| 府中町 | 201.0 | 15,413.0 | 13.3 | 1,154.9 | 13,811.0 | 880.0 | 266.0 |
| 広島市 | 6,731.0 | 350,774.0 | 446.7 | 785.3 | 291,389.0 | 30,218.0 | 12,333.0 |
| 福山市 | 5,588.0 | 250,284.0 | 370.7 | 675.1 | 194,531.0 | 18,759.0 | 21,265.0 |
| 海田町 | 263.0 | 11,048.0 | 17.5 | 632.4 | 8,087.0 | 541.0 | 780.0 |
| 大竹市 | 441.0 | 18,255.0 | 29.3 | 622.3 | 13,813.0 | 968.0 | 2,481.0 |
| 尾道市 | 3,035.0 | 102,998.0 | 201.6 | 511.0 | 81,272.0 | 6,075.0 | 6,938.0 |
| 府中市 | 757.0 | 25,368.0 | 50.2 | 505.7 | 18,665.0 | 1,240.0 | 2,115.0 |
| 呉市 | 3,995.0 | 94,558.0 | 265.7 | 355.9 | 80,344.0 | 6,919.0 | 3,435.0 |
| 江田島市 | 711.0 | 16,465.0 | 47.3 | 348.1 | 12,921.0 | 1,064.0 | 704.0 |
| 廿日市市 | 2,135.0 | 48,277.0 | 141.9 | 340.3 | 40,919.0 | 3,008.0 | 1,996.0 |
| 熊野町 | 580.0 | 12,485.0 | 38.5 | 324.0 | 10,755.0 | 813.0 | 447.0 |
| 坂町 | 301.0 | 6,277.0 | 20.0 | 313.8 | 4,948.0 | 479.0 | 339.0 |
| 三次市 | 1,573.0 | 31,827.0 | 104.0 | 306.0 | 20,129.0 | 4,423.0 | 4,011.0 |
| 三原市 | 2,424.0 | 47,419.0 | 160.9 | 294.6 | 37,639.0 | 3,051.0 | 3,344.0 |
| 世羅町 | 288.0 | 5,566.0 | 19.1 | 291.7 | 3,889.0 | 465.0 | 308.0 |
| 庄原市 | 1,355.0 | 23,882.0 | 89.5 | 266.9 | 17,459.0 | 2,100.0 | 1,489.0 |
| 安芸高田市 | 247.0 | 4,289.0 | 16.3 | 262.4 | 3,286.0 | 443.0 | 156.0 |
| 北広島町 | 529.0 | 7,310.0 | 35.0 | 208.8 | 4,656.0 | 646.0 | 1,069.0 |
| 竹原市 | 2,017.0 | 23,530.0 | 134.0 | 175.6 | 17,731.0 | 1,762.0 | 1,435.0 |
| 東広島市 | 7,569.0 | 84,987.0 | 502.5 | 169.1 | 71,027.0 | 5,373.0 | 3,511.0 |
表 (市町別 土地利用集計):
| city | mesh_n | area_km2 | 農地 | 森林 | 住宅 | 商業 | 工業 |
|---|---|---|---|---|---|---|---|
| 東広島市 | 7,569.0 | 502.5 | 6,130.8 | 30,131.5 | 2,675.0 | 117.2 | 437.1 |
| 広島市 | 6,730.0 | 446.6 | 1,785.5 | 20,136.6 | 6,496.6 | 425.2 | 649.4 |
| 福山市 | 5,544.0 | 367.8 | 3,123.2 | 15,065.5 | 4,737.1 | 212.8 | 1,396.8 |
| 呉市 | 3,995.0 | 265.7 | 833.1 | 16,892.2 | 1,908.4 | 67.4 | 455.7 |
| 尾道市 | 3,035.0 | 201.6 | 2,516.6 | 8,750.5 | 1,667.3 | 47.3 | 278.8 |
| 三原市 | 2,424.0 | 160.9 | 1,235.0 | 9,723.1 | 701.2 | 40.4 | 314.2 |
| 廿日市市 | 2,135.0 | 141.9 | 606.8 | 7,871.1 | 1,053.7 | 69.0 | 158.7 |
| 竹原市 | 2,017.0 | 134.0 | 817.8 | 9,182.1 | 434.5 | 13.2 | 59.3 |
| 三次市 | 1,573.0 | 104.0 | 1,158.5 | 5,516.4 | 449.6 | 43.9 | 55.1 |
| 庄原市 | 1,355.0 | 89.5 | 1,392.3 | 4,170.2 | 381.2 | 29.9 | 63.9 |
| 府中市 | 757.0 | 50.2 | 377.3 | 2,351.9 | 502.5 | 11.7 | 70.6 |
| 江田島市 | 711.0 | 47.3 | 625.0 | 1,908.3 | 331.4 | 5.6 | 18.1 |
| 熊野町 | 580.0 | 38.5 | 310.5 | 2,251.4 | 305.6 | 14.3 | 5.4 |
| 北広島町 | 529.0 | 35.0 | 710.7 | 1,474.2 | 128.8 | 13.6 | 63.3 |
| 大竹市 | 441.0 | 29.3 | 60.5 | 1,275.5 | 263.3 | 9.4 | 215.6 |
| 坂町 | 301.0 | 20.0 | 70.6 | 1,063.4 | 112.7 | 10.9 | 78.9 |
| 世羅町 | 288.0 | 19.1 | 396.6 | 630.3 | 138.7 | 11.1 | 2.2 |
| 海田町 | 261.0 | 17.3 | 53.8 | 797.0 | 169.4 | 8.5 | 35.3 |
| 安芸高田市 | 247.0 | 16.3 | 224.5 | 708.1 | 110.0 | 6.3 | 13.8 |
| 府中町 | 201.0 | 13.3 | 16.2 | 454.2 | 274.6 | 10.5 | 22.5 |
これまでは 2D マトリクスやランキングで議論した。 ここで 地理的にどこ でミスマッチが発生しているかを地図上に重ね合わせて確認する。
なぜ重ね合わせマップか: 「用途地域 (指定)」と「建物実利用」を 同じ図に重ねる ことで、線 (指定境界) と塗り (実態) のズレが地図上に直接見える。

読み取り:

なぜ散布図か: 2 軸の指標 (農地比率 vs 建物密度) で市町を空間配置し、クラスタ的な傾向を見るため。
読み取り:
| 仮説 | 判定 | 根拠 |
|---|---|---|
| H1: 第一種住居指定でも商業利用ビルが ≥10% 存在 | 反証 | 第一種住居 × 商業系 = 0.6% (14/2,463 メッシュ)。 閾値 10% 未満だが 0% ではなく、住居専用地域に商業利用が混入 |
| H2: 工業地域指定の中で農地利用が残る | 部分支持 | 工業系指定 × 農地利用 = 3.1% (50/1,592 メッシュ)。 工業利用が大半だが農地メッシュも観測 |
| H3: ミスマッチ率は市町で異なる (広島市が高い) | 支持 | 市町別ミスマッチ率は最大 48.4% (府中市) / 最小 9.3% (熊野町)、約 5.2 倍の差 |
| H4: 田園住居指定はほぼすべて農地+住宅で利用と一致 | 反証 | 田園住居 × (住居系+農林) = 14.9% (62/415 メッシュ)。 想定通りだが低い |
| H5: 商業/第一種低層 建物密度比 ≥ 5 | 支持 | 商業 279 棟/km² / 第一種低層 37 棟/km² = ×7.5 |
| H6: 旧市街地 (尾道/福山) のミスマッチが顕著 | 反証 | 市町別ランキング (図5) で 福山市 = #7 / 尾道市 = #16。いずれも上位3には未到達 — 旧市街地ではなく、地方都市・小規模都市部のミスマッチがより顕著 |
pd.concat で束ねるだけで県全域分析が可能になる。
これは DoBoX におけるシリーズ統合パターンの典型例gpd.overlay() 厳密交差と比較し、誤差を定量化simplify(50) で 50m 精度に丸める (描画高速化、見た目に影響なし)gpd.overlay() ではなく gpd.sjoin(centroid, polygon) で R-tree インデックス活用dissolve(by="yoto") で 13 ポリゴンに先に集約してから sjoinplt.close() で メモリリーク防止| 関数 | 入力 | 出力 | 使った場面 |
|---|---|---|---|
gpd.read_file('zip://...') | zip 内 GeoJSON | GeoDataFrame | 40 ファイル取込 |
pd.concat([df1, df2, ...]) | 複数 DataFrame | 列を和集合化した 1 DF | シリーズ統合 |
gpd.GeoDataFrame(df, geometry='geometry', crs=...) | concat した DF | GeoDataFrame 復元 | concat 後 geometry 喪失防止 |
gdf.to_crs('EPSG:6671') | GDF (任意 CRS) | JGD2011 III (m単位) | 面積計算前の必須変換 |
gdf.geometry.simplify(N) | GDF | 形状を Nm に丸めた GDF | 描画高速化 |
gdf.geometry.centroid | ポリゴン GDF | 重心点 GDF | sjoin 高速化 |
gpd.sjoin(A, B, predicate='within') | 点 + ポリゴン | 属性結合された A | 建物 × 用途地域 |
gdf.dissolve(by='col') | GDF + キー列 | キー単位で union | 用途地域集約 999→13 |
都市計画基礎調査だけでなく、DoBoX では多数のシリーズが「市町ごとに別 dataset_id」で公開されている。 本記事の手順を一般化すると:
geopandas.read_file() で読み込み、"city" 列で識別pd.concat() で縦に積み上げfillna(0) でスキーマ統一m² で計算このパターンで S系の他データ (例: 性別年齢別人口20件、農地転用状況20件) も県全域分析が可能。