「精密に見える誤差」を捨て、250mメッシュから都市構造を読み直すまで
本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第13回です。
関連記事
▶ 第1回:自治体GISとAIの融合
▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
▶第4回:自治体の人材不足はGIS AIで解決できるのか
▶第5回:e-Stat APIとGISを結合するときの落とし穴
▶第6回:PLATEAU MCPは自治体GISを変えるのか
▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
▶第8回:AIの回答は信用できるのか(検証と説明責任)
▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
▶第11回:PLATEAU建物人口から見る浸水リスク
▶第12回:建物単位人口で見る避難所シミュレーション
▶第14回:PLATEAUを「人口を持つ都市」へ
はじめに
3D都市モデルであるPLATEAUの建物一棟一棟に、人口を配置できないか。
この発想自体は、それほど珍しいものではありません。
建物ごとに人口が分かれば、防災、福祉、公共交通、公園、子育て、施設配置など、自治体施策の分析単位を町丁目やメッシュから建物へ細分化できます。
さらに建物には固有の bldg_id を持たせることができます。将来的には、人流カメラ、災害リスク、公共施設アクセス、空間ID、AIエージェントなどとの連携も考えられます。
しかし、実際に取り組んでみると、問題は「建物へ人口を割り振る計算」ではありませんでした。
本当に難しかったのは、
建物へ配分する前に、人口が都市空間のどこに存在するのかを、どこまで妥当に表現できるか
という問題でした。
今回、岡崎市を対象に試行錯誤を重ね、最終的には用途地域内のPLATEAU建物165,506棟へ人口・世帯・年齢構成を配置しました。
本記事では完成結果を2回に分けて紹介します。
第1回では、その前段階で起きた失敗と設計変更を扱います。
- 住民基本台帳人口を使おうとして、なぜ断念したのか
- e-Stat小地域境界との対応で何が問題になったのか
- なぜ250mメッシュ人口へ切り替えたのか
- なぜ単純な面積按分では不十分だったのか
- なぜ用途地域人口密度を使ったのか
- なぜPLATEAU建物から人口分布を決めてはいけないと判断したのか
今回の試行錯誤で得た最も大きな知見は、PLATEAUの使い方そのものに関わるものでした。
1.最初の発想は「住基人口を建物へ配置する」だった
当初、最も魅力的に見えたのは住民基本台帳データでした。
自治体が保有する住基人口には、町丁目単位で、
- 総人口
- 世帯数
- 5歳階級人口
などの詳細なフレッシュな情報があります。
これをe-Statの小地域境界へ反映し、さらに用途地域や建物容量を考慮してPLATEAU建物へ配分できれば、かなり精細な人口モデルができると考えました。
概念的には次の流れです。
住基町丁目人口
↓
e-Stat小地域境界
↓
用途地域
↓
PLATEAU建物
一見すると合理的です。
ところが、実データを確認すると大きな問題がありました。
2.住基町丁目とe-Stat小地域境界は、単純には対応しない
住基データとe-Stat小地域は、どちらも町丁目に見えます。
しかし、実際には同じ空間単位とは限りません。
確認を進めると、
- 作成時期と作成元が異なるため同じ町名でも境界が異なる
- 一つの住基町丁目が複数のエリアで分割されている
- 分割規則が一意に復元できない
- 名称だけでは対応できない
- 親町名を使っても厳密な対応関係を保証できない
といった問題が出てきました。
もちろん、GIS上で面積按分することはできます。
しかし、それは「計算できる」だけです。
例えば、ある住基町丁目人口1,000人を、重なり面積に応じてe-Stat境界へ配分すれば、数値としてはきれいに保存できます。
住基人口 1,000人
↓
面積比 60%
面積比 40%
↓
600人
400人
人口合計も一致します。
GIS処理も成功します。
しかし、実際の居住分布がその面積比に従う保証はありません。
山林、工場、大規模施設、河川、農地、住宅地が混在していれば、単純な面積比は容易に現実から外れます。
ここで一つの判断をしました。
対応関係を説明できない住基データは、一度捨てる。
高精度な元データを持っているからといって、それを無理に使うことが高精度な分析につながるとは限りません。
むしろ危険なのは、
細かい数値が並ぶことで、誤差まで精密に見えてしまうこと
です。
今回の最初の大きな転換点でした。
3.250mメッシュ人口へ切り替える
そこで人口の基礎単位を250mメッシュへ切り替えました。
250mメッシュには明確な利点があります。
町丁目のような行政境界ではなく、一定サイズの空間単位で人口分布を保持できます。そのため、経年変化を追えます。
特に今回重視したのは、
狭い範囲の人口分布を壊さずに、その内部をさらに都市構造で分解できること
でした。
概念的には、
岡崎市全体
↓
250m人口メッシュ
↓
各メッシュ内部の都市構造
です。
しかし、ここでも次の問題が出ます。
250mメッシュの中には、
- 第一種低層住居専用地域
- 第一種住居地域
- 商業地域
- 工業地域
- 工業専用地域
- 用途地域外
などが混在します。
メッシュ人口を単純に建物へ配るだけでは、都市構造を無視することになります。
4.単純面積按分では、工業専用地域にも人口が流れる
例えば、ある250mメッシュに100人が存在するとします。
その内部が、
住宅系用途地域 40%
工業地域 30%
工業専用地域 20%
用途地域外 10%
だったとします。
単純面積按分なら、
住宅系 40人
工業地域 30人
工業専用 20人
用途地域外 10人
です。
計算としては正しい。
しかし、都市の実態として妥当でしょうか。
工業専用地域は、住宅系用途地域と同じ人口密度ではありません。
さらにPLATEAU建物を直接使うと、別の問題が起きます。
工業専用地域に巨大な建物が存在した場合、
建物面積が大きいから人口も多い
という誤った配分が起こり得ます。
これは今回のモデルで避けたかった問題です。
そこで考え方を変えました。
図1 用途地域人口密度ウェイトによる250mメッシュ人口の再配分イメージ

5.「建物が大きい場所」ではなく「人口密度が高い都市空間」を先に決める
採用した考え方は、
250mメッシュ人口を保持したまま、用途地域で分割し、用途地域ごとの人口密度をウェイトとして再配分する
というものです。
まず岡崎市全体を対象として用途地域別の人口密度特性を推計し、用途地域人口密度係数を作成しておきます。
処理イメージは次のとおりです。
250m人口メッシュ
↓
用途地域とIntersect
↓
メッシュ内部を用途地域別の小片へ分割
↓
用途地域人口密度ウェイト付与
↓
メッシュ人口を再配分
重要なのは、岡崎市全体を一括して用途地域別に配分しないことです。
あくまで250mメッシュ単位です。
つまり、
メッシュAの100人
は、メッシュA内部の都市構造に従って配分します。
隣のメッシュBへは移しません。
図2 再配分後の親片人口からPLATEAU建物へ落とすイメージ図

この設計により、250mメッシュが持っていた局所的な人口分布を維持できます。
6.用途地域外も消さない
もう一つ重要な判断がありました。
用途地域外をゼロにしないことです。
岡崎市のような都市では、市域全体が用途地域に覆われているわけではありません。
用途地域外にも当然、人は住んでいます。
そのため、
第一種低層住居専用地域
第一種中高層住居専用地域
第二種中高層住居専用地域
第一種住居地域
第二種住居地域
準住居地域
近隣商業地域
商業地域
準工業地域
工業地域
工業専用地域
用途地域外
を同じ分析体系の中で扱いました。
実際の再配分結果は次のようになりました。
| 用途区分 | 再配分人口 |
|---|---|
| 第一種低層住居専用地域 | 18,247.386 |
| 第一種中高層住居専用地域 | 57,922.306 |
| 第二種中高層住居専用地域 | 7,124.209 |
| 第一種住居地域 | 125,440.272 |
| 第二種住居地域 | 1,739.295 |
| 準住居地域 | 7,268.654 |
| 近隣商業地域 | 22,092.195 |
| 商業地域 | 13,203.414 |
| 準工業地域 | 51,650.942 |
| 工業地域 | 29,638.855 |
| 工業専用地域 | 264.465 |
| 用途地域外 | 48,667.196 |
この結果で注目したのは、工業専用地域です。
人口は約264人に抑えられています。
一方、用途地域外には約48,667人が残りました。
これは重要でした。
単純に「用途地域内=都市人口」「用途地域外=人口なし」としていないからです。
7.250mメッシュを残したことが、空間情報を守った
今回、実際にGIS上で人口ウェイトを確認すると、250mメッシュ単位の分布はかなり空間特性を表現していました。
ここで分かったのは、用途地域人口密度だけが効いているのではないということです。
重要なのは、
250mメッシュという狭い単位の人口分布を先に保持していたこと
でした。
例えば同じ第一種住居地域でも、市内全域で同じ人口密度ではありません。
中心部の第一種住居地域と、郊外の第一種住居地域では状況が違います。
今回のモデルでは、
250mメッシュ人口
×
メッシュ内部の用途地域構成
×
用途地域人口密度ウェイト
となります。
そのため、用途地域という都市計画情報を使いながら、元の局所的人口分布を完全には失いません。
私はここが今回のモデルの重要なポイントだと考えています。
8.この段階で、岡崎市全体の政策基盤ができていた
当初の目的は、PLATEAU建物への人口配置でした。
しかし途中で気付きました。
PLATEAUへ配分する前の人口データ自体が、岡崎市全体の政策分析基盤になる。
PLATEAU建物への最終配分は、用途地域内を中心とした詳細分析です。
一方、その前段階では、
- 用途地域内
- 用途地域外
の双方を保持しています。
つまり全市的な施策では、PLATEAU建物が整備されていない、用途地域外への建物へ無理に落とす必要はありません。
例えば、
防災
人口
×
洪水浸水想定
×
避難所距離
公共交通
高齢人口
×
バス停徒歩圏
×
交通空白
公園政策
年少人口
×
公園徒歩圏
×
遊具配置
福祉
75歳以上人口
×
医療アクセス
×
地域包括支援圏域
公共施設再編
人口構成
×
施設配置
×
将来人口
といった分析に展開できます。
つまり、今回の成果は二層構造になります。
【岡崎市全体】
250mメッシュ
×
用途地域人口密度
↓
全市政策分析基盤
【詳細地区】
用途地域内人口
×
PLATEAU建物
↓
建物単位政策分析基盤
この使い分けは、今後かなり重要になると考えています。
9.そしてPLATEAU建物へ人口を配置した
ここまで人口空間を整理した後、初めてPLATEAU建物を使いました。
ここでの原則は明確です。
PLATEAU建物から人口分布を決めない。
PLATEAUは人口の発生源ではありません。
建物が大きいから人口が多いとは限りません。
工場、倉庫、商業施設、大規模公共施設もあります。
そこで、
250mメッシュ
↓
用途地域人口密度ウェイト
↓
親片人口を確定
↓
その後
PLATEAU建物へ配置
という順序を守りました。
この順序により、仮に工業専用地域に巨大なPLATEAU建物が存在しても、上流でその空間に与えられた人口以上を吸収することはありません。
これは、建物面積から直接人口を推定する方式との大きな違いです。
10.PLATEAUの欠落は「エラー」なのか
建物配分を進めると、用途地域内で人口はあるのにPLATEAU建物へ配置できない場所が出てきました。
当初は処理ミスも疑いました。
しかし、ArcGIS Proで可視化して確認すると、興味深い地点が見つかりました。
約46人の未配置
人口親片は存在するが、対応するPLATEAU建物がない。
約102人の未配置
今回確認した中で最大級でした。
地図と現況を比較すると、区画整理等によるデータ時点差が疑われる場所でした。
約35人の未配置
人口は存在するが、PLATEAU建物整備が十分ではないと考えられる場所でした。
ここで重要な判断をしました。
これらの人口を、同じ250mメッシュ内の別建物へ移すことはできます。
近隣建物へ吸収することもできます。
しかし、それをすると何が起こるでしょうか。
PLATEAUの未整備や時点差を、人口配分モデルが勝手に隠してしまう。
そこで、未配置人口は残しました。
最終的に用途地域内人口約334,592人のうち、
- 建物配置人口:約333,631人
- 未配置人口:約961人
となりました。
配置率は約99.71%です。
100%ではありません。
しかし、今回の検証を通じて私は、
100%配置しないことの方が、モデルとして誠実である
と判断しました。
11.AIエージェントは何度も間違えた
今回の分析では、AIエージェントとCLIを活用しました。
しかし、一直線に成功したわけではありません。
実際には、
- 存在しないフィールド名を前提にする
PARENT_PART_IDとPARENT_PART_KEYを混同する- 異なる世代の中間成果を接続しようとする
- 2,483親片のキー体系を誤認する
- 60年齢列の構造を誤解する
- STEP5成果に保持されていない属性を要求する
といった問題が何度も起きました。
例えば、
STOP_REASON:
建物側 PARENT_PART_KEY 不存在
別の段階では、
STOP_REASON:
親片キー集合不一致
さらに、
STOP_REASON:
完全一致する実在属性組合せなし
そして年齢人口では、
STOP_REASON:
5歳階級フィールドの年齢範囲を一意判定不能
と停止しました。
一見すると、AIを使うことでかえって手間が増えているようにも見えます。
しかし、ここで重要だったのが停止規約と中間成果でした。
12.「失敗しないAI」ではなく「壊さないAI」を目指す
今回、最も役立ったルールは、AIに自由に続行させないことでした。
例えば、
必須フィールドがなければ停止
キー集合が一致しなければ停止
人口保存差が許容値を超えたら停止
代替成果物を勝手に探索しない
OBJECTIDへフォールバックしない
同名成果物を別名で増殖させない
成功済み中間成果を残す
停止後はLAST_SUCCESS_OUTPUTから再開
といった規約です。
その結果、処理は何度も止まりました。
しかし、止まったからこそ、
- 異なるキー体系
- 中間成果の属性不足
- PLATEAU欠落
- 年齢列定義
- 用途地域外混入
を発見できました。
これは以前から私が検証してきた「AIの回答をどう監査するか」という問題と直結します。
今回得た知見は、
複雑なGIS分析では、AIに正解を一発で出させることより、誤った前提で先へ進ませないことの方が重要
というものでした。
そして、一度正しい処理手順を中間成果と監査規約として固定できれば、次回からは同じ手順を再利用できます。
ここにAIエージェント活用の実務的な価値があります。
13.第1回の結論
今回の試行錯誤から、PLATEAUへの人口配置について次の考え方に到達しました。
1.高精度な元データでも、空間対応を説明できなければ使わない
住基人口は詳細です。
しかしe-Stat境界との対応が保証できなければ、無理な配分は「精密に見える誤差」を作ります。
2.人口分布はPLATEAU建物から決めない
建物面積や容積だけで人口を決めると、巨大工場や倉庫が人口を吸収する可能性があります。
3.250mメッシュの局所的人口分布を保持する
全市一括配分ではなく、狭い空間単位を維持することで地域差を残します。
4.用途地域は人口分布を補正する都市構造情報として使う
住宅系、商業系、工業系、用途地域外の違いを人口密度ウェイトへ反映します。
5.PLATEAU未整備を人口モデルで隠さない
配置できない人口は周辺建物へ吸収せず、未配置差分として保持します。
6.AIエージェントには停止規約と中間成果が必要
成功プロンプトよりも、誤ったときに壊さない設計が重要でした。
次回:165,506棟へ人口・世帯・年齢構成を配置する
第2回では、今回作成した人口空間基盤から、実際にPLATEAU建物へ人口を配置した工程を扱います。
最終成果は、
- 用途地域内総人口:約334,592人
- 建物配置人口:約333,631人
- 未配置人口:約961人
- 総世帯数:約139,893世帯
- 建物配置世帯:約139,524世帯
- 最終建物ポリゴン:165,506棟
- 5歳階級属性:60列
- 用途地域外人口混入:0
- 用途地域外建物混入:0
- 最終監査:PASS
となりました。
さらに、
- 年少人口
- 生産年齢人口
- 65歳以上人口
- 75歳以上人口
を建物単位で保持しています。
しかし、第2回の本当のテーマは「人口を建物へ載せた」ことだけではありません。
各建物には bldg_id があります。
このIDを軸にすれば、
建物人口
×
人流カメラ
×
防災
×
公共交通
×
公園
×
福祉
×
空間ID
という展開が可能になります。
さらに、PLATEAU MCPとArcGIS MCPを組み合わせれば、将来的にはAIエージェントに、
「75歳以上人口が多く、避難所から遠く、浸水リスクが高い建物を抽出して」
「子ども人口が多いのに、公園アクセスが弱い建物群を地図化して」
「居住人口は少ないが、人流カメラで昼間人口が多い地域を比較して」
と指示する世界も見えてきます。
PLATEAUを3Dで見るためのデータから、自治体施策を横断する共通空間基盤へ。
bldg_idが生み出す部門間データ連携の可能性
建物単位の人口推計で重要なのは、単に「各建物に何人住んでいるか」を推計できることだけではありません。
PLATEAU建物には、建物を識別するための bldg_id を持たせることができます。この建物IDを共通キーとして活用できれば、自治体内部に分散している複数部門の情報を、建物単位で結び付けられる可能性があります。
例えば、
- 福祉部門が保有する要援護者情報
- 防災部門が保有する避難支援情報
- 都市計画部門が保有する浸水想定区域や土地利用情報
- 建築部門が保有する建物属性情報
- 固定資産・家屋部門が保有する建物関連情報
などです。
ここで重要なのは、個人情報そのものを他部門へ渡す必要はないという点です。
例えば福祉部門側で、
「この建物には要援護者が存在する」
という情報を、氏名・住所・生年月日などの個人識別情報を除いたうえで bldg_id に紐付けます。
一方、都市計画・防災部門では、
「この建物は浸水深3m以上の区域に含まれる」
「この建物は土砂災害警戒区域に含まれる」
「指定避難所まで一定距離以上離れている」
といった空間リスクを、同じ bldg_id に紐付けます。
すると、個人情報を直接共有しなくても、
「要援護者が存在し、かつ浸水リスクが高い建物」
「高齢人口が多く、避難所から遠い建物」
「人口集中があり、複数の災害リスクが重なる建物」
といった政策判断に必要な対象を、建物単位で抽出できる可能性があります。
これは、従来の自治体GISで課題となってきた「部門ごとにデータが分断されている状態」を変える重要な考え方です。
bldg_id は単なる建物番号ではありません。
福祉、防災、都市計画、建築、インフラなど、異なる部門が保有するデータを、個人情報保護に配慮しながら建物という共通空間単位で接続するための「連携キー」になり得ます。
つまり、建物人口モデルの本当の価値は、人口を細かく推計することだけではありません。
「人口統計を建物単位へ落とし、bldg_idを介して自治体内部の分散データを安全に接続できる基盤をつくること」
にあります。
この意味で bldg_id は、自治体の縦割りを越えたデータ連携を実現するための切り札になり得ます。
用途地域外を「捨てない」ことが、市域全体の政策判断を支える
本モデルでは、用途地域人口密度ウェイトによる人口再配分の対象範囲を明確に管理し、用途地域内の分析結果に用途地域外の建物や人口が混入しないようにしています。
しかし、これは用途地域外を分析対象から削除するという意味ではありません。
むしろ重要なのは、用途地域外を OUTSIDE 等の明示的な区分として識別し、用途地域内と同じ分析体系の中で保持し続けることです。
なぜなら、自治体の政策課題は用途地域の境界で終わらないからです。
例えば防災分野を考えると
河川氾濫、土砂災害、地震、孤立集落、避難所アクセスといった課題は、市街化された用途地域内だけで発生するものではありません。用途地域外には、山間部の集落、農村集落、市街地縁辺部の住宅地などが存在し、高齢者や要援護者が居住している場合もあります。
仮に用途地域内だけを分析対象とした場合、
「浸水想定区域内に何人いるか」
「土砂災害リスクの高い場所に高齢者がどれだけ居住しているか」
「避難所まで遠い住民がどこに集中しているか」
といった分析で、市域の一部が最初から見えなくなります。
特に防災では、人口が少ない地域ほど行政支援の優先度が低いとは限りません。
例えば、用途地域外の山間集落に20人しか居住していなくても、その多くが高齢者で、最寄り避難所まで遠く、さらに豪雨時に道路が寸断される可能性があるなら、その20人は極めて重要な政策対象となります。
用途地域外でデータを保持していれば、
「人口は少ないが、土砂災害リスクが高く、避難所アクセスも悪い建物群」
「高齢人口が集中し、災害時に孤立する可能性がある集落」
「河川氾濫時に避難経路が限定される市街地縁辺部」
といった対象を、市域全体から抽出できます。
公共交通計画でも同様です。
路線バス、地域バス、デマンド交通、乗合タクシーなどの必要性は、用途地域内の人口密度だけでは判断できません。
例えば用途地域外に、
「高齢者が一定数居住している」
「鉄道駅から遠い」
「既存バス停まで800m以上ある」
「自家用車を利用しにくい世帯が存在する」
「医療機関や商業施設へのアクセスが悪い」
といった条件が重なる地域があれば、そこはデマンド交通や地域交通の重要な候補地となります。
人口密度だけを見れば需要が小さく見える地域でも、
高齢人口 × バス停距離 × 医療機関アクセス × 地形条件
を重ねることで、行政が支援すべき「移動困難地域」が見えてきます。
ここで用途地域外を削除してしまえば、まさに地域公共交通政策が対象とすべき住民が分析から消えてしまいます。
さらに重要なのは、市街地と郊外・農村・山間部を分断せず、同じ分析体系で比較できることです。
例えば市域全体について、
- 建物人口
- 5歳階級人口
- 高齢者人口
- 要援護者の有無
- 浸水深
- 土砂災害リスク
- 避難所までの距離
- バス停までの距離
- 医療機関までのアクセス
bldg_id
といった情報を共通構造で保持できれば、用途地域内外をまたいだ政策分析が可能になります。
用途地域外は「分析できなかった残り」ではありません。
用途地域人口密度ウェイトを適用できない領域として明確に区別しながら、市域全体の政策判断のために保持し続けるべき重要な分析対象です。
用途地域内の精密な人口再配分と、用途地域外を含む市域全体の俯瞰。
この二つを同時に成立させることで、建物人口モデルは単なる人口推計から、防災、福祉、公共交通、都市計画を横断する自治体政策基盤へ発展する。
次回は、165,506棟への人口配置と、その先にある bldg_id、空間ID、人流、MCP連携まで紹介します。
関連記事
▶ 第1回:自治体GISとAIの融合
▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
▶第4回:自治体の人材不足はGIS AIで解決できるのか
▶第5回:e-Stat APIとGISを結合するときの落とし穴
▶第6回:PLATEAU MCPは自治体GISを変えるのか
▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
▶第8回:AIの回答は信用できるのか(検証と説明責任)
▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
▶第11回:PLATEAU建物人口から見る浸水リスク
▶第12回:建物単位人口で見る避難所シミュレーション
▶第14回:PLATEAUを「人口を持つ都市」へ

コメントを残す