カテゴリー: 自治体GIS・データ活用

GIS(地理情報システム)を活用した自治体業務の改善事例や実証結果を掲載しています。

ArcGIS、統計分析、生成AIを組み合わせ、データに基づく意思決定や業務効率化を支援する取り組みを紹介しています。

  • PLATEAUを「人口を持つ都市」へ

    ― 公開データから岡崎市約21万棟の建物人口モデルを構築―

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第14回です。

    関連記事

    ▶ 第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回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する

    前回は、PLATEAUの建物データに人口を配置する試みの中で、単純な「町丁目人口→建物配分」では、都市構造を十分に表現できないことを紹介しました。

    建物が大きいからといって、そこに多くの人が住んでいるとは限りません。

    大規模な工場、物流施設、商業施設、学校、病院。

    都市には、巨大であっても居住人口をほとんど持たない建物が数多く存在します。

    一方で、大規模マンションのように、建物規模そのものが人口収容力を強く表すケースもあります。

    つまり、

    大きな建物への人口集中を抑えればよい

    わけでも、

    建物容量に比例して人口を配ればよい

    わけでもありません。

    この問題に向き合うため、岡崎市を対象として、250mメッシュ人口、用途地域、PLATEAU建物を組み合わせた建物単位人口モデルの構築を進めました。

    そして今回、用途地域内だけでなく用途地域外まで含め、最終的に、

    岡崎市全域213,884棟

    を対象とする建物単位人口モデルが完成しました。

    この記事では、完成した結果だけではなく、

    • なぜ町丁目人口では問題が起きたのか
    • なぜ250mメッシュ人口へ切り替えたのか
    • 用途地域人口密度ウェイトをどのように作ったのか
    • なぜPLATEAU建物を人口分布の基準にしなかったのか
    • なぜLOG方式と容量比例方式を組み合わせたのか
    • 用途地域外人口をなぜ捨てなかったのか
    • 最終的に人口保存をどこまで確認できたのか

    という、モデル設計の過程を紹介します。


    1.最初の発想は「町丁目人口を建物へ配る」だった

    建物単位人口を作ろうとすると、最初に思いつくのは比較的単純です。

    町丁目人口

    町丁目内の建物を抽出

    建物面積・高さ・延床規模を推定

    建物容量に応じて人口配分

    一見すると合理的です。

    町丁目人口という公的統計があり、PLATEAUには建物形状があります。

    両者を組み合わせれば、町丁目人口を建物単位へ細分化できるように見えます。

    実際、初期モデルではこの考え方を採用しました。

    しかし、実際の都市空間に適用すると、問題が見えてきました。

    2.大規模建物が町丁目人口を吸収する

    象徴的だったのが、工業地域に立地する大規模商業施設です。

    町丁目人口を建物容量で直接配分すると、巨大な建物は非常に大きな配分力を持ちます。

    その結果、

    大規模商業施設が、その町丁目の人口を大量に吸収する

    という現象が起きました。

    モデル上は計算が合っています。

    しかし、都市の実態とは合いません。

    問題はPLATEAUではありません。

    建物面積や高さの計算ミスでもありません。

    本質的な問題は、

    人口原資の空間単位が広すぎた

    ことでした。

    町丁目全体の人口を原資にしてしまうと、町丁目内に巨大建物が一つ存在するだけで、その建物が広い範囲の人口を吸収できます。

    ここでモデルの考え方を変更しました。

    3.人口原資を250mメッシュへ戻す

    そこで採用したのが、250mメッシュ人口です。

    基本構造は次のとおりです。

    250m人口メッシュ

    用途地域とIntersect

    メッシュ内部を用途地域別の小片へ分割

    用途地域人口密度ウェイト

    メッシュ人口を再配分

    重要なのは、

    人口を町丁目全体から持ってこない

    ことです。

    250mメッシュに100人いるなら、その100人は原則としてそのメッシュ内部で扱います。

    隣のメッシュに巨大建物があっても、その建物へ人口を移しません。

    これにより、大規模建物が広域人口を吸収する構造を防ぐことができます。

    下図の右マップは、工業専用地域にある三菱自動車工業岡崎製作所を示しています。用途地域内で最大容積を持つ建物です。

    図1 都市計画区域内で最大容積の建物にあるメッシュ人口

    その建物にインターセクトするメッシュ内の人口は、ほぼ0人なので建物の容積が大きかろうが、0人しか配置されません。

    4.用途地域人口密度は「その場」で決めない

    ここで、もう一つ重要な判断を行いました。

    一つの250mメッシュが複数の用途地域にまたがる場合、単純な面積按分では不十分です。

    例えば、同じ面積でも、

    • 第一種住居地域
    • 商業地域
    • 工業地域
    • 工業専用地域

    では、一般に人口密度特性が異なります。

    そこで、まず岡崎市全体を使って、用途地域別人口密度を算出しました。

    図2 岡崎市全体で用途地域別人口密度ウェイトを作成する流れ

    図2の左側は、岡崎市全体の250mメッシュ人口分布と、そこから算出した用途地域別人口密度パラメータです。

    今回のモデルでは、まず岡崎市全体を対象として用途地域別人口密度を算出しました。

    例えば、実際に使用した人口密度は、

    • 第一種低層住居専用地域:約5,349人/km²
    • 第一種中高層住居専用地域:約6,503人/km²
    • 第二種中高層住居専用地域:約7,082人/km²
    • 第一種住居地域:約5,838人/km²
    • 第二種住居地域:約3,788人/km²
    • 近隣商業地域:約6,067人/km²
    • 商業地域:約5,668人/km²
    • 準工業地域:約5,225人/km²
    • 工業地域:約4,107人/km²
    • 工業専用地域:約219人/km²
    • 用途地域外:約221人/km²

    です。

    ここで重要なのは、この人口密度を使って新しい人口を作るわけではないという点です。

    また、

    「この250mメッシュには何人いるか」

    を決めるものでもありません。

    250mメッシュ人口そのものは、元データの値を保持します。

    さらに、

    「この建物には何人住んでいるか」

    を直接決めるものでもありません。

    5.用途地域別人口密度の役割

    用途地域別人口密度の役割は、

    同じ250mメッシュの内部に複数の用途地域が存在するとき、元のメッシュ人口をどの親片へ相対的に多く配るか

    を決めることです。

    図2の右側は、その具体的な適用例です。

    例えば、一つの250mメッシュが、

    • 第一種住居地域
    • 第二種住居地域
    • 近隣商業地域

    の3つの親片に分かれている場合、それぞれの親片に対して、岡崎市全体であらかじめ算出した用途地域別人口密度を割り当てます。

    このとき、その250mメッシュごとに新しい人口密度係数を作るわけではありません。

    使用するのは、岡崎市全体で一度だけ算出した共通の人口密度パラメータです。

    次に、各親片について、

    親片面積 × 用途地域別人口密度

    を計算します。

    これにより、各親片の「人口の配分力」に相当する値を求めます。

    例えば図2の右図の例では、

    • 第一種住居地域:約105.88
    • 第二種住居地域:約90.83
    • 近隣商業地域:約128.46

    となります。

    ただし、この値も人口そのものではありません。

    あくまで、同じ250mメッシュ内部で人口をどう分けるかを決めるための相対値です。

    そこで次に、これらの値をメッシュ内で合計し、各親片の構成比を求めます。

    図2の右図の例では、

    • 第一種住居地域:約31.49%
    • 第二種住居地域:約27.02%
    • 近隣商業地域:約38.21%

    となります。

    これがメッシュ内での正規化です。

    そして最後に、元の250mメッシュ人口を、この構成比に応じて各親片へ再配分します。

    つまり今回の処理は、

    岡崎市全体で用途地域別人口密度を一度だけ算出

    各250mメッシュ内の用途地域小片へ、その密度を割り当て

    親片面積 × 用途地域別人口密度

    同じメッシュ内で正規化

    元の250mメッシュ人口を親片へ再配分

    という流れです。

    この設計のポイントは、

    市全体では共通した用途地域別人口密度を使いながら、人口そのものは250mメッシュ内部に保持する

    ことです。

    例えば、商業地域の人口密度が高いからといって、市内の別の250mメッシュから人口が移動してくるわけではありません。

    逆に、工業系用途地域に巨大な建物が存在していても、その場所の250mメッシュ人口が少なければ、上流で保持された局所人口を超えて人口が流入することはありません。

    この「全市共通の人口密度パラメータ」と「250mメッシュ内部での正規化」を分けたことが、今回の人口再配分モデルの重要な特徴です。

    図2で示した処理を、実際の250mメッシュに適用した例が次の図3です。

    図3 全市用途地域別人口密度を用いた250mメッシュ人口480人の親片再配分と建物人口配置の実データ例

    このメッシュには480人が存在し、内部は5種類の用途地域に分かれています。そこで、岡崎市全体であらかじめ算出した用途地域別人口密度を各小片へ割り当て、**「小片面積 × 用途地域別人口密度」**による相対値を求めたうえで、メッシュ内で正規化しました。

    その結果、元の480人はメッシュ外へ移動することなく、5つの親片へ再配分されます。

    さらに下段では、確定した親片人口をPLATEAU建物へ配置した結果を示しています。

    ここで重要なのは、用途地域別人口密度が建物人口を直接決めているわけではないという点です。全市共通の人口密度は、あくまで250mメッシュ内部で親片人口を決めるために使い、その後、確定した親片人口を親片内の建物へ配分します。

    具体的に式を用いて示します。

    ある250mメッシュ mmm の内部に、用途地域との重ね合わせによって生じた小片 iii があるとします。小片 iii の面積を AmiA_{mi}Ami​、その小片が属する用途地域区分を y(i)y(i)y(i)、用途地域区分 y(i)y(i)y(i) の全市人口密度を Dy(i)D_{y(i)}Dy(i)​ とします。

    まず、各小片の人口配分に用いる基礎値を、Rmi=Ami×Dy(i)R_{mi}=A_{mi}\times D_{y(i)}Rmi​=Ami​×Dy(i)​

    として求めます。

    ここで、RmiR_{mi}Rmi​ は250mメッシュ mmm 内の小片 iii に対する人口配分の基礎値です。つまり、面積が大きく、かつ全市的に人口密度の高い用途地域に属する小片ほど、大きな値を持ちます。

    次に、この基礎値を250mメッシュ mmm の内部だけで正規化し、小片 iii の配分比率 WmiW_{mi}Wmi​ を、Wmi=RmijmRmjW_{mi} = \frac{R_{mi}} {\sum_{j\in m}R_{mj}}Wmi​=∑j∈m​Rmj​Rmi​​

    として求めます。

    ここで、分母は同じ250mメッシュ mmm 内に存在するすべての小片 jjj の基礎値の合計です。そのため、imWmi=1\sum_{i\in m}W_{mi}=1i∈m∑​Wmi​=1

    となり、元のメッシュ人口がメッシュ外へ流出することはありません。

    最後に、元の250mメッシュ mmm の人口を PmP_mPm​ とすると、小片 iii へ配分される人口 PmiP_{mi}Pmi​ は、Pmi=Pm×WmiP_{mi}=P_m\times W_{mi}Pmi​=Pm​×Wmi​

    で求めます。

    この方法により、元の250mメッシュ人口総数を維持したまま、用途地域ごとの全市的な人口密度差を反映して、メッシュ内部の各用途地域小片へ人口を再配分できます。

    たとえば、同じ250mメッシュ内に住居系用途地域と工業系用途地域が混在している場合でも、単純な面積按分ではなく、用途地域ごとの人口密度差を反映できます。そのため、工業系用途地域に大規模な建物が存在する場合でも、上流段階の人口配分で人口が過大に割り当てられることを抑制できます。

    その後、こうして確定した各用途地域小片の人口を親片人口として固定し、PLATEAU建物は人口分布を新たに決める基準ではなく、確定済み親片人口を建物へ配分するための受け皿として使用します。


    6.PLATEAU建物は人口分布を決める基準ではない

    このモデルで最も重要な考え方の一つがここです。

    PLATEAU建物は、

    人口分布を決める基準ではありません。

    建物は、上流で確定した人口を受ける「器」です。

    処理順序は、

    250mメッシュ人口

    用途地域人口密度ウェイト

    親片人口を確定

    PLATEAU建物へ配分

    です。

    逆ではありません。

    巨大建物がある

    そこへ人口を集める

    とはしません。

    図4:250mメッシュ内に再配分された親片人口と建物


    実データで起きた誤配分――巨大商業施設が「人口1位」になった

    この問題は、理論上の懸念ではありません。

    実際の試行錯誤では、町丁目人口を基礎として建物容量に応じた再配置を行ったところ、工業系用途地域に存在する巨大商業施設が、建物人口で市内1位となる結果が発生しました。

    原因は明確でした。

    町丁目という比較的広い単位が持つ人口を建物へ配分すると、巨大な建物フットプリントを持つ施設が非常に大きな「受け皿」として評価されます。

    その結果、本来は商業施設である巨大建物が、周辺の町丁目人口を過剰に吸収しました。

    ここで重要なのは、PLATEAU建物形状が間違っていたわけではないという点です。

    建物は正しく大きい。

    問題は、

    「広い人口集計単位の人口を、大きな建物へ配った」

    という人口配分モデル側にありました。

    そこで新しいモデルでは、先に250mメッシュ人口を保持しました。

    この巨大商業施設が存在する場所では、対応する250mメッシュ人口そのものが極めて少ないことが確認できます。

    したがって、建物がどれほど巨大であっても、その建物へ配分できる人口は、上流で確定した局所人口を超えません。

    巨大建物だから人口が多いのではない。

    その場所に存在する人口が少なければ、巨大建物にも少数しか配られない。

    この違いが、町丁目人口ベース方式から250mメッシュ人口ベース方式へ切り替えた大きな理由の一つでした。

    図5 巨大商業施設で確認された人口誤配分と250mメッシュ方式による抑制

    人口の流れを「メッシュ → 親片 → 建物」に固定した

    今回のモデルでは、人口の流れを次のように固定しました。

    250m人口メッシュ

    用途地域人口密度ウェイト

    用途地域別親片人口

    親片内PLATEAU建物

    建物人口

    この構造により、建物は上流の人口を勝手に奪えません。

    例えば、ある親片人口が70人なら、その親片内の建物へ配る人口総数は70人です。

    巨大建物が存在しても、

    70人

    建物へ配分

    合計70人

    です。

    建物容量が大きいからといって、隣の親片や別の250mメッシュから人口を吸収させません。

    これは単なる計算上の制約ではありません。

    元の人口統計が持っていた局所的な空間情報を守るための制約

    です。


    7.建物容量をどう作るか

    親片人口が確定した後、次に必要なのが建物ごとの人口配分比率です。

    本モデルでは、建物容量の基礎値 CAPACITY_BASE を次の既存規則で算定しました。

    SUM_FLOOR_AREA がある

    CAPACITY_BASE = SUM_FLOOR_AREA

    SUM_FLOOR_AREA がない

    CAPACITY_BASE = SUM_BUILD_AREA

    つまり、延床規模を取得できる建物では延床規模を使い、取得できない場合は建物面積へフォールバックします。

    図6 建物容量算定イメージ

    ここで使用する主な属性は、

    • SUM_BUILD_AREA
    • SUM_FLOOR_AREA
    • HEIGHT_FINAL
    • FIRST_FLOOR_EST
    • CAPACITY_BASE

    です。

    最終成果では、これらの属性も建物人口とともに保持しました。


    8.単純容量比例でも、単純LOGでもない

    建物人口配分では、和泉市での検証経験が重要な役割を果たしました。

    単純な容量比例方式では、大きな建物が強い配分力を持ちます。

    これは大規模マンションでは合理的です。

    しかし、小規模建物が多数存在する地域では、小さな建物への人口配分が極端に小さくなることがあります。

    一方、すべての建物へLOG変換を適用すると、今度は大規模マンションの人口収容力まで薄めてしまいます。

    そこで採用したのが、グループ内中央値を基準とするハイブリッド方式です。

    図7 容量比例方式とLOG方式の違い


    この方式の目的は、巨大建物を一律に弱めることではありません。

    正確には、

    小規模建物側ではLOG変換によって容量差を圧縮し、小規模住宅にも人口が残るようにする。

    一方で、

    中央値を超える大規模建物では生容量を使い、大規模マンション等が本来持つ人口収容力を維持する。

    という考え方です。

    つまり、

    小さい建物を潰さない。

    しかし、本当に人口を受けるべき大きな建物も薄めない。

    この両立を狙っています

    9.用途地域内165,506棟への人口配置

    用途地域内では、用途地域人口密度ウェイトによって再配分した親片人口を、PLATEAU建物へ配分しました。

    最終的に、

    165,506棟

    の用途地域内建物へ人口・世帯・年齢構成を配置しました。

    この段階で、

    • 用途地域外混入0
    • 建物人口保存
    • 世帯保存
    • 年齢列保存

    を確認しました。

    用途地域内で建物へ配置できなかった人口は、

    960.964324人

    です。

    この人口は近隣建物へ吸収していません。

    未配置差分として保持しました。


    10.用途地域外を「捨てない」

    当初、用途地域外は未配置差分として保持する考え方もありました。

    しかし、実際の建物分布を確認すると、用途地域外にもPLATEAU建物が広く存在していました。

    ここで重要な判断をしました。

    用途地域外も同じ分析体系の中で保持し続ける。

    なぜなら、防災や公共交通は用途地域境界で終わらないからです。

    例えば、

    • 河川沿いの集落
    • 市街化調整区域の住宅
    • 山間部の居住地
    • 幹線道路沿いの建物
    • 郊外施設周辺
    • 災害リスク区域

    は、用途地域外にも存在します。

    用途地域内だけで人口モデルを完成させると、市域全体を俯瞰する政策分析で大きな空白が生まれます。

    11.既存途中成果を追跡すると、48,547棟の行方が分かった

    用途地域処理で未割当となった建物は、

    48,547棟

    でした。

    ここで新しい空間処理を作るのではなく、既存の途中成果を調査しました。

    その結果、処理系列が明確になりました。

    用途地域処理未割当
    48,547棟

    250mメッシュ確定割当
    48,378棟

    未割当
    169棟

    そして、

    48,547 − 48,378 = 169

    が完全一致しました。

    さらに、元未割当集合と確定割当集合の差集合は、169棟の未割当成果と完全一致しました。

    これは単なる件数一致ではありません。

    bldg_id による集合関係で確認したものです。


    12.用途地域外48,378棟を250mメッシュへ接続

    48,378棟は、

    1,518の250mメッシュ

    へ確定割当されていました。

    一方、人口側のOUTSIDE成果は、

    5,552メッシュ

    でした。

    その関係は次の図のとおりです。


    図8 用途地域以外の人口配分プロセス

    建物あり1,518メッシュの人口は、

    42,040.023341人

    世帯は、

    13,944.509996世帯

    13.建物がなければ、人口を動かさない

    一方、OUTSIDE人口は存在するものの、建物が存在しないメッシュが、

    4,034メッシュ

    ありました。

    その人口は、

    6,627.173125人

    世帯は、

    2,163.270384世帯

    です。

    ここで、近隣建物へ人口を吸収させることはしませんでした。

    人口あり

    建物なし

    近隣建物へ移送しない

    未配置差分として保持

    また、250mメッシュへ割り当てられなかった169棟についても、強制的に近隣メッシュへ所属させていません。

    169棟への人口配分は0

    です。

    この設計によって、

    メッシュ間人口移送0

    を維持しました。


    14.用途地域外STEP7もPASS

    用途地域外48,378棟について、用途地域内で確定したハイブリッド方式を適用しました。

    用途地域外では、配分グループを MESH_KEY としました。

    MESH_KEY

    グループ内CAPACITY_BASE中央値

    中央値以下:LOG
    中央値超過:CAPACITY

    LOCAL_WEIGHT_RATIO

    人口・世帯・年齢60列

    結果は、

    • 建物数:48,378
    • MESH_KEY数:1,518
    • bldg_id 重複:0
    • 人口:42,040.023341人
    • 世帯:13,944.509996世帯
    • 年齢列:60列
    • 比率合計最大差:8.88e-16
    • 年齢保存誤差最大:5.68e-14
    • メッシュ間人口移送:0

    となり、

    PASS

    しました。

    15.用途地域内と用途地域外を統合する

    次に、

    • 用途地域内の建物人口
    • 用途地域外の建物人口

    を統合しました。

    結果は、

    用途地域内
    165,506棟

    用途地域外
    48,378棟

    市域全体
    213,884棟

    です。

    最終成果は、

    okazaki_final_citywide_building_population

    です。

    Polygon形式で、座標系は、

    JGD_2011_Japan_Zone_8

    です。


    16.市域全体で人口保存を確認する

    統合後の建物配置人口は、

    375,671.053083人

    でした。

    建物へ配置されなかった人口は、

    • 用途地域内:960.964324人
    • 用途地域外:6,627.173125人

    合計、

    7,588.137449人

    です。

    したがって、

    建物配置人口
    375,671.053083

    未配置人口
    7,588.137449

    市域人口原資
    383,259.190531

    となりました。

    市域人口保存誤差は、

    -2.85e-09

    です。

    実質的に完全保存です。

    世帯についても、

    市域世帯原資 156,001.218135

    に対し、保存誤差は、

    -8.15e-10

    でした。

    年齢列は、

    60列すべてPASS

    しました。


    17.最終成果は「人口だけのデータ」にしない

    ここでもう一つ重要な改善を行いました。

    当初の最終統合成果は、

    • 人口
    • 世帯
    • 年齢60列

    が中心でした。

    しかし、それでは今後の分析に不十分です。

    例えば、

    工業専用地域の建物は何棟あるのか

    用途地域別の建物人口はどう違うのか

    容量最大の建物はどこか

    LOG方式とCAPACITY方式はどの建物で使われたのか

    その人口はどの250mメッシュから来たのか

    を追跡できません。

    そこで、最終成果へ分析属性を復元しました。

    主な属性は、

    建物規模

    • SUM_BUILD_AREA
    • SUM_FLOOR_AREA
    • HEIGHT_FINAL
    • FIRST_FLOOR_EST
    • CAPACITY_BASE

    用途地域

    • YOTO_CODE
    • YOTO_NAME
    • PART_TYPE

    メッシュ

    • MESH_KEY

    配分グループ

    • ALLOCATION_GROUP_TYPE
    • ALLOCATION_GROUP_KEY

    配分ロジック

    • GROUP_MEDIAN_CAPACITY
    • WEIGHT_METHOD
    • RAW_BLDG_WEIGHT
    • GROUP_RAW_WEIGHT_SUM
    • LOCAL_WEIGHT_RATIO

    市域統一区分

    • MODEL_ZONE_TYPE

    です。

    人口・世帯・年齢60列は変更していません。

    更新前後差は、

    0

    でした。

    18.用途地域別集計が可能になった

    最終成果では、実際に用途地域別集計が可能です。

    例えば、

    第一種住居地域

    • 60,239棟
    • 人口 125,219.80人

    第一種中高層住居専用地域

    • 28,342棟
    • 人口 57,876.21人

    準工業地域

    • 26,556棟
    • 人口 51,519.98人

    工業地域

    • 15,036棟
    • 人口 29,458.35人

    工業専用地域

    • 1,489棟
    • 人口 258.77人

    用途地域外

    • 48,378棟
    • 人口 42,040.02人

    です。

    ここで工業専用地域を見ると、非常に興味深い結果があります。

    建物容量合計は、

    約560.8万

    と非常に大きい。

    最大建物容量は、

    約60.2万

    です。

    しかし、配置人口は、

    258.77人

    に抑えられています。

    これは、本モデルの設計思想をよく表しています。

    巨大建物があるから人口を集めるのではない。

    上流の250mメッシュ人口と用途地域人口密度特性によって人口原資を制約し、その後で建物容量を使う。

    だから、巨大な工場建物が存在しても、市域の人口を大量に吸収しません。

    19.bldg_id が持つ意味

    ここからは、今回作成した建物単位人口モデルを自治体業務でどう活用できるかを考えます。

    最終成果213,884棟では、bldg_id を建物単位の安定キーとして保持しています。

    これは単なる技術的IDではありません。

    将来的には、部門間連携の基盤になり得ます。

    例えば、

    • 福祉部門が持つ要援護者情報
    • 防災部門が持つ避難情報
    • 都市計画部門が持つ浸水リスク
    • 建築部門が持つ建物情報
    • 公共交通部門が持つ交通アクセス情報

    を、個人情報そのものを直接共有せず、

    建物単位

    で安全に突合できる可能性があります。

    例えば、

    福祉部門
    要援護者が存在する建物

    bldg_id

    都市計画・防災部門
    浸水深、土砂災害、避難距離

    という連携です。

    自治体内部では、データが部門ごとに分断されがちです。

    bldg_id は、その縦割りを越える共通キーになり得ます。


    20.用途地域外を保持した意味

    用途地域外を同じ分析体系で保持したことは、防災や公共交通計画で特に重要です。

    例えば防災では、

    浸水想定区域に、どの年齢層が何人いるか

    を建物単位で推定できます。

    しかし、用途地域内だけを対象にすると、市街化調整区域や郊外集落が分析から消えます。

    公共交通でも同じです。

    例えば、

    バス停から500m以上離れた建物に、高齢人口がどれだけ存在するか

    を分析する場合、用途地域境界で人口モデルが途切れていては、市域全体の交通空白を評価できません。

    用途地域外48,378棟を保持したことで、

    • 防災
    • 公共交通
    • 福祉
    • 医療アクセス
    • 買物弱者
    • 避難支援
    • インフラ維持

    を市域全体で分析できる基盤になりました。


    21.「配置できなかった人口」も成果である

    今回のモデルでは、すべての人口を無理に建物へ押し込んでいません。

    未配置人口は、

    7,588.137449人

    です。

    一見すると、これはモデルの欠点に見えるかもしれません。

    しかし、むしろ重要な品質情報です。

    建物が存在しない場所の人口を、近隣の建物へ勝手に移すと、見かけ上は100%配置できます。

    しかし、その瞬間に空間的な歪みが生まれます。

    本モデルでは、

    分からないものを、分かったことにしない

    という設計を選びました。

    未配置人口は、

    • PLATEAU未整備
    • 建物代表点の問題
    • 統計メッシュとの時間差
    • 建物データとの時点差
    • 非住宅施設
    • 特殊な居住形態

    などを検証するための重要な差分です。


    22.完成したのは「人口マップ」ではない

    今回完成したものは、単なる人口分布図ではありません。

    最終成果213,884棟では、

    • 建物形状
    • bldg_id
    • 用途地域
    • 250mメッシュ
    • 建物面積
    • 延床規模
    • 高さ
    • 階数
    • 建物容量
    • 配分グループ
    • グループ中央値
    • LOG/CAPACITY方式
    • 建物配分比率
    • 人口
    • 世帯
    • 年齢60列

    を追跡できます。

    つまり、

    なぜ、この建物に、この人口が配置されたのか

    を遡ることができます。

    これは、AIやGISによる高度分析で非常に重要です。

    結果だけを出すブラックボックスではなく、

    計算過程を検証できる人口モデル

    になったからです。


    23.AIエージェントとGISの役割

    今回の分析では、途中成果が多数存在しました。

    最終的にGDB(ジオデータベース)内には100を超える成果がありました。

    その中から、

    • 48,547棟の未割当建物
    • 48,378棟のメッシュ確定割当
    • 169棟の未割当残差
    • 213,884棟の確定割当テーブル
    • 5,552のOUTSIDEメッシュ
    • 1,518の建物ありメッシュ

    の関係を追跡しました。

    ここで有効だったのが、MCPを介したGISデータ調査です。

    ファイル名だけで推測するのではなく、

    • データ型
    • レコード数
    • フィールド
    • bldg_id
    • MESH_KEY
    • 集合差

    を実データで確認しました。

    特に、

    48,547
    =
    48,378
    +
    169

    という関係を、単なる件数ではなくbldg_id集合として確認できたことは大きな意味があります。

    AIエージェントは、新しい分析を毎回作るだけではありません。

    既存成果を探し、関係を検証し、再利用可能な処理資産としてつなぎ直す

    ことにも価値があります。


    24.今回の到達点

    最終結果をまとめます。

    市域全体建物

    213,884棟

    用途地域内

    165,506棟

    用途地域外

    48,378棟

    建物配置人口

    375,671.053083人

    市域人口原資

    383,259.190531人

    未配置人口

    7,588.137449人

    市域人口保存誤差

    -2.85e-09

    建物配置世帯

    153,468.641681世帯

    市域世帯原資

    156,001.218135世帯

    年齢

    60列すべてPASS

    bldg_id重複

    0

    メッシュ間人口移送

    0


    おわりに

    今回の検証で、最も重要だったのは、最初から正解のモデルを作れたことではありません。

    むしろ逆です。

    町丁目人口から建物へ直接配分し、大規模建物への人口集中という問題に直面しました。

    そこで250mメッシュ人口へ戻りました。

    さらに、単純面積按分ではなく、岡崎市全体から用途地域別人口密度特性を算出しました。

    建物配分では、和泉市での経験を踏まえ、単純容量比例でも単純LOGでもない中央値ハイブリッド方式を採用しました。

    用途地域外も捨てず、既存途中成果を追跡しました。

    そして最終的に、

    岡崎市全域213,884棟

    を対象とする建物単位人口モデルへ到達しました。

    PLATEAUの価値は、美しい3D都市モデルを表示することだけではありません。

    250mメッシュ人口、用途地域、建物容量、安定した建物IDを組み合わせることで、

    都市の中に、誰が、どの程度、どこに暮らしている可能性があるのか

    を、従来よりはるかに細かな単位で考えることができます。

    そして、その先には、

    • 防災
    • 福祉
    • 公共交通
    • 都市計画
    • 医療アクセス
    • インフラ維持

    を、建物単位で横断的に考える可能性があります。

    今回完成したのは、単なる人口マップではありません。

    自治体が持つ複数分野のデータを、建物という共通空間単位でつなぎ、『誰が、どの程度、どこに暮らしている可能性があるのか』を精緻に考えるためのガバナンス基盤です。

    次回は、この建物人口モデルを使い、

    「どの建物が災害リスクを抱えているのか」
    「高齢人口と避難所アクセスをどう重ねるのか」
    「公共交通空白と人口構成をどう評価するのか」

    といった、実際の自治体政策分析への展開を検証します。

    関連記事

    ▶ 第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回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する

  • PLATEAUの建物に人口を配置する ―岡崎市の場合―

    「精密に見える誤差」を捨て、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_IDPARENT_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を「人口を持つ都市」へ

  • 建物単位人口で見る避難所シミュレーション

    ~高解像度な人口基盤を「命を守る」政策へつなげる~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第12回です。

    関連記事

    ▶ 第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建物人口から見る浸水リスク
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    前回の記事では、PLATEAUの3D都市モデル(LOD1)と国勢調査を利用し、建物単位人口推計モデルを構築しました。

    建物高さや用途地域を考慮しながら人口を建物単位へ再配分することで、

    「どの建物に、どれだけの人が居住しているのか」

    を推定できるようになりました。

    前回の分析は、建物そのものに着目した比較的ミクロな分析でした。

    今回は、その高解像度な人口基盤を利用し、

    「誰が、どこへ避難するのか」

    という、より面的な防災分析へ発展させます。

    建物単位人口という基盤が整備されたことで、浸水リスク、避難所、避難距離といった複数のデータを横断的に結び付けることが可能となりました。

    今回の分析は、前回構築した建物単位人口モデルがあって初めて実現できた分析であると言えます。

    図1:建物人口 → 浸水区域 → 要避難支援建物 → 避難所シミュレーションの全体イメージ


    使用データ

    今回使用したデータは次のとおりです。

    データ内容
    PLATEAU建物データLOD1建物モデル
    建物単位人口前回作成成果
    浸水継続時間ESRI Living Atlas
    避難所データ和泉市指定避難所(39施設)

    浸水継続時間データには、ESRIが提供する全国の洪水浸水継続時間データを利用しました。

    AIエージェントによるデータ探索

    今回の分析を開始するにあたり、まず検討したのは、

    「浸水継続時間データを分析に利用できるのか」

    という点でした。

    浸水継続時間はESRI Living Atlasで公開されていますが、

    • ArcGIS Onlineアカウントが必要なのか
    • 商用利用や分析利用が可能なのか
    • フィーチャサービスとして利用できるのか
    • 建物データとの空間解析に利用できるのか

    は事前に確認する必要がありました。

    そこで、ArcGIS MCP環境を利用し、生成AIエージェントに次のような自然言語で指示を行いました。

    プロンプト例

    ESRI Living Atlasで公開されている浸水継続時間データを調査してください。
    
    確認したい内容は次のとおりです。
    
    1. ArcGIS Onlineアカウントが必要か
    2. 公開レイヤとして利用できるか
    3. ArcGIS Proで空間解析に利用できるか
    4. 建物ポリゴンとのIntersect解析に利用できるか
    5. 全国データとして利用できるか
    
    分析利用に適しているか評価してください。
    

    その結果、AIエージェントから、

    • 全国を対象とした公開データであること
    • ArcGIS Onlineアカウントがなくても閲覧可能であること
    • ArcGIS Proから解析利用可能であること
    • フィーチャサービスとして空間解析に利用できること

    が確認できました。

    このように、生成AIエージェントを利用することで、

    「分析に使えるデータを探す」

    という従来は時間を要していた作業も効率化できる可能性があります。

    今回の検証では、データ探索から分析、結果の評価まで、一連のプロセスにAIを活用することができました。


    ArcGIS Proによる探索的分析とMCPによる自動化

    今回の分析では、まずArcGIS Proを利用して分析ロジックを構築しました。

    具体的には、

    • 浸水区域内建物の抽出
    • 浸水継続時間の付与
    • 高齢者人口条件の検討
    • 推定階数条件の検討
    • 最寄り避難所分析

    などを地図を確認しながら試行錯誤し、分析条件の妥当性を検証しました。

    一方、同じ分析をMCP環境で実施した場合、分析プロセス全体を再現可能なワークフローとして出力することができます。

    今回、MCPでは次の成果物を自動出力しました。

    図2:MCPによる自動生成成果物一覧

    入力・中間成果

    ファイル内容
    step0_flood_izumi_27219_raw.geojsonLiving Atlasから取得した浸水継続時間データ(元データ)
    step1_flood_izumi_27219.geojson解析対象範囲で抽出・加工した浸水継続時間データ
    step2_buildings_with_derived_fields.geojson建物人口、推定階数等を付与した建物データ
    step3_building_flood_intersections.geojson建物と浸水継続時間ポリゴンのIntersect結果
    step4_buildings_joined_flood_duration.geojson建物ごとに代表浸水継続時間を付与した最終建物データ

    出力成果

    ファイル内容
    izumi_evacuation_support_priority_candidates.csv要避難支援候補建物一覧
    izumi_evacuation_support_priority_candidates.geojson要避難支援候補建物レイヤ
    izumi_flood_duration_summary.csv浸水継続時間別集計結果
    izumi_flood_duration_summary.json浸水継続時間集計結果(機械可読形式)
    izumi_flood_duration_summary.md分析結果サマリー・監査レポート
    izumi_flood_duration_run_metadata.json解析実行条件・処理履歴メタデータ

    このように、MCPでは単に解析を実行するだけではなく、

    解析過程そのものを成果物として保存できる

    点が特徴です。

    従来のGIS解析では、分析を行った担当者しか処理内容を把握できないケースも少なくありません。

    一方、MCPでは、

    • 入力データ
    • 中間成果
    • 最終成果
    • 実行履歴
    • 監査レポート

    を自動的に記録できるため、

    「誰が実施しても同じ結果を再現できる分析」

    を構築できる可能性があります。

    今回の検証を通じて、

    ArcGIS Proで分析ロジックを構築し、MCPでその処理を再利用可能なツールとして実装する

    という、新しいGIS分析の姿も見えてきました。

    Step1 要避難支援建物を抽出する

    分析では、約75,000棟の建物のうち、

    約10,540棟

    が浸水区域内に存在することが分かりました。

    しかし、浸水するすべての建物が同じリスクを持つわけではありません。

    そこで今回は、

    浸水区域内
    AND
    高齢者人口 > 0
    AND
    推定階数 <= 1
    

    という条件を設定しました。

    GISでの処理内容は

    PLATEAU建物

    浸水継続時間ポリゴン

    Intersect

    最大重複面積を持つ
    浸水継続時間を建物へ付与

    これは、

    高齢者が居住し、かつ垂直避難が困難な低層住宅

    を抽出するためです。

    その結果、

    1,895棟

    の建物が抽出されました。

    これらの建物に居住する人口は、

    • 総人口:約2,066人
    • 75歳以上人口:約262人

    となりました。

    図2:要避難支援建物分布図(イメージ)


    浸水継続時間が持つ意味

    今回の分析では、単に浸水するか否かだけではなく、浸水継続時間にも着目しました。

    短時間の浸水であれば、自宅内で待機できるケースも考えられます。

    しかし、

    12時間以上継続する浸水

    は、住民の孤立リスクを高める可能性があります。

    特に、

    • 高齢者が居住する
    • 1階建て住宅である
    • 長時間浸水が想定される

    という条件が重なる場合、単なる浸水被害ではなく、

    「生命リスク」

    そのものを意味します。

    浸水継続時間という「時間」の軸を考慮することで、

    どの建物を優先的に避難支援すべきか

    をより具体的に評価できることが確認できました。


    ArcGIS Proによる解析フロー

    ここではArcGIS Proを利用し、次のジオプロセシングを実施しました。

    要避難支援建物抽出
    ↓
    Generate Near Table
    ↓
    避難所属性結合
    ↓
    Summary Statistics
    ↓
    避難所別集計
    ↓
    マップ作成
    

    まず、Generate Near Tableを利用して、建物ごとの最寄り避難所を算出しました。

    その後、NEAR_FIDを利用して避難所名称を結合し、避難所別に人口を集計しました。

    図5 ArcGIS Pro「Generate Near Table」を用いた最寄り避難所解析設定画面

    今回の分析では、ArcGIS Pro の Generate Near Table ツールを利用し、要避難支援建物ごとに最寄り避難所を算出しました。

    主な設定は次のとおりである。

    設定項目内容
    入力フィーチャ要避難支援建物(1,895棟)
    近接フィーチャ和泉市指定避難所(39施設)
    方法平面距離
    距離単位メートル
    最近接フィーチャのみ検索ON
    位置出力ON
    検索範囲不明(最大距離の取得)

    本ツールにより、各建物について、

    • 最寄り避難所ID(NEAR_FID)
    • 直線距離(NEAR_DIST)
    • 建物座標
    • 避難所座標

    を取得しました。

    その後、NEAR_FIDを利用して避難所名称を結合し、建物人口データを付加したうえで、避難所別に75歳以上人口、総人口、平均避難距離、最大避難距離を集計しました。


    避難所別避難需要を分析する

    分析の結果、総人口約2,066人、75歳以上人口約262人が市内39施設の指定避難所のうち、

    23施設

    に避難需要が集中することが分かりました。

    対象となる避難需要は、

    • 総人口:約2,066人
    • 75歳以上人口:約262人

    でした。

    図6:避難所別避難需要マップ(イメージ)

    想定避難人口の多い順に並べると、次のようになります。

    表1 要避難支援者(75歳以上)を対象とした最寄り避難所別推計避難需要

    順位避難所想定避難人口75歳以上人口平均距離(m)最大距離(m)
    1国府小学校748994621,199
    2和気小学校200227841,293
    3北松尾小学校175175681,030
    4芦部小学校15215365767
    5和泉中学校13713418791
    6総合福祉会館12421336608
    7府立伯太高等学校839429595
    8いぶき野小学校819374731
    9北池田中学校695477871
    10光明台北小学校6897931,098

    ※本結果は公開データおよび建物単位人口推計モデルを用いた試算結果であり、自治体が定める正式な避難計画値ではない。
    避難行動は直線距離による最寄り避難所を仮定している。

    避難需要上位施設を見ると、国府小学校には約748人が集中し、そのうち約99人が75歳以上人口であった。
    一方、和気小学校では平均避難距離が約784m、最大距離は約1.3kmとなり、高齢者にとっては避難負担が大きい可能性が示唆された。
    また、北松尾小学校や光明台北小学校でも1kmを超える建物が存在しており、避難支援体制の検討が必要と考えられる。

    なお、今回の分析では、避難所ごとの想定避難者数を推計しましたが、避難所の収容人数に関する公開データが確認できなかったため、避難所ごとの収容余力や避難所不足の評価までは実施していません。

    今後、避難所収容人数データを組み合わせることができれば、

    「どの避難所が不足するのか」
    「避難所の再配置が必要な地域はどこか」

    といった、より具体的な避難計画の検討も可能になると考えています。

    ※本分析における避難距離は建物重心から最寄り避難所までの直線距離です。


    避難需要は均等ではない

    市内には39施設の避難所が整備されています。

    しかし、今回抽出した要避難支援建物の避難需要は23施設に集中しました。

    ※浸水区域が市北西部に集中しているため、内陸部や丘陵部の避難所には需要が発生しなかった。

    これは、

    避難所が市内全域に配置されていても、実際の避難需要は一部施設へ偏在する

    ことを示しています。

    従来の町丁目単位分析では、

    「避難所は足りているか」

    を評価することはできても、

    「どの避難所に何人集まるのか」

    を把握することは困難でした。

    今回の分析では、

    「誰が、どこへ避難し、その避難所にどの程度の負荷がかかるのか」

    を建物単位で把握できることが確認できました。

    今回の分析結果は、

    • 避難所配置計画
    • 避難所運営体制
    • 福祉避難所配置
    • 避難所収容能力の見直し

    などの政策判断に活用できる可能性があります。

    今回の分析結果は、避難所配置だけでなく、
    避難所収容能力の見直しや福祉避難所の配置検討を行う際の
    基礎資料としても活用できる可能性があります。


    AIエージェントによる解析支援

    今回の解析はArcGIS Proを利用して実施しました。

    ただし、分析過程では生成AIエージェントを活用し、

    • 分析条件の検討
    • ジオプロセシングフロー設計
    • 結果の妥当性確認
    • 政策評価

    を支援させました。

    実際の空間計算はGISが担います。

    一方、

    「どのような分析を行うか」

    というロジック設計はGIS技術者が担う必要があります。

    今回も、GISで分析ロジックを設計し、その妥当性を確認しながら解析を進めました。


    MCPによる将来像

    一度分析ロジックが確立されれば、

    建物抽出

    最寄り避難所解析

    属性結合

    統計集計

    品質保証(妥当性検証)

    監査レポート作成

    といった一連の処理は定型化できます。

    今回の検証では、Near解析、属性結合、統計集計、さらには距離値の妥当性検証までをMCPツールとして実装し、GIS分析フローの自動化を確認することができました。

    今後、これらの処理をMCPツールとして整備していけば、

    「浸水区域内の高齢者が居住する低層住宅について、最寄り避難所を分析してください」

    といった自然言語による指示だけで、建物抽出から避難需要集計、品質確認、レポート作成までを自動的に実施できる可能性があります。

    今回の検証を通じて、

    GISで分析ロジックを設計し、AIエージェントが繰り返し処理と品質確認を支援する

    という、新しい自治体GISの姿も見えてきました。


    今後の展開

    今回の分析では、建物重心から避難所までの直線距離を利用して最寄り避難所を推定しました。

    この方法でも、要避難支援者が「誰が、どこへ避難し、その避難所にどの程度の負荷がかかるのか」を建物単位で把握できることが確認できました。

    一方で、より現実に近い避難行動を評価するためには、道路ネットワークデータセットを利用した解析が有効です。

    例えば、道路距離や徒歩時間を考慮した最寄り避難所解析を実施することで、

    ・避難所までの徒歩時間評価
    ・避難困難地域の抽出
    ・避難所サービス圏の評価
    ・避難所配置の最適化

    など、より実態に即した避難行動シミュレーションが可能になります。

    また、今回利用したPLATEAUデータはLOD1であったが、将来的にLOD2データを利用すれば、建物高さだけでなく屋根形状も考慮した分析も期待できます。

    例えば、

    ・浸水深と建物高さを考慮した垂直避難可能性の評価
    ・屋上避難が可能な建物の抽出
    ・地域内避難候補建物の選定

    など、3次元都市モデルを活用した新たな防災分析への発展も考えられます。

    今回構築した分析フローは、こうした高度な防災分析をAIエージェントが支援するための基礎となるものであり、今後の自治体GISの新たな活用方法の一つになると期待しています。

    おわりに

    今回の分析では、

    「誰が、どこへ避難し、その避難所にどの程度の負荷がかかるのか」

    を建物単位で把握できることが確認できました。

    建物単位の推計人口という高解像度な基盤を、

    「命を守る」

    という行政の最重要課題へ直接接続できたことは、大きな成果であると考えています。

    また、今回利用したPLATEAUデータはLOD1でしたが、将来的にLOD2データを利用できれば、屋根形状や建物形状を考慮した、より高精度な人口推計も期待できます。

    今回の検証は、

    「データ整備によって行政を変える」

    一つの事例になったのではないかと考えています。

    関連記事

    ▶ 第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建物人口から見る浸水リスク
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • PLATEAU建物人口から見る浸水リスク

    ~建物単位人口が変える洪水リスク分析~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第11回です。

    関連記事

    ▶ 第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で建物単位人口推計は可能か
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    前回構築した建物単位人口データを利用し、今回は洪水浸水想定区域と重ね合わせることで、浸水リスクを建物単位で評価してみました。

    図1:従来の浸水想定区域イメージ

    従来の浸水想定区域図では
    「どこが浸水するのか」

    は把握できます。

    しかし、

    「どれだけの人が影響を受けるのか」
    「高齢者がどこに居住しているのか」
    「どの建物を優先的に支援すべきなのか」

    までは分かりませんでした。

    そこで今回は、

    • 建物単位人口
    • 高齢者人口
    • 建物推定階数
    • 浸水継続時間

    を組み合わせることで、建物単位の浸水リスク分析を行いました。

    図2:建物人口 × 浸水継続時間のイメージ


    使用データ

    今回使用したデータは次のとおりです。

    • PLATEAU LOD1建物データ
    • 建物単位人口データ(第10回で作成したデータ)
    • 洪水浸水想定区域(浸水継続時間:公開データ)
      出典:ArcGIS Living Atlas(ESRIジャパン 災害情報マップ)
      原典:国土交通省 国土数値情報・ハザードマップポータルサイト
    • 建物推定階数 (第10回で作成したデータ)
    • 建物別高齢者人口(第10回で作成したデータ)

    浸水ポリゴンと建物を重ね合わせ、複数の浸水区域と重複する場合は、最も重複面積が大きい浸水継続時間を採用しました。

    Step1 浸水継続時間レイヤが分析に利用できるかを検証

    まず、浸水継続時間ポリゴンが建物単位分析に利用できる品質かを確認しました。

    AIエージェントには次のように指示しました。

    洪水浸水継続時間ポリゴンが建物単位分析に利用可能か検証してください。

    確認項目:
    ・ポリゴンの重複有無
    ・欠損値の有無
    ・浸水継続時間区分
    ・建物との重なり状況
    ・分析利用上の問題点

    結果をレポートしてください。

    Step2 建物人口と浸水継続時間を結合

    次に、建物単位人口データと浸水継続時間ポリゴンを重ね合わせました。

    建物単位人口データと浸水継続時間ポリゴンを空間結合してください。

    条件:
    ・建物ジオメトリは変更しない
    ・gml_idを維持する
    ・複数ポリゴンと重複する場合は
    最大重複面積の浸水継続時間を採用する

    出力:
    建物ごとの浸水継続時間属性

    これにより、

    建物単位人口と浸水継続時間を同時に扱うことが可能となりました。

    を作成しました。

    Step3 浸水継続時間別の人口構成を集計

    最後に、建物人口を浸水継続時間ごとに集計しました。

    浸水継続時間ごとに次の項目を集計してください。

    ・建物数
    ・総人口
    ・高齢者人口
    ・1階建住宅人口

    結果は表形式で出力してください。

    その結果、

    • 浸水区域内建物数
    • 浸水区域内人口
    • 高齢者人口
    • 1階建住宅人口

    を把握することができました。

    Step4 避難支援が必要な建物の抽出

    さらに、

    次の条件を満たす建物を抽出してください。

    ・浸水継続時間 >= 12時間
    ・推定階数 <= 1
    ・高齢者人口 > 0

    出力:
    ・建物数
    ・総人口
    ・高齢者人口
    ・位置図

    と指示することで、

    長時間浸水し、高齢者が居住する低層住宅

    を抽出することができました。


    浸水継続時間別人口の推計

    分析の結果、浸水継続時間別人口構成は次のようになりました。

    浸水継続時間建物数総人口高齢者人口1階建住宅人口
    12時間未満10,533棟29,009人7,134人5,141人
    12時間以上24時間未満7棟5人2人1人

    (図:浸水継続時間別人口構成)

    浸水区域内には約29,000人が居住しており(これは市総人口の約16%に相当します。)そのうち約7,100人が高齢者、約5,100人が1階建住宅に居住していることが分かりました。


    建物単位だから分かるリスク

    今回の分析では、

    • 浸水継続時間
    • 高齢者人口
    • 建物階数

    を組み合わせることで、

    従来のメッシュ単位分析では困難であった
    建物単位の避難リスク評価を行いました。

    具体的には、

    • 12時間以上浸水
    • 1階建住宅
    • 高齢者が居住

    という条件を満たす建物を抽出したところ、
    3棟

    が避難支援優先候補として抽出されました。

    (図:避難支援優先候補建物)

    これらの建物には合計約0.7人、高齢者約0.3人が居住していると推計されました。

    図3:建物単位人口を用いた避難支援優先候補抽出(イメージ)


    ※本図は分析結果を模式的に表現したイメージ図です。
    建物位置、抽出結果等は説明用に再構成しており、
    実際の位置情報とは一致しません。

    建物単位人口だからできる分析

    従来の町丁目単位や250mメッシュ単位の分析では、

    「地域全体として危険」

    という評価に留まっていました。

    一方、建物単位人口データを利用することで、

    「どの建物に、どのような支援が必要なのか」

    を具体的に検討できるようになります。

    これは、

    • 個別避難計画
    • 避難行動要支援者支援
    • 地域防災計画

    などに活用できる可能性があります。


    AIエージェントによる解析支援

    今回の分析でも生成AIエージェントを活用しました。

    従来、建物単位の浸水リスク分析を実施するためには、GIS技術者が多数のジオプロセシングツールを組み合わせながら、分析条件を試行錯誤する必要があります。

    例えば、今回の分析では、ArcGIS Pro上で次のような処理フローを実施しました。

    建物単位人口データ
           +
    浸水継続時間ポリゴン
           ↓
    【Intersect】
    建物と浸水ポリゴンの重複領域作成
           ↓
    【Calculate Geometry】
    建物ごとの重複面積算出
           ↓
    【Summary Statistics】
    建物ごとの最大重複面積抽出
           ↓
    【Join Field】
    代表浸水継続時間を建物へ付与
           ↓
    【Select Layer By Attribute】
    低層住宅抽出
    (推定階数≦1)
           ↓
    【Select Layer By Attribute】
    高齢者居住建物抽出
           ↓
    【Summary Statistics】
    浸水継続時間別人口集計
           ↓
    避難支援優先候補抽出
    

    このような解析は、GISに精通した技術者であっても、多くの処理手順と検証作業を必要とします。

    今回は、生成AIエージェントに対し、

    「浸水継続時間レイヤが建物単位分析に利用可能か検証してください」

    「建物人口と浸水継続時間を重ね合わせ、浸水継続時間別に人口、高齢者人口、1階建住宅人口を集計してください」

    「浸水継続時間が12時間以上で、推定階数が1階、高齢者人口が存在する建物を抽出してください」

    といった自然言語による指示を行いました。

    その結果、AIエージェントが必要な空間結合、属性集計、条件抽出、監査処理を実施し、地図、集計表、監査レポートとして出力することができました。

    特に今回の分析では、

    • 浸水継続時間レイヤが建物単位分析に利用できるか
    • どの浸水継続時間を代表値として採用すべきか
    • どの条件で避難支援優先候補を抽出すべきか

    といった探索的な検討を繰り返し行いました。

    従来であれば、分析条件を変更するたびにジオプロセシングを再実行し、その結果を確認する必要がありましたが、AIエージェントを活用することで、

    「仮説を立てる → 指示する → 結果を確認する → 条件を修正する」

    という分析サイクルを短時間で繰り返すことができました。

    AIエージェントが分析結果そのものを保証するわけではありません。しかし、人間が政策的な仮説を立て、AIが大量のGIS処理と監査作業を支援することで、従来よりもはるかに短時間で政策立案に必要な分析を実施できる可能性を確認することができました。サイクルを大幅に短縮できる可能性を確認できました。


    おわりに

    今回の分析を通じて、

    建物単位人口データは、防災分野において極めて有効な政策支援データとなる

    ことを改めて実感しました。

    建物単位人口と浸水継続時間を組み合わせることで、浸水リスクをより詳細に把握できるだけでなく、優先的な避難支援が必要となる建物を抽出できることも確認できました。

    特に、従来の町丁目単位や250mメッシュ単位の分析では困難であった、

    「どの建物に、どのような支援が必要なのか」

    という視点からの分析が可能になったことは、大きな成果であると考えています。

    一方、建物単位人口データの活用可能性は、防災分野だけに留まりません。

    例えば、

    • 防災部門では、個別避難計画策定や避難所配置の検討
    • 福祉部門では、高齢者見守りや地域包括ケアの支援対象把握
    • 空き家対策部門では、低利用建物や空き家候補の抽出
    • 都市計画部門では、居住誘導区域や公共施設配置の評価
    • 公園・道路部門では、人口分布を考慮した施設整備優先順位の検討
    • 教育部門では、通学路や学校施設配置の見直し

    など、自治体の多くの部署での活用が期待できます。

    これまで自治体では、人口統計は町丁目やメッシュ単位で利用されることが一般的でした。しかし、建物単位人口データを利用することで、より実態に近い地域分析や政策立案が可能になります。

    さらに、PLATEAUや各種オープンデータ、自治体が保有する台帳データを組み合わせることで、従来は困難であった政策シミュレーションも現実的なものになりつつあります。

    今回の検証は、その第一歩に過ぎません。

    今後も、生成AIエージェントとGISを組み合わせることで、自治体に蓄積された多様なデータを政策立案へ活用する手法について検証を進めていきたいと考えています。

    次回予告

    次回は、

    「建物単位人口を利用した避難所シミュレーション」

    をテーマに、今回構築した建物単位人口データをさらに活用してみたいと思います。

    自治体では、避難所計画を策定する際、町丁目単位や小学校区単位の人口を用いるケースが一般的です。しかし、実際の避難行動は建物単位で発生するため、より詳細な分析が求められています。

    次回は、

    • 建物単位人口データ
    • 指定避難所データ
    • 避難所収容人数
    • 浸水継続時間
    • 高齢者人口

    を組み合わせることで、

    「どの避難所に、どれだけの避難者が集中するのか」

    を建物単位でシミュレーションしてみます。

    具体的には、

    • 避難所ごとの想定避難者数
    • 避難所収容能力との比較
    • 避難所不足地域の抽出
    • 浸水区域内避難所の影響評価
    • 避難距離を考慮した避難所再配置の検討

    などを行う予定です。

    建物単位人口データを利用することで、従来の町丁目単位では把握できなかった、

    「本当にその避難所配置で十分なのか」

    という視点から、防災計画を見直すことができるかもしれません。

    次回も、PLATEAU、ArcGIS、生成AIエージェントを組み合わせた新しい防災分析の可能性について検証していきます。

    関連記事

    ▶ 第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で建物単位人口推計は可能か
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • PLATEAU LOD1と生成AIで建物単位人口推計は可能か

    ~和泉市を対象とした政策支援モデル構築の試行錯誤~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第10回です。

    関連記事

    ▶ 第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で検証する
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    国土交通省が推進するPLATEAUは、3D都市モデルとして急速に整備が進んでいます。

    しかし、多くの活用事例は3D表示や景観シミュレーションに留まっており、行政実務に直結する政策支援への活用事例はまだ多くありません。

    そこで今回、

    「PLATEAUのLOD1建物データと公開統計だけを用いて、建物単位の人口を推計できないか」

    という仮説を立て、和泉市を対象に検証を行いました。

    さらに、本検証ではArcGISと生成AIエージェントを組み合わせ、モデル構築プロセスの自動化にも挑戦しました。

    その結果、PLATEAU LOD1建物データと公開統計のみを用いても、人口総量保存率100%を維持しながら、建物単位人口推計モデルを構築できることを確認しました。

    また、LOD1であっても、防災や福祉などの政策立案に活用可能な政策支援モデルを構築できる可能性が示されました。

    一方、その過程では多くの失敗や試行錯誤もありました。

    今回は、その過程も含めて紹介します。


    最初の仮説

    当初の考え方は単純でした。

    1. 国勢調査メッシュ人口を細かなHEXグリッドへ変換する
    2. HEXごとの人口をPLATEAU建物へ配分する
    3. 建物単位人口を推計する

    当初は、より細かな空間表現ができると考え、HEX52(約52m)を採用しました。

    解析イメージは次のとおりです。

    図1:250m人口メッシュ→HEX52→PLATEAU建物

    図2:250m人口メッシュ→HEX52→PLATEAU建物のレイヤ重ね


    最初の失敗 ~HEX52は細かすぎた~

    解析を進めたところ、予想外の問題が発生しました。

    HEX52へ人口を再配置すると、

    建物の存在しないHEXにも人口が割り振られてしまったのです。

    その結果、

    • 建物が存在しないHEXが大量に発生
    • 人口を建物へ配分できない
    • 市全体で約9,000人の人口が取りこぼされる

    という問題が生じました。

    当初は、

    「建物単位に落とすなら細かいグリッドほど精度が高い」

    と考えていました。

    しかし、実際には逆でした。

    細かすぎるグリッドは、人口を不要に拡散させてしまうことが分かりました。


    改善① ~HEX250への変更~

    そこで、HEX52を廃止し、250m人口メッシュに近いスケールを持つHEX250へ変更しました。

    結果は大きく改善しました。

    • 人口取りこぼし率:約5% → 約0.75%
    • 人口総量保存:ほぼ100%

    細かなグリッドが必ずしも高精度とは限らない。

    これは今回得られた最初の重要な知見でした。

    図3:HEXグリッドサイズの変更による建物の網羅性


    改善② ~面積だけでは人口が偏る~

    次に問題となったのが、建物への人口配分方法です。

    当初は、

    建物交差面積 × 推定階数
    

    を重みとして使用しました。

    しかし、この方法では大規模建物に人口が過剰に集中してしまいました。

    例えば、

    • 小規模住宅:0.2人
    • 大規模建物:200人超

    といった極端な分布が多数発生しました。

    明らかに実態を反映していません。


    改善③ ~対数変換の採用~

    そこで、重みを次のように変更しました。

    WEIGHT =
    log(1 + INTERSECT_AREA)
    × EST_FLOORS_ADJ

    建物面積をそのまま使用するのではなく、交差面積に対数変換を適用しました。

    その結果、小規模住宅にも人口が配分されやすくなり、大規模建物への過度な集中は抑制されました。また、人口0建物や極端な低人口建物の発生も減少し、建物人口分布は一定程度改善しました。

    一方で、対数変換は大きな建物が本来持つ居住容量の差も圧縮します。そのため、大規模集合住宅では人口を過小推計する可能性があることも確認されました。

    この結果から、単純面積比例モデルと対数重みモデルのどちらか一方を採用するのではなく、建物規模や推定階数に応じてモデルを切り替えるハイブリッド型の人口配分モデルが有効であると考えられます。

    図4:面積重みモデルと対数モデルの比較)の比較


    項目面積モデル対数モデル
    最大建物人口546人260人
    中央値1.31人1.69人
    低人口建物数10,179棟7,442棟

    この結果から、

    対数モデルでは、低人口建物が10,179棟から7,442棟へと2,737棟減少(約27%減)した。

    ※総戸数292戸の大規模集合住宅では
    面積モデルの方が実態に近かった

    改善④ ~用途地域別の推定階数~

    さらに、PLATEAUが持つ建物高さ情報(measuredHeight)を利用し、用途地域ごとに標準階高を設定しました。

    例えば、

    • 低層住居系:3.0m
    • 商業地域:4.0m
    • 工業地域:4.5m

    とし、

    推定階数 = 建物高さ ÷ 標準階高

    により建物ごとの推定階数を算出しました。

    LOD1モデルでは建物内部の住戸数や階数情報は保持されていません。しかし、高さ情報と用途地域特性を組み合わせることで、戸建住宅と中高層建築物を区別できるようになり、人口配分モデルに建物規模の違いを反映することが可能となりました。

    その結果、単純な建築面積だけでは表現できない建物の居住容量を考慮した人口配分が実現できました。


    改善⑤ ~AIによるハイブリッド型人口配分モデルの可能性~

    今回、面積重みモデルと対数重みモデルを比較した結果、それぞれに長所と短所が存在することが明らかとなりました。

    例えば、和泉市内の大規模集合住宅「コート和泉府中カリヨン(総戸数292戸)」では、単純面積比例モデルによる推計人口は546人、対数重みモデルでは201人となりました。

    実際の総戸数から推定される居住人口は約600~700人程度と考えられるため、このケースでは面積比例モデルの方が現実に近い結果を示しました。

    一方、戸建住宅や小規模建物では、対数重みモデルを適用することで、極端な低人口建物が大幅に減少することも確認できました。

    このことから、今後は建物規模に応じて人口配分モデルを切り替える「ハイブリッド型人口配分モデル」が有効と考えられます。

    例えば、

    • 推定階数が高い建物
    • 延床面積が大きい建物
    • 集合住宅と推定される建物

    については面積比例モデルを適用し、

    • 一般戸建住宅
    • 小規模共同住宅

    については対数重みモデルを適用する方法が考えられます。

    さらに、こうした建物分類自体をAIが自動的に判定することも可能です。

    AIは、

    • 建物面積
    • 建物高さ
    • 推定階数
    • 用途地域
    • 建物形状
    • 周辺建物との関係

    などの属性をもとに、

    「大規模集合住宅」
    「戸建住宅」
    「商業施設」
    「工場・倉庫」

    といった建物種別を推定し、最適な人口配分モデルを自動的に選択できます。

    将来的には、

    「建物をAIが分類し、建物特性に応じて最適な人口配分モデルを自動適用する」

    という、AIエージェントによる次世代型建物人口推計モデルの実現も期待できます。

    実建物による推計結果の検証

    モデルの妥当性を確認するため、推計人口が最大となった建物を確認しました。

    その結果、推計人口最大の建物は、和泉市内の大規模集合住宅「コート和泉府中カリヨン」であることが分かりました。

    図5:推計人口最大建物「コート和泉府中カリヨン」

    写真:Googleストリートビューより

    このマンションは総戸数292戸の大規模分譲マンションであり、一般的な世帯人数から推定すると、実際の居住人口は600~700人程度と考えられます。

    一方、モデルによる推計結果は次のとおりでした。

    モデル推計人口
    単純面積比例モデル546人
    対数重みモデル201人

    この結果から、大規模集合住宅では対数モデルが過小推計となる可能性があり、面積比例モデルの方が実態に近いことが確認されました。

    ルールベースAI判定が現実的

    例えば、AIエージェントに対し、建物面積、推定階数、用途地域、面積比例モデルによる推計人口を判定材料として与えることで、一定規模以上の集合住宅には面積比例モデルを適用し、それ以外の一般住宅には対数重みモデルを適用するハイブリッド型人口配分が可能になります。

    具体的には、推定階数が8階以上かつ建物面積が800㎡以上の建物、または面積比例モデルによる推計人口が250人を超える建物を「大規模集合住宅候補」と判定し、面積比例モデルを適用する。一方、一般的な戸建住宅や小規模共同住宅には対数重みモデルを適用します。

    このように、AIエージェントが建物属性と周辺条件をもとにモデル選択を自動化することで、単一モデルでは表現しきれない建物特性を反映した人口配分が可能となります。

    検証結果

    最終モデルでは、

    • 対象建物数:75,936棟
    • 人口総量保存:100%
    • 建物人口中央値:1.68人
    • 人口100人超建物:35棟

    という結果となりました。

    人口総量保存監査

    人口配分モデルでは、空間分布が変化しても、元となる人口総量が保存されていることが重要です。

    今回のモデルでは、250m人口メッシュからHEX52、さらに建物単位へ人口を配分する各段階において人口総量監査を実施しました。

    その結果、

    • 配分前人口総数:184,263.85人
    • 配分後建物人口総数:182,790.08人
    • 建物未交差HEX人口(除外人口):1,473.78人

    となり、

    建物人口総数 + 除外人口 = 184,263.85人

    となることを確認しました。

    差分は0人(保存率100%)であり、本モデルにおいて人口総量が完全に保存されていることを確認しました。

    人口総量保存(Mass Preservation)

    は最も重要な監査項目です。

    監査表

    項目人口
    250mメッシュ人口総数184,263.85人
    HEX52人口総数184,263.85人
    建物人口総数182,790.08人
    除外人口1,473.78人
    建物人口+除外人口184,263.85人
    差分0人
    保存率100.0%

    また、住宅・土地統計調査による住宅戸数とも近い値を示し、モデルとして一定の妥当性を確認することができました。


    空き家対策への応用可能性

    さらに、

    建物人口 < 1
    かつ
    推定階数 ≧ 1
    かつ
    建物面積 ≧ 50㎡

    という条件で抽出を行ったところ、

    7,442棟の建物が抽出されました。

    もちろん、これらをそのまま空き家と判定することはできません。

    しかし、建物人口が極めて少ないにもかかわらず、一定規模以上の建物については、空き家または低利用建物である可能性が考えられます。

    今後、

    • 住民基本台帳
    • 固定資産税台帳
    • 水道利用情報
    • 空き家実態調査結果

    などの行政データと連携することで、現地調査対象を大幅に絞り込める可能性があります。

    本手法は、空き家を直接判定するものではなく、

    現地確認を優先的に実施すべき候補建物を抽出する一次スクリーニング手法

    として位置付けられます。

    特に、自治体が保有する既存データと組み合わせることで、従来は全件調査が必要であった空き家対策業務の効率化につながることが期待されます。


    建物単位人口推計が可能にする新たな政策立案

    建物単位で人口を推計できるようになると、従来の町丁目単位やメッシュ単位では困難であった詳細な政策シミュレーションが可能となります。

    例えば、浸水想定区域内に存在する建物を対象に、

    • 建物人口
    • 高齢者人口
    • 推定階数

    を重ね合わせることで、

    「浸水区域内の1階建て住宅に居住する高齢者人口」

    を推計することができます。

    これにより、

    防災分野

    • 要支援者の優先避難対象地域の抽出
    • 個別避難計画策定支援
    • 垂直避難が困難な住宅の把握
    • 浸水深別避難対象人口の推計

    避難所運営

    • 指定避難所ごとの想定避難者数推計
    • 避難所受入可能人数との比較
    • 避難所配置の見直し
    • 避難所不足地域の抽出

    福祉分野

    • 高齢者見守り重点地区の抽出
    • 在宅避難困難者の推計
    • 地域包括ケア計画への活用

    など、建物単位での施策検討が可能となります。

    特に、避難所については、

    「どの避難所に何人が避難するか」

    を建物単位でシミュレーションできるため、避難所受入体制の再構築や、避難所不足地域の抽出など、より現実的な地域防災計画の策定が期待できます。

    図6:PLATEAU LOD1を使った防災シュミレーション 

    本モデルの限界

    本モデルは、PLATEAU LOD1建物データと公開統計のみを用いて建物単位人口を推計する試行モデルであり、いくつかの制約が存在します。

    • 住民基本台帳による建物単位での実測検証は実施していない。
    • 建物用途の推定には用途地域や建物形状を利用しており、実際の利用状況と異なる場合がある。
    • LOD1では建物内部構造や住戸数を表現できないため、大規模集合住宅では推計誤差が生じる可能性がある。
    • 年齢階層別人口は公開統計を建物単位へ按分した推計値であり、実際の居住者属性を直接表現するものではない。

    一方、本研究では人口総量保存監査や実建物との比較を通じて、政策検討に利用可能なレベルの推計精度を確認した。

    今後は、住民基本台帳、固定資産税台帳、住宅・土地統計調査などの行政データと連携し、モデル精度のさらなる向上を目指したい。

    おわりに

    今回の検証を通じて、

    PLATEAUは3D表示のためだけのデータではない

    ことを改めて実感しました。

    LOD1の建物データと高さ情報だけでも、公開統計と組み合わせることで、建物単位人口推計という政策支援モデルを構築できることが確認できました。

    一方で、このようなモデルを構築するには、単純なGIS処理だけでは不十分です。

    グリッド品質の検証、人口総量保存監査、人口配分モデルの比較、実建物との照合など、多数の空間解析と試行錯誤が必要となります。

    今回の検証では、生成AIエージェントを活用することで、こうした試行錯誤の大部分を自動化し、短時間で複数のモデルを構築・比較できる可能性も確認できました。
    具体的には、

    • PLATEAU建物と用途地域の重複判定
    • 建物ごとの代表用途地域の決定
    • 用途地域別標準階高の付与
    • 建物推定階数の自動算出
    • HEXグリッドの品質監査と隙間検出
    • Voronoi分割によるHEXグリッド再構築
    • 人口総量保存監査
    • 面積重みモデルおよび対数重みモデルの自動構築
    • モデル間の差分分析
    • 極端値建物の抽出と実建物との照合
    • 解析結果の監査レポート作成

    などを、自然言語による指示のみで繰り返し実行することができました。

    特に、モデル構築後に問題点を発見し、重み式を変更して再計算を行い、その結果を自動的に比較・監査する一連の試行錯誤を短時間で繰り返せたことは大きな成果でした。

    従来であれば、多数のジオプロセシングツール、Pythonスクリプト、品質確認作業を組み合わせながら数日から数週間を要する解析であっても、生成AIエージェントを活用することで、仮説立案から検証までのサイクルを大幅に高速化できる可能性が確認できました。

    また、面積重みモデルと対数重みモデルを比較した結果、それぞれに長所と短所が存在することが明らかとなりました。今後は、建物規模や用途に応じてモデルを切り替えるハイブリッド型人口配分モデルの検討も進めていきたいと考えています。

    従来の町丁目単位・メッシュ単位の分析では困難であった建物単位の政策立案が可能となります。

    今後は、

    • 高齢者避難支援
    • 空き家対策
    • 公共施設配置評価
    • 都市計画・地域分析

    など、自治体業務へのさらなる応用可能性を検証していきたいと考えています。

    次回予告

    今回構築した建物単位人口データは、単なる人口推計に留まりません。

    次回は、このデータと洪水浸水想定区域を組み合わせ、

    「浸水区域内の低層住宅に居住する人口」

    を建物単位で推計してみたいと思います。

    特に、

    • 浸水区域内の1階建て住宅人口
    • 浸水区域内の高齢者人口
    • 垂直避難が困難な可能性のある建物
    • 避難所ごとの想定避難者数

    などを可視化することで、建物単位人口推計が防災分野にどのように活用できるのかを検証する予定です。

    従来の町丁目単位や250mメッシュ単位では困難であった、

    「どの建物に、どのような支援が必要なのか」

    という視点から、避難支援や避難所配置のあり方を考えていきます。
    図7:次回イメージ図

    関連記事

    ▶ 第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で検証する
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • 自治体GISにおける人口統計データの構造要件を生成AIで検証する

    ~250mメッシュ・HEX・用途地域を用いた健康遊具配置分析の検証~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第9回です。

    関連記事

    ▶ 第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の回答は信用できるのか(検証と説明責任)
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    前回の記事では、生成AIとGISを活用した健康遊具配置分析について、その分析過程と説明責任の重要性を検証しました。

    その結果、

    ・人口集計方法の確認
    ・分析手順の再現
    ・MCPによる検証
    ・カバー率の再計算

    を通じて、AIの回答そのものではなく、分析過程を確認することの重要性が見えてきました。

    しかし、新たな疑問も生まれました。

    今回利用した人口データは町丁目単位です。

    GIS分析では一般的な方法ですが、

    本当に人口は町丁目内に均等に存在しているのでしょうか。

    例えば、

    ・河川
    ・池
    ・工業地域
    ・大規模公園

    など、人が居住していない場所も存在します。


    人口モデルを見直す

    第7回では町丁目人口を利用して健康遊具の最適配置を行いました。

    一方で、施設配置のような政策シミュレーションでは、

    人口統計そのものよりも、人口をどこに配置するかという人口モデルの違いが結果を左右する

    ことがあります。

    そこで今回は、町丁目人口を出発点としながら、用途地域を用いて人口分布を補正するモデルを構築し、公園選定結果がどのように変化するかを検証しました。

    HEXグリッドによる人口分布の表現

    用途地域による人口補正を行うことで、町丁目内の人口分布はより現実に近づきます。

    しかし、もう一つ課題があります。

    それは、

    行政界に引きずられる人口分布です。

    町丁目人口は行政統計として整理された単位であるため、どうしても町丁目境界の影響を受けます。

    実際の生活圏は町丁目境界で区切られているわけではありません。

    公園利用、買い物、通学、散歩など、人の行動は行政界を意識せずに連続しています。

    そのため、施設配置を検討する場合には、行政界に依存しない分析単位が望まれます。


    なぜHEXグリッドなのか

    そこで採用したのがHEX(六角形)グリッドです。

    六角形は正方形メッシュと比較して、隣接方向の偏りが少なく、空間分析で広く利用されています。

    特にサービス圏分析や需要分布の可視化では、

    • 境界効果が小さい
    • 隣接関係が均一
    • 滑らかな分布を表現しやすい

    という特徴があります。

    今回の検証では、人口をHEX単位に再配置することで、

    行政界ではなく生活圏に近い形で需要分布を表現することを目指しました。

    なお、生成AIによって作成したHEXグリッド成果物については、ArcGIS Pro上で再監査を実施しました。

    監査の結果、一部縮尺においてグリッドが欠落して見える現象が確認されましたが、レコード数および人口総量は元データと完全に一致していることを確認しています。

    拡大表示ではすべてのHEXが正常に表示されることから、この現象はGeoJSON描画時の表示上の問題であり、人口分析結果そのものには影響しないと判断しました。

    生成AIによる空間分析では、成果物をGIS上で監査するプロセスが不可欠であることも今回の重要な知見となりました。


    人口総量は変えない

    ここで重要なのは、

    人口を移動させても人口総量は変えない

    という点です。

    今回の検証では、

    町丁目人口や250mメッシュ人口を出発点としながら、

    用途地域による重み付けを行い、

    その後HEXへ再配分しています。

    しかし、

    和泉市全体の人口は常に一致するよう管理しています。

    つまり、

    人口を増減させるのではなく、

    人口が存在する可能性の高い場所へ再配置している

    だけです。

    この考え方は、将来的に避難所配置、防犯カメラ配置、街路灯整備など、他の施設配置分析にも応用できます。

    なぜ250mメッシュ人口を使うのか

    用途地域補正やHEXグリッドによって人口分布をより現実に近づけることができます。

    しかし、その出発点となる人口統計自体にも精度の違いがあります。

    これまで利用してきた町丁目人口は、自治体業務でも広く活用されている信頼性の高い統計です。

    一方で、町丁目は行政上の区画であり、人口分布を表現するために設計された単位ではありません。

    そのため、町丁目の面積が大きい場合や、住宅地と非住宅地が混在する場合には、人口分布を詳細に表現することが難しくなります。


    国勢調査メッシュという考え方

    そこで利用したのが国勢調査の250mメッシュです。

    250mメッシュは全国を250m四方の格子で区切り、それぞれのメッシュ単位で人口を集計した統計データです。

    行政界とは無関係なため、

    • 市町村界
    • 町丁目界
    • 用途地域界

    の影響を受けません。

    純粋に「その場所にどれだけ人口が存在するか」を表現できる点が大きな特徴です。


    なぜ250mなのか

    今回利用した250mメッシュは、

    全国的に整備されている人口統計の中でも比較的高い空間解像度を持っています。

    例えば、和泉市全域では約650メッシュが利用対象となりました。

    ここで重要なのは、

    650メッシュで和泉市全域を覆っているわけではない

    という点です。

    国勢調査メッシュは人口が存在する地域を対象とした統計であり、山林や河川など人口が存在しない地域は統計上の対象外となります。

    そのため、

    今回利用した650メッシュは

    「和泉市の人口分布を表現するためのメッシュ」

    であり、

    「和泉市の面積全体を表現するためのメッシュ」

    ではありません。


    メッシュ人口でも課題は残る

    一見すると、

    「250mメッシュ人口を使えば十分ではないか」

    とも考えられます。

    しかし、250mメッシュにも課題があります。

    例えば一つのメッシュの中に、

    • 住宅地
    • 商業施設
    • 工場
    • 公園

    が混在している場合、その人口はメッシュ内に均一に配置されます。

    つまり、

    町丁目より細かくなっただけで、

    依然として

    「どこに人が住んでいるのか」

    という問題は残ります。

    そこで今回の検証では、

    250mメッシュ人口に対しても用途地域による補正を行い、

    さらにHEXグリッドへ再配置することで、

    人口分布の精度向上を試みました。


    今回の検証で確認したかったこと

    今回の目的は、

    単にメッシュ人口を利用することではありません。

    本当に知りたかったのは、

    人口モデルの精度向上が政策判断にどの程度影響するのか

    という点です。

    そこで、

    • 町丁目人口
    • 町丁目人口+用途地域補正
    • 町丁目人口+用途地域補正+HEX
    • 250mメッシュ人口+用途地域補正+HEX

    という4つの人口モデルを作成し、

    健康遊具の最適配置結果がどのように変化するかを比較しました。

    町丁目人口と250mメッシュ人口は完全には一致しない

    ここで一つ補足しておきます。

    今回利用した250mメッシュ人口は、町丁目人口と完全に一致するわけではありません。

    監査の結果、65歳以上人口は

    • 町丁目人口:46,995人
    • 250mメッシュ人口:47,305.739人

    となり、約311人(0.66%)の差が確認されました。

    250mメッシュは行政界とは無関係に配置された格子データであるため、町丁目境界や用途地域境界をまたぐメッシュが多数存在します。

    今回の分析では、これらのメッシュ人口を交差面積に応じて按分しているため、境界付近では人口の再配分が発生します。

    それにもかかわらず差分は0.66%に留まりました。

    これは、

    • 使用した250mメッシュの人口分布が町丁目人口と概ね整合していること
    • 面積按分処理による誤差が限定的であること
    • 用途地域分析に利用する統計基盤として十分な精度を有していること

    を示しています。

    一般的に空間統計では、集計単位を変更すると数%程度の差が生じることも珍しくありません。

    今回の0.66%という差分は、分析結果に実質的な影響を与えない水準であり、250mメッシュ人口を用いた用途地域別人口推計の妥当性を裏付ける結果となりました。


    差分の原因

    当初は市境界処理や人口集計ミスの可能性も考えられました。

    しかし検証の結果、

    • 市境界データの不整合なし
    • 人口総量の集計ミスなし
    • 境界メッシュ按分処理は適正

    であることを確認しています。

    残った差分は、

    国勢調査メッシュ統計特有の

    秘匿処理や統計的な再集約処理

    によるものと判断しました。


    分析への影響

    差分率は0.66%に留まっており、用途地域別人口推計や施設配置検討の結果を左右する水準ではありません。

    そのため本検証では、250mメッシュ人口を十分に利用可能な統計基盤と判断し、以降の分析を進めています。

    今回比較した4つの人口モデル

    今回の検証では、人口モデルを段階的に高度化しながら、公園選定結果への影響を比較しました。

    Case A 町丁目人口

    最も一般的な方法です。

    町丁目人口をそのまま利用し、町丁目内に均等分布していると仮定します。

    町丁目人口

    サービス圏分析

    公園選定

    Case B 町丁目人口+用途地域補正

    町丁目人口を用途地域ごとに再配分します。

    町丁目内の人口分布を、土地利用に応じて補正します。

    町丁目人口

    用途地域補正

    サービス圏分析

    公園選定

    Case C 町丁目人口+用途地域補正+HEX

    用途地域で補正した人口をHEXグリッドへ再配置します。

    行政界の影響を小さくし、生活圏に近い人口分布を表現します。

    町丁目人口

    用途地域補正

    HEX

    サービス圏分析

    公園選定

    Case D 250mメッシュ人口+用途地域補正+HEX

    国勢調査250mメッシュを利用し、さらに用途地域補正とHEX再配置を行います。

    今回の検証で最も高精度な人口モデルです。

    250mメッシュ人口

    用途地域補正

    HEX

    サービス圏分析

    公園選定

    用途地域による人口補正の考え方

    用途地域を利用した人口補正と聞くと、

    「用途地域ごとの人口割合で按分したのではないか」

    と思われるかもしれません。

    しかし今回採用した方法は、それとは異なります。

    重要なのは、

    用途地域別人口比率ではなく、用途地域別人口密度を利用している

    という点です。


    人口比率を使うと何が問題か

    例えば和泉市全体で、用途地域別人口が次のようになっていたとします。

    用途地域人口
    住居系22,769人
    商業系916人
    工業系6,948人

    この場合、

    人口比率は次のようになります。

    用途地域人口比率
    住居系74.3%
    商業系3.0%
    工業系22.7%

    一見すると合理的に見えます。

    しかし、この方法には大きな問題があります。

    人口だけを見ているため、

    用途地域の面積を考慮していない

    のです。


    面積を考慮すると見え方が変わる

    実際には用途地域ごとに面積が異なります。

    今回の和泉市の集計結果は次のようになりました。

    用途地域人口面積
    住居系22,768.820,746,538㎡
    商業系915.5880,003㎡
    工業系6,948.48,172,350㎡

    ここから人口密度を計算します。

    人口密度 = 人口 ÷ 面積

    用途地域人口密度
    住居系0.001097
    商業系0.001040
    工業系0.000850

    すると見えてくるものが変わります。

    用途地域別に人口を見ると、工業系用途地域にも約6,948人が居住していることが分かります。
    ただし、面積を考慮して人口密度で比較すると、工業系用途地域は住居系用途地域より低く、住居系を1.0とした場合の相対値は0.775となります。


    人口密度から相対重みを求める

    そこで今回は、

    住居系の人口密度を基準値1.0としました。

    計算式は次の通りです。

    用途地域重み
    =
    用途地域人口密度
    ÷
    住居系人口密度

    和泉市の場合、

    用途地域自動算出重み
    住居系1.000
    商業系0.948
    工業系0.775
    非居住系0.251

    となりました。

    これは、

    住居系と比較して、

    • 商業系は94.8%
    • 工業系は77.5%
    • 非居住系は25.1%

    の人口密度を持つことを意味します。

    図5 用途地域別人口密度の比較

    住居系用途地域を基準とした場合、商業系用途地域は約95%、工業系用途地域は約78%の人口密度となった。工業系用途地域にも一定の人口が居住しているものの、住居系用途地域ほど高密度ではないことが分かる。

    図6 用途地域別居住人口の比較

    工業系用途地域には約6,948人が居住しており、住宅系用途地域に次ぐ人口規模となっている。用途地域図だけでは把握しにくい居住実態を定量的に確認することができる。

    図7 和泉市工業系用途地域における高齢者人口分布

    工業系用途地域内には約5,500人(推計)の高齢者が居住している。工場や事業所が立地するイメージの強い地域であるが、実際には高齢者が生活する区域も多く含まれていることが分かる。

    特にエリアNo.11では約1,800人の高齢者が居住しており、工業系用途地域であっても福祉、防災、移動支援等の施策を検討する際には重要な対象区域となる。


    なぜ固定係数を使わなかったのか

    当初は、

    用途地域固定重み
    住居系1.0
    商業系0.6
    工業系0.2

    という単純な係数を想定していました。

    しかし今回の実測結果は、

    用途地域自動重み
    住居系1.000
    商業系0.948
    工業系0.775

    でした。

    特に工業系は、

    想定していた0.2ではなく0.775となっています。

    これは、

    和泉市の工業系地域が純粋な工場地帯ではなく、

    住宅や生活施設を含む地域として機能していることを示しています。※実際の用途区分は準工業地域です。


    なぜ自治体ごとに計算する必要があるのか

    もし全国一律で

    住居系 = 1.0
    商業系 = 0.6
    工業系 = 0.2

    を適用すると、

    和泉市では実態よりも工業地域の人口を大幅に過小評価してしまいます。

    逆に都市部では商業地域の人口密度が住居系を上回る可能性もあります。

    つまり、

    同じ用途地域であっても、

    自治体によって人口構造は異なります。

    そのため、

    用途地域補正を行う場合は、

    固定係数を適用するのではなく、

    自治体ごとの人口密度から重みを算出する必要があります。

    今回の検証では、

    人口比率ではなく人口密度を利用することで、

    和泉市の実態を反映した人口モデルを構築することができました。


    4つの人口モデルによる政策判断の比較

    ここまで構築した4つの人口モデルを用いて、健康遊具を追加設置する公園を比較しました。

    比較条件は統一し、

    • 既存健康遊具500m圏
    • 候補公園248箇所
    • 追加設置数3箇所
    • 500mサービス圏
    • Greedy法による最適選定

    を共通条件としています。


    Case A 町丁目人口

    最も一般的な分析方法です。

    町丁目人口をそのまま利用し、町丁目内に均一に人口が分布しているものとして評価しました。

    指標結果
    追加後カバー率42.35%
    改善幅+9.00pt

    選定公園

    1. 鶴山台西公園(159)
    2. 和気6号公園(332)
    3. みたち山2号公園(275)

    Case B 町丁目人口+用途地域補正

    町丁目人口を用途地域別人口密度で補正し、町丁目内の人口分布を再構築しました。

    指標結果
    追加後カバー率45.84%
    改善幅+11.45pt

    選定公園

    1. 鶴山台志保池公園(156)
    2. 中央公園(149)
    3. 和気7号公園(333)

    Case Aとの比較

    項目変化
    追加後カバー率+3.50pt
    改善幅+2.46pt
    選定公園3公園すべて変更

    ここで初めて政策判断が変化しました。

    同じ町丁目人口を使用していても、用途地域を考慮することで優先される公園が入れ替わったことになります。


    Case C 町丁目人口+用途地域補正+HEX

    用途地域で補正した人口をHEXグリッドへ再配置しました。

    指標結果
    追加後カバー率43.71%
    改善幅+11.10pt

    選定公園

    1. 鶴山台志保池公園(156)
    2. 中央公園(149)
    3. 和気7号公園(333)

    Case Bとの比較

    項目変化
    選定公園変化なし
    カバー率微差

    HEX化により人口分布はより滑らかになりましたが、政策判断を変えるほどの差は生じませんでした。


    Case D 250mメッシュ人口+用途地域補正+HEX

    最も高精度な人口モデルです。

    国勢調査250mメッシュ人口を利用し、用途地域補正とHEX再配置を行いました。

    指標結果
    追加後カバー率44.29%
    改善幅+11.51pt

    選定公園

    1. 鶴山台志保池公園(156)
    2. 中央公園(149)
    3. 和気7号公園(333)

    Case Cとの比較

    項目変化
    追加後カバー率+0.58pt
    改善幅+0.40pt
    新規カバー人口+224人
    選定公園変化なし

    250mメッシュを利用することで人口分布の精度は向上しましたが、選定公園は変化しませんでした。


    検証結果から見えたこと

    今回の4段階比較で最も重要な結果は、

    政策判断を変えたのは用途地域補正であり、HEX化や250mメッシュ化ではなかった

    という点です。

    整理すると、

    比較結果
    Case A → B公園選定が変化
    Case B → C公園選定は変化なし
    Case C → D公園選定は変化なし

    つまり、

    単純な町丁目人口モデルから一歩進み、

    用途地域によって人口分布を補正するだけで、政策判断そのものが変わりました。

    一方で、その後のHEX化や250mメッシュ化は分析精度を向上させたものの、今回の和泉市では最終的な意思決定を変えるほどの影響は確認されませんでした。

    この結果は、

    「より細かいデータを使うこと」よりも、

    「人口をどのように空間配置するか」という人口モデルの設計が重要である

    ことを示しています。

    今回の検証から見えたこと

    今回の検証では、

    • 町丁目人口
    • 町丁目人口+用途地域補正
    • 町丁目人口+用途地域補正+HEX
    • 250mメッシュ人口+用途地域補正+HEX

    という4つの人口モデルを比較しました。

    結果として、

    用途地域補正によって政策判断そのものが変化し、

    一方でHEX化や250mメッシュ化は分析精度を向上させるものの、今回の和泉市では最終的な公園選定結果を変えるには至りませんでした。

    これは自治体GISの観点から見ても非常に興味深い結果です。

    ※ HEX成果物については、ArcGIS Pro上で再監査を実施し、人口総量が保持されていることを確認しています。


    生成AIで見えた可能性

    今回、私が最も驚いたのは分析結果そのものではありません。

    この検証過程です。

    通常であれば、

    • 人口統計の収集
    • 用途地域データの整理
    • 人口再配分モデルの作成
    • HEXグリッド生成
    • サービス圏解析
    • カバー率比較
    • 公園選定結果の比較
    • 監査

    を繰り返し実施する必要があります。

    しかも今回は4種類の人口モデルを比較しています。

    従来のGIS業務であれば、相当な工数を要する検証です。


    生成AIとの対話が分析を深めた

    一方、今回は生成AIとの対話を通じて分析を進めました。

    もちろん途中では、

    • レイヤ指定ミス
    • データ参照ミス
    • 推測による誤った処理

    も発生しました。

    しかし、その都度監査を行い、

    「なぜその結果になったのか」

    を確認しながら分析を進めることで、

    最終的には

    用途地域補正が政策判断を変えていた

    という重要な知見に到達しました。

    これは最初から想定していた結論ではありません。

    分析を進める過程で初めて見えてきた結果です。


    生成AIは答えを出すだけではない

    生成AIというと、

    「質問すると答えを返してくれるツール」

    というイメージがあります。

    しかし今回の検証で感じたのは、

    生成AIの価値は答えそのものではなく、

    仮説を作り、検証し、監査しながら知見を深めていくプロセス

    にあるということです。

    実際、

    用途地域補正の必要性

    用途地域別人口密度による重み付け

    HEXの効果

    250mメッシュの効果

    といった論点は、対話を重ねながら徐々に整理されていきました。

    今回の検証では、生成AIが作成したHEX成果物をArcGIS Pro上で監査した結果、一部成果物に不整合が見つかりました。

    しかし、人口総量やレコード数を検証した結果、分析結果そのものには影響しないことを確認しています。

    このことは、生成AIによる空間分析では、AIの結論だけではなく、成果物そのものをGIS上で検証するプロセスが不可欠であることを示しています。

    生成AIとGISを組み合わせた分析では、

    AIによる計算

    成果物出力

    GISによる監査

    再評価

    というプロセスそのものが重要になります。

    HEXグリッドの「真の価値」の再定義

    今回の分析では、町丁目単位で集計した場合とHEXグリッドで集計した場合で、最終的な優先順位に大きな差は見られませんでした。

    そのため、

    「HEXグリッドを使わなくても同じ結果ではないか」

    と思われるかもしれません。

    しかし、HEXグリッドの本当の価値は、今回の順位付け結果そのものではありません。

    HEXグリッドは、行政界に依存しない均一な単位で人口や施設を評価できるため、実際の住民行動に近い分布を表現できます。

    例えば住民は、

    • 公園を利用する
    • スーパーへ買い物に行く
    • 学校へ通学する
    • 散歩をする
    • 医療機関を利用する

    といった行動を行う際に、町丁目や自治会の境界を意識して移動しているわけではありません。

    実際には、行政界をまたいで最寄りの施設を利用しています。

    町丁目単位の分析では、境界付近の人口がどちらの町丁目に属するかによって結果が左右されることがあります。

    一方、HEXグリッドでは均一な空間単位で分析するため、

    「人がどこに住み、どの方向へ移動しやすいのか」

    という実際の生活圏に近い分布を把握できます。


    将来的な活用可能性

    今回の公園分析では結果に大きな差は生じませんでしたが、HEXグリッドの考え方は次のような分析で真価を発揮します。

    • 公園利用圏の分析
    • 買い物弱者対策
    • 通学路安全対策
    • 医療施設の配置検討
    • 高齢者の移動支援
    • 災害時避難行動の分析

    これらはすべて、行政界ではなく「人の行動範囲」が重要になる分野です。

    その意味で、HEXグリッドは単なる集計単位ではなく、

    「行政界で区切られた地域を見る」のではなく、「住民の生活圏を見る」ための分析手法

    と言えるでしょう。

    第9回の結論

    今回の和泉市検証を通じて、

    生成AIは単なる作業自動化ツールではなく、

    GIS分析における「思考の相棒」として機能する可能性を感じました。

    もちろん結果を鵜呑みにしてはいけません。

    監査も必要です。

    しかし適切なデータ指定と検証手順を与えることで、

    従来であれば多大な時間を要した比較検証を短時間で繰り返し実施できることも確認できました。

    そしてその過程で、

    自治体GISにおける人口モデルの構造要件という、当初想定していなかった知見にまで到達することができました。

    次回予告

    今回の分析では、工業系用途地域にも約5,500人の高齢者が居住していることが分かりました。

    しかし、同じ5,500人でも、その人たちはどのような建物に住んでいるのでしょうか。

    次回は国土交通省PLATEAUの3D都市モデルを活用し、

    • 高齢者は低層住宅と中高層建物のどちらに多く居住しているのか
    • 工業系用途地域の建物高さにはどのような特徴があるのか
    • 洪水リスクや地形条件とどのような関係があるのか

    について検証します。

    人口を「地域」で見るだけでなく、「建物」で捉えることで、これまで見えなかった都市構造の実態に迫ります。

    関連記事

    ▶ 第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の回答は信用できるのか(検証と説明責任)
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • ~健康遊具分析で見えた説明責任とMCPの役割~


    ~AIの分析結果をどう検証するか~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第8回です。

    関連記事

    ▶ 第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で検証
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ


    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第8回です。

    はじめに

    前回の記事では、生成AIとGISを活用し、和泉市の健康遊具配置について検証しました。

    既存健康遊具の配置状況を可視化し、サービス圏分析や人口統計との重ね合わせを行うことで、健康遊具の整備候補地を抽出しました。

    また、候補公園の中から3公園を選定し、整備効果を試算しました。

    しかし、その後に分析結果を検証したところ、一つの重要な課題が見つかりました。

    それは、

    「AIの回答そのものだけでなく、分析条件や集計方法も検証しなければならない」

    ということです。

    自治体業務では、

    ・どの公園を選んだのか

    だけではなく、

    ・なぜその公園を選んだのか

    ・その数値はどのように算出したのか

    まで説明できなければなりません。

    今回の記事では、健康遊具分析の検証過程を通じて、生成AI活用における説明責任と検証の重要性について紹介します。


    前回記事の結果を再検証した

    前回の記事では、健康遊具を整備する候補公園を抽出し、3公園へ追加整備した場合の効果を試算しました。

    しかし、その後の検証で、

    カバー率の計算に使用していた人口総数の扱いを再確認する必要があること

    が分かりました。

    GIS分析におけるカバー率は、一般的に次の式で求めます。

    カバー率 = サービス圏内人口 ÷ 対象人口 × 100

    つまり、

    ・サービス圏内人口

    ・対象人口

    の両方が正しく定義されていなければなりません。


    検証側にも課題があった

    当初の検証では、

    65歳以上人口

    42,408人

    を分母として利用していました。

    しかし、監査を行った結果、この42,408人は和泉市全体の65歳以上人口ではありませんでした。

    実際には、

    分析途中で作成された中間レイヤの population_65_plus 属性合計

    であり、

    和泉市全体の人口総数とは異なる値でした。

    改めて確認したところ、

    和泉市_人口レイヤの population_65_plus 全183件の合計は

    46,995人

    でした。

    つまり、

    分析条件そのものを見直す必要があったのです。


    正式な条件で再計算した

    そこで、

    和泉市全体の65歳以上人口46,995人を分母として、

    改めて健康遊具のカバー率を計算しました。

    今回採用した方法は、町丁目人口を面積按分する一般的なGIS分析手法です。

    計算式は次の通りです。

    カバー人口 =

    町丁目人口 ×

    (町丁目とサービス圏の重なり面積)

    ÷

    町丁目面積

    この方法で再計算した結果、

    既存健康遊具500mサービス圏内人口

    15,676人

    カバー率

    33.36%

    となりました。

    さらに、

    前回選定した3公園を追加した場合、

    カバー人口

    21,030人

    カバー率

    44.75%

    となりました。

    追加でカバーできる65歳以上人口は

    約5,354人

    でした。

    重要なのは、

    数値が変わったことではありません。

    その数値がどのような前提で算出されたのかを説明できるようになったことです。


    第1回で確認したこと

    本シリーズ第1回では、

    生成AI

    MCP Server

    ArcGIS Online

    という流れを確認しました。

    実際に返却されるJSONを確認し、

    「AIがどのデータを取得しているのか」

    を検証しました。

    これは、

    「AIが見ているデータは正しいのか」

    を確認した作業です。

    その結果、

    MCP経由で取得されるGISデータの信頼性について一定の確認ができました。


    今回確認したかったこと

    しかし、今回問題になったのはデータ取得ではありません。

    取得したデータを、

    AIがどのように利用し、

    どのような集計を行い、

    どのような数値を算出したのかです。

    つまり、

    「AIは何を見ているのか」

    ではなく、

    「その結果をGISとして再現できるのか」

    を検証する段階に入りました。


    MCPとしてGIS処理を整理した

    そこで今回、

    従来GISで行ってきた分析手順を、

    AIが再利用できる形でMCPとして整理しました。

    対象としたのは、

    ・500mサービス圏作成

    ・サービス空白地域抽出

    ・候補公園抽出

    ・町丁目人口との重なり判定

    ・人口集計

    ・カバー率算出

    です。

    これらはGISでは一般的な処理です。

    しかし、

    AIが出した結果を再現しようとすると、

    どの人口を利用したのか

    どの集計方法を採用したのか

    どの分母を使用したのか

    を明確にする必要があります。

    今回の検証では、

    その分析過程を一つずつGIS処理として再現し、

    分析条件を確認しました。

    その結果、

    AIの回答だけでなく、

    検証側で利用していた人口総数の扱いにも課題があることを発見できました。


    MCP Inspectorによる検証

    今回の検証では、MCP Inspectorを利用して実装したGIS処理を確認しました。

    MCP Inspectorは、MCPサーバに登録されたツールや入力条件、返却結果を確認できる専門職員がAIの処理を「査読(検算)」するためのツールです。

    図  MCP Inspectorによる人口保存確認ツールの検証

    このツールは、人口按分前後で総人口が保持されているかを検証するためのツールです。

    入力として、

    ・元人口レイヤ

    ・按分後人口レイヤ

    ・人口フィールド

    などを受け取り、人口総数の差異を確認します。

    今回の検証では意図的に入力パラメータを指定せず実行したところ、

    source_population_field is required

    というエラーが返されました。

    これは単なるエラーではなく、必要なGISデータが存在しない場合は分析を実行しない設計であることを示しています。

    生成AIは不足する情報を推測して回答する場合があるが、本ツールでは必須データが存在しない場合は処理を中断します。

    この仕組みによって、推測ではなくGISデータに基づく分析が保証され、自治体業務では重要な意味を持ちます。

    生成AIは不足する情報を推測して回答することがありますが、行政実務では推測による分析は認められません。

    今回確認したMCPツール群は、必要なGISデータが存在しない場合は処理を実行せず、分析を中断する設計となっていました。

    つまり、推測ではなくデータに基づいて分析を行う思想で構築されていることが確認できたのです。

    今回の検証は44.75%という数値を再計算することが目的ではありません。

    分析過程を構成するGIS処理が、どのような入力を受け取り、どのような条件で実行されるのかを確認することが目的でした。

    このような仕組みによって、AIの回答だけでなく、その背後にある分析過程も検証できるようになります。

    AIへの制約条件

    今回のMCPによる検証では、AIが自由に推論することを避けるため、プロンプトにも制約条件を設定しました。

    主な内容は次の通りです。

    ・推測で人口値を作らないこと

    ・利用した統計年を明示すること

    ・計算式を省略しないこと

    ・データが存在しない場合は不明とすること

    ・GISデータに基づいて判断すること

    自治体業務では説明責任が求められます。

    特に行政では、

    「なぜこの3公園を選定したのか」

    だけでなく、

    「44.75%という数値はどのように算出したのか」

    まで説明できなければなりません。

    その際、AIが示した結果だけを説明することはできません。

    例えば今回であれば、

    ・対象とした65歳以上人口

    ・500mサービス圏の範囲

    ・人口の按分方法

    ・候補公園ごとの新規カバー人口

    ・カバー率の算出過程

    といった中間データまで含めて説明できる必要があります。

    住民説明会や議会において、

    「なぜこの3公園を優先したのか」

    「なぜ44.75%という結果になったのか」

    と問われた際に、AIの回答をそのまま示すのではなく、計算根拠となる人口集計結果や分析過程を即座に提示できることが重要です。

    そのため今回の検証では、AIに結果だけを求めるのではなく、

    ・推測で人口値を作らないこと

    ・利用した統計年を明示すること

    ・計算根拠を示すこと

    ・不明な場合は不明と回答すること

    といった制約条件を設けました。

    これらの制約条件は、AIの自由な推論を制限するためではなく、分析結果の再現性と説明可能性を確保するために設定したものです。

    生成AIを行政実務で活用するためには、回答の正しさだけでなく、その結果に至る過程を説明できることが不可欠だと考えています。

    総務省調査から見える課題

    総務省の自治体向け調査でも、

    生成AI活用の最大の課題として

    「AI生成物の正確性への懸念」

    が挙げられています。

    今回の検証では、AIの回答だけでなく、分析に使用した人口総数や集計条件についても再確認する必要があることが分かりました。

    これは、生成AI活用において回答だけでなく、計算条件や分析過程を確認することの重要性を示しています。

    一方で、

    適切なプロンプト設計

    データ取得の検証

    分析ロジックの検証

    を組み合わせることで、

    生成AIを自治体業務で利用できる可能性も見えてきました。

    MCP化による再利用と自動化

    ここまで読まれた方の中には、

    「AIの回答を人間がこれほど細かく検証しなければならないのであれば、かえって手間が増えるのではないか」

    と感じる方もいるかもしれません。

    確かに今回の検証では、

    ・対象データの確認

    ・サービス圏の作成

    ・人口集計方法の確認

    ・カバー率計算の検証

    など、多くの作業を行いました。

    しかし、今回の目的は毎回人手で検証することではありません。

    重要なのは、検証によって正しい分析手順を明確にし、その手順をMCPツールとして再利用可能な形に整理することです。

    例えば今回の健康遊具分析では、

    ・500mサービス圏作成

    ・サービス空白地域抽出

    ・候補公園抽出

    ・人口集計

    ・カバー率算出

    という一連のGIS分析手順を整理しました。

    一度この手順がMCPツールとして実装されれば、次回以降は生成AIが同じ手順を自動的に実行できるようになります。

    つまり、

    初回
    → 人間が検証しながら分析手順を構築する

    2回目以降
    → MCPツールを利用して同じ分析を短時間で再現する

    という流れになります。

    これは従来のGIS業務におけるモデル構築と同じ考え方です。

    最初は時間をかけて分析手順を設計しますが、一度手順が確立すれば、その後は繰り返し利用することができます。

    今回の検証によって得られた最大の成果は、44.75%という数値そのものではありません。

    むしろ、分析条件を追跡することで、分母の誤りを発見し、再計算できたことに意味があります。

    誰が実施しても同じ手順で同じ結果を再現できる分析フローを構築できたことです。

    将来的には、職員が

    「健康遊具が不足している地域はどこか」

    と自然言語で質問するだけで、

    MCPツール群が自動的に分析を実行し、

    分析結果だけでなく、その根拠となる計算過程まで提示できるようになると考えています。

    次回に向けて

    今回利用した人口データは町丁目人口です。

    町丁目単位では按分で凌ぎましたが、それでも『河川や池に人は住んでいない』という限界があります。

    それ以外にも

    工業地域

    大規模公園

    など、人が居住していない場所にも人口が配分されている可能性があります。

    そこで次回は、

    ・250mメッシュ人口

    ・用途地域

    ・PLATEAU建築物データ

    を活用し、

    より現実に近い人口分布を表現できるのかを検証します。

    おわりに

    今回の検証を通じて見えてきたのは、生成AI活用の本当の課題は回答を得ることではなく、その根拠を確認できる仕組みを持つことだということです。

    今回の健康遊具分析では、AIの回答を検証する過程で、人口集計方法だけでなく、人口総数の扱いについても見直すことになりました。

    自治体業務では、

    「なぜこの公園を選んだのか」

    だけでなく、

    「どの人口を対象としたのか」

    「どのように計算したのか」

    まで説明できる必要があります。

    住民説明会や議会で説明する際も、AIの回答だけではなく、人口集計結果や分析過程を提示できなければなりません。

    今回の検証は、そのための仕組みづくりの第一歩になりました。

    関連記事

    ▶ 第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で検証
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • 健康遊具はどこに整備すべきか?生成AIとGISで検証してみた

    ~和泉市の町丁目人口データを活用した施設配置分析の実践~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第7回です。

    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第5回:e-Stat APIとGISを結合するときの落とし穴
    ▶第6回:PLATEAU MCPは自治体GISを変えるのか
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    前回の記事では、e-Stat APIとArcGIS Onlineを連携し、自治体の人口統計データを生成AIから活用できる環境を構築しました。

    今回は、その仕組みを実際の自治体業務へ応用し、

    「健康遊具はどこへ整備すれば最も効果的なのか」

    というテーマで分析を行いました。

    対象としたのは大阪府和泉市です。

    高齢化の進展に伴い、健康増進を目的とした健康遊具の需要は今後さらに高まることが予想されます。

    和泉市には数百の公園があります。

    その中から、どの公園へ健康遊具を整備すれば
    最も多くの高齢者が利用できるのかを
    職員が一つひとつ検討するのは容易ではありません。

    しかし、

    ・現在どこに健康遊具があるのか

    ・どの地域がサービス圏から外れているのか

    ・新たに整備するならどこが最適なのか

    を客観的に判断することは容易ではありません。

    そこで今回は、
    人口統計と公園データを用いて
    整備効果の高い公園を自動的に抽出できるか
    健康遊具の適正配置分析の検証を行いました。


    分析に使用したデータ

    今回利用した主なデータは以下のとおりです。

    公園データ

    和泉市内の公園位置データ

    健康遊具データ

    既存健康遊具設置公園

    人口データ

    e-Stat APIから取得した町丁目人口データ

    分析環境

    ・ArcGIS Online

    ・ArcGIS MCP Server

    ・Codex CLI

    ・生成AI

    AIへの指示と分析ルール

    今回は生成AIを利用していますが、AIが推測で分析結果を作成しないよう、事前に複数の制約条件を設定しています。

    特に自治体業務では、分析結果の説明責任が求められるため、データの出典や計算根拠を明確にすることを重視しました。

    主な制約条件

    • 人口値を推測で作成しないこと
    • 実在する統計データのみ利用すること
    • 利用した統計年を明示すること
    • 計算式を省略しないこと
    • 分析結果の根拠となるデータを示すこと
    • データが存在しない場合は「不明」と回答すること
    • GISレイヤを直接確認せずに推測で判断しないこと
    • ArcGIS Online上の実データを参照して分析すること

    実際に使用したプロンプトの一部

    分析に使用する人口データは
    令和2年国勢調査を利用すること。

    人口値を推測で補完しないこと。

    統計年を明示すること。

    計算式を省略しないこと。

    データが存在しない場合は
    推測で回答せず、その旨を明記すること。

    分析結果はArcGIS Online上の実データに基づくこと。

    STEP1 現在の健康遊具配置を可視化する

    まずは既存健康遊具の設置状況をマップ上へ表示しました。

    プロンプト

    和泉市の既存健康遊具ポイントを抽出してください。

    対象:
    ・健康遊具のみ

    実施内容:
    ・健康遊具ポイントを表示
    ・公園名を表示
    ・設置箇所数を集計

    成果物:
    AI_STEP1_既存健康遊具

    今回は可視化のみ。
    分析は行わない。

    【図1 既存健康遊具配置図】

    可視化してみると、市域全体に配置されているように見えます。

    しかし、

    「本当に市民全体が利用しやすい配置なのか」

    は、この段階では分かりません。


    STEP2 サービス圏分析を実施

    次に健康遊具から500m圏をサービス圏として設定しました。

    500mは徒歩圏としてよく利用される距離です。

    プロンプト

    既存健康遊具ポイントから
    500mサービス圏を作成してください。

    条件:
    ・重複可
    ・徒歩圏の近似として500mを使用

    成果物:
    AI_STEP2_健康遊具サービス圏

    出力:
    ・サービス圏ポリゴン
    ・カバー人口集計

    【図2 健康遊具サービス圏】

    サービス圏を重ねると、一定範囲はカバーできているものの、市域内にはサービス圏が届いていない地域が存在することが分かりました。


    STEP3 空白地域を抽出

    既存サービス圏を除外し、健康遊具が利用しにくい地域を抽出しました。

    プロンプト

    和泉市行政界から
    健康遊具サービス圏を除外してください。

    目的:
    健康遊具未整備地域の抽出

    成果物:
    AI_STEP3_空白地域

    出力:
    ・空白地域ポリゴン
    ・面積集計

    【図3 健康遊具空白地域】

    ここで空白地域に居住する高齢者人口を集計しました。

    分析の結果、令和2年国勢調査に基づく和泉市の65歳以上人口は46,995人でした。

    既存健康遊具500mサービス圏内人口は15,676人、
    サービス圏外人口は31,319人でした。

    健康遊具カバー率 =

    健康遊具500m圏内の65歳以上人口
    ÷
    市内65歳以上人口
    ×100

    = 15,676 ÷ 46,995 ×100

    = 33.36%

    つまり、市内高齢者の約7割が健康遊具の徒歩圏外に居住していることが分かりました。

    これにより、

    「どこに不足しているか」

    が視覚的に把握できるようになります。

    しかし、

    不足地域が分かっても、

    「どこへ整備すれば最も効果的なのか」

    はまだ分かりません。


    STEP4 人口データと重ね合わせる

    そこで町丁目人口データを重ね合わせました。

    プロンプト

    空白地域と町丁目人口を重ね合わせてください。

    対象:
    ・65歳以上人口

    実施内容:
    ・空白地域内人口を集計
    ・人口密度を算出

    成果物:
    AI_STEP4_空白地域人口

    出力:
    ・人口ランキング
    ・人口分布マップ

    空白地域の中でも人口規模には差があります。

    同じ面積でも、

    人口が多い地域と少ない地域では整備効果が異なります。

    つまり、

    空白地域の広さではなく、

    「どれだけの市民がサービス圏外にいるのか」

    が重要になります。


    STEP5 AIによる候補地抽出

    この約15,800人を対象に、どの公園へ整備すると最も効果的なのかを検証しました。

    ここで生成AIとMCPを活用しました。

    AIは人間のように地図を見るわけではありません。

    MCPを通じてGISデータへアクセスし、

    ・サービス圏

    ・人口データ

    ・公園データ

    を組み合わせて分析します。

    プロンプト

    空白地域内または隣接する公園を抽出してください。

    条件:
    ・健康遊具未設置
    ・空白地域解消効果が期待できる

    評価項目:
    ・周辺高齢者人口
    ・空白地域面積
    ・既存サービス圏との重複

    成果物:
    AI_STEP5_候補公園

    出力:
    候補公園一覧

    その結果、

    空白地域周辺の公園を抽出したところ、
    候補地は248公園となりました。

    しかし、
    すべての公園へ健康遊具を整備することは
    予算面から現実的ではありません。

    【図5 候補公園抽出結果】

    さらに、

    候補公園へ健康遊具を設置した場合のサービス圏も試算しました。

    【図6 候補公園追加後のサービス圏】


    STEP6 最適な3公園を選定

    候補地の中から、最も多くの市民をカバーできる組み合わせをAIが探索しました。

    プロンプト

    空白地域内または隣接する公園を抽出してください。

    条件:
    ・健康遊具未設置
    ・空白地域解消効果が期待できる

    評価項目:
    ・周辺高齢者人口
    ・空白地域面積
    ・既存サービス圏との重複

    成果物:
    AI_STEP5_候補公園

    出力:
    候補公園一覧

    【図7 AI選定結果】

    空白地域周辺の公園を抽出した結果、候補地は248公園となりました。

    しかし、すべての公園へ健康遊具を整備することは現実的ではありません。

    そこで今回の分析では、各公園について500mサービス圏を生成し、

    ・新たにカバーできる65歳以上人口

    ・既存健康遊具サービス圏との重複

    ・他候補地との重複

    を評価しました。

    その結果、248公園の中から、限られた整備数で最も多くの高齢者をカバーできる3公園を選定しました。

    この分析は、従来GISで行われてきたバッファ作成、空白地域抽出、人口集計といったジオプロセシング処理をMCPとして組み合わせて実行したものであり、整備候補地の選定根拠を客観的なデータで説明できる点に特徴があります。

    自治体では、整備要望の多い公園から順番に事業化を検討するケースも少なくありません。しかし、限られた予算の中で整備効果を最大化するためには、「どの公園に設置するか」だけでなく、「何人の市民に効果があるのか」を定量的に把握することが重要です。

    今回の分析では、248公園を同一条件で評価することで、健康遊具整備の優先順位を客観的なデータに基づいて比較できることを確認しました。

    財政効果

    新たに3公園へ健康遊具を整備した場合、

    500m圏内人口は

    15,676人

    21,030人

    へ増加しました。

    カバー率は

    33.36%

    44.75%

    へ改善する結果となりました。

    追加でカバーできる65歳以上人口は約5,354人です。

    改善幅は11.39ポイントとなりました。

    言い換えると、市内のすべての公園へ一律に整備を進めるのではなく、人口分布と既存施設配置を考慮して優先順位を付けることで、少ない整備箇所でも高い事業効果が期待できることが確認できました。


    今回の成果

    今回の検証では、

    ・既存施設の可視化

    ・サービス圏分析

    ・人口統計との重ね合わせ

    ・AIによる候補地選定

    までを一連の流れとして実施できました。

    従来であればGIS担当者が個別に行っていた分析を、生成AIとMCPを活用することで大幅に効率化できる可能性が見えてきました。


    新たな課題も見えてきた

    ここで一つの疑問が生まれました。

    今回利用した人口データは町丁目単位です。

    GIS分析では一般的な方法ですが、

    本当に人口は町丁目内に均等に存在しているのでしょうか。

    例えば、

    ・河川

    ・池

    ・大規模公園

    ・工業地域

    など、人が住んでいない場所も存在します。

    しかし町丁目人口を利用すると、それらの場所にも人口が存在するものとして扱われる場合があります。

    今回の分析では、町丁目人口をサービス圏との重なり面積に応じて按分し、人口を集計しています。

    そのため、従来の単純集計よりも実態に近い分析は可能になりますが、それでも町丁目内の人口分布を完全に再現しているわけではありません。

    つまり、

    分析結果は有効な指標として活用できる一方で、

    人口の分布モデルそのものには改善の余地がある可能性があります。

    ※実際に使用したプロンプトの中に、「推測で人口値を作らないこと」や「計算根拠となる統計年を明示すること」などの制約を含めています。


    次回予告

    今回の分析では、健康遊具の配置候補やカバー率向上効果を確認することができました。

    しかし、その後の検証により、分析結果を評価する際には、

    ・どの人口を対象としたのか

    ・どの集計方法を使用したのか

    ・どのような分析手順で算出したのか

    を確認することの重要性が見えてきました。

    自治体業務では、結果だけでなく、

    「なぜその結果になったのか」

    を説明することが求められます。

    次回は、

    生成AIが導き出した分析結果をどのように検証するのか

    という視点から、

    MCP Inspectorを活用した検証と説明責任について紹介します。

    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第5回:e-Stat APIとGISを結合するときの落とし穴
    ▶第6回:PLATEAU MCPは自治体GISを変えるのか
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • PLATEAU MCPは自治体GISを変えるのか

    ~3D都市モデルを自然言語で扱う実証~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第6回です。

    追記(2026年8月)
    PLATEAU MCPの建物属性取得について再検証を行い、詳細用途、土地利用分類、指定建ぺい率・容積率など、当初未確認だった属性も取得できることを確認しました。本記事はその結果を踏まえて一部補強しています。

    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第5回:e-Stat APIとGISを結合するときの落とし穴
    ▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    PLATEAUは国土交通省が公開している3D都市モデルです。

    近年、生成AIと外部システムを連携するMCP(Model Context Protocol)が注目されており、GIS分野でも活用が始まっています。

    今回、地域GIS研究所ではPLATEAU MCPを実際に利用し、

    ・どのようなデータが利用できるのか
    ・自然言語でどこまで分析できるのか
    ・自治体業務に活用できる可能性はあるのか

    を検証しました。

    その結果、

    PLATEAU MCPはGIS解析ツールではなく、

    「PLATEAUデータを探索・取得するためのAIインターフェース」

    として非常に有効であることが分かりました。

    また、公共空地の集計や空間検索など、従来であればGIS担当者が複数のツールを操作して行っていた作業を自然言語で実行できる可能性も確認できました。

    本記事では、和泉市を対象に実施した検証内容を紹介します。

    都市データ分析は可能なのかを検証してみました。


    PLATEAU MCPとは

    PLATEAU MCPは、PLATEAUが公開している3D都市モデルをAIエージェントから利用するための仕組みです。

    従来であれば、

    • PLATEAUサイトから対象データを探す
    • CityGMLをダウンロードする
    • ArcGIS ProやQGISへ変換する
    • 必要な属性を抽出する

    といった作業が必要でした。

    PLATEAU MCPでは、

    「和泉市の公共空地を集計してください」

    のような自然言語で指示を出すことができます。

    まず最初に確認したこと

    PLATEAU MCPを導入したものの、

    最初は何ができるのか分かりませんでした。

    そこで最初に次の質問を行いました。

    PLATEAU MCPで利用可能なツール一覧を表示してください

    すると、

    • データセット検索
    • CityGML検索
    • 空間ID検索
    • 建物属性取得

    などの機能が利用できることが分かりました。

    ここで初めて、

    PLATEAU MCPは分析ソフトではなく、PLATEAUデータを探索するためのAIインターフェース

    であることが理解できました。

    ※その後、別自治体の建築物モデルで再検証したところ、PLATEAU MCPは単なるデータセット探索だけでなく、CityGMLに格納された詳細な建物属性まで取得できることが確認できました。
    ただし、取得できる情報量はプロンプトの具体性によって大きく変わります。

    まずはどんなデータがあるのか調べてみた

    最初に次の質問を行いました。

    和泉市のPLATEAUデータセットを調査してください。

    すると、PLATEAU MCPから次の情報が返ってきました。

    地域情報

    項目内容
    地域名和泉市
    地域コード27219
    地域種別CITY
    平面直角座標系EPSG:6674
    利用可能年度2023
    登録年度2024
    PLATEAU仕様4.1
    CityGML取得可能

    利用可能なデータセット

    確認できた主なデータセットは以下のとおりです。

    都市モデル

    • 建築物モデル(bldg)
    • 土地利用モデル(luse)

    防災モデル

    • 洪水浸水想定区域モデル(fld)
    • 土砂災害警戒区域モデル(lsld)

    都市計画モデル

    • 区域区分
    • 用途地域
    • 地区計画
    • 公共空地
    • 都市計画区域
    • 市街地再開発事業
    • 土地区画整理事業
    • 防火地域
    • 特別用途地区

    など


    特に興味深かったのは、

    和泉市の当該PLATEAUデータセットには道路モデル(tran)は存在しなかった

    ことです。

    PLATEAUは全国で同じデータが整備されているわけではなく、自治体ごとに整備状況が異なることも確認できました。


    さらにPLATEAU MCPは、

    このデータがあります

    だけではなく、

    実際に取得できるCityGMLファイルまで示してくれました。

    例えば土地利用モデルでは、

    513544_luse_6697_op.gml
    513553_luse_6697_op.gml

    などのファイルが利用可能であることが分かりました。


    公共空地を分析してみる

    データが存在することが確認できたので、

    次は土地利用モデルを利用して分析を行いました。

    ここで登場するのが公共空地(217)です。

    公共空地とは

    • 公園
    • 緑地
    • 広場
    • 運動場

    などを含む土地利用区分です。

    今回入力したプロンプトは以下です。

    PLATEAU MCPを使って

    公共空地の

    ・件数
    ・面積
    ・分布

    を集計してください

    と質問しました。


    すると、AIは和泉市の土地利用モデル(luse)を探索し、対象となるCityGMLを特定して集計を実施しました。

    使用されたデータ

    項目内容
    自治体大阪府和泉市
    年度2023
    データ種別土地利用モデル(luse)
    対象分類公共空地
    分類コード217
    対象CityGML513543、513544、513553、513554

    件数・面積

    集計結果は以下のとおりです。

    指標
    件数94件
    総面積1,909,271㎡
    総面積190.93ha
    平均面積20,311㎡
    中央値7,838㎡
    最大面積234,272㎡
    最小面積246㎡

    単なる件数集計だけでなく、平均値や中央値まで整理されました。


    メッシュ別分布

    さらに、どのメッシュに公共空地が分布しているかも集計されました。

    メッシュ件数面積
    5135432件13,430㎡
    5135440件0㎡
    51355392件1,895,841㎡
    5135540件0㎡

    結果を見ると、

    公共空地の大部分が513553メッシュに集中している

    ことが分かります。


    空間分布

    さらにAIは重心位置から空間分布まで整理しました。

    区分件数面積
    西部・北側13件153,935㎡
    中部・北側33件606,608㎡
    中部・南側24件597,171㎡
    東部・北側15件350,679㎡
    東部・南側9件200,878㎡

    この結果から、

    • 中部・北側
    • 中部・南側

    に公共空地が多く分布していることが読み取れます。


    面積規模別の特徴

    さらに面積規模別に分類すると、

    • 1,000~10,000㎡の公共空地が最も多い
    • 一方で50,000㎡以上の大規模公共空地は8件しかない
    • しかし面積では全体の約54%を占める

    という特徴も確認できました。


    正直驚いた点

    ここで驚いたのは、私が依頼したのは

    件数
    面積
    分布

    だけだったことです。

    しかし実際には、

    • 件数
    • 総面積
    • 平均値
    • 中央値
    • 最大値
    • メッシュ分布
    • 方位別分布
    • 面積規模別分析

    まで自動的に整理されました。

    AIは何をしていたのか

    実際にはAIは次の処理を行っています。

    土地利用モデル検索

    CityGML特定

    不足データ確認

    データ取得

    ジオメトリ解析

    面積計算

    集計

    結果出力

    利用者は自然言語で質問しただけです。

    AIが実施した処理

    ① 土地利用モデル(luse)を検索

    ② 対象CityGMLファイルを特定

    ③ 不足メッシュを検出

    ④ CityGMLを取得

    ⑤ ジオメトリを解析

    ⑥ 面積を計算

    ⑦ 分布を集計

    ⑧ 結果を整理

    従来であればGIS担当者が複数のツールを使って実施していた作業です。


    空間ID検索も試してみた

    公共空地分析の次に、PLATEAU MCPの特徴的な機能である「空間ID検索」も試してみました。

    今回は和泉市役所周辺を対象に、

    和泉市役所周辺の空間ID検索例を示してください

    と質問しました。

    するとAIは、

    • 市役所の位置情報を取得
    • 緯度経度を十進度へ変換
    • 空間IDを生成
    • 対応するCityGMLを検索
    • 交差する建物を取得
    • 建物属性を取得

    という処理を実施しました。


    生成された空間ID

    市役所位置から生成された空間IDは次のとおりです。

    19/0/459368/208584

    また、周辺8セルを含めた9セル検索も実施されました。


    建物検索結果

    空間IDに交差する建物を検索した結果、

    bldg_6a445e5d-cf54-4a50-8653-b6d8ce7510e2

    という建物が取得されました。

    さらに周辺9セルで検索すると、

    32棟の建物

    が取得されました。


    取得できた建物属性

    取得された建物からは次のような属性が確認できました。

    項目結果
    建物ID27219-bldg-72179
    建物高さ29.4m
    土地利用公益施設用地
    土地利用コード214
    都市計画区域都市計画区域
    区域区分市街化区域
    調査年2023

    さらに、

    • 建物中心座標
    • 建物範囲
    • 標高

    まで取得できました。

    より詳細な建物属性も取得できるのか再検証

    当初の検証では、上表のような基本的な建物属性までを確認しました。
    その後、武蔵村山市の建築物CityGMLを対象に、取得したい属性を具体的に指定してPLATEAU MCPを再検証しました。

    その結果、以下の属性についても実値を取得できました。

    武蔵村山市の取得例

    属性取得例
    建物用途 usage住宅、共同住宅
    建物詳細用途 detailedUsage独立住宅、集合住宅
    土地利用分類 landUseType住宅用地
    指定建ぺい率40%
    指定容積率80%
    調査年2022
    都市計画種別都市計画区域
    屋根外周面積64.26758㎡ など
    地上階数2階
    地下階数0階
    計測高さ6.9m、7.4m、8.0m

    特に、建物詳細用途、指定建ぺい率・容積率といったURO拡張属性まで、PLATEAU MCP経由で取得できた点は重要です。


    正直驚いた点

    ここで興味深かったのは、

    私が知りたかったのは

    市役所周辺の建物

    だけだったことです。

    実際には、

    ・空間IDの生成
    ・空間IDに交差する建物検索
    ・建物属性の取得
    ・土地利用属性の取得
    ・都市計画関連属性の取得

    までが自動的に実行されました。

    従来であれば、

    PLATEAU ViewerやGISソフトを開いて確認していた内容です。


    自治体業務ではどう使えるのか

    今回の結果を見て感じたのは、

    空間IDは単なる研究用途ではなく、自治体業務にも応用できる可能性があるということです。

    例えば、

    • 公共施設台帳との照合
    • 防災施設の位置確認
    • 現地調査地点の管理
    • 3D都市モデルとの連携

    などです。

    一方で、PLATEAUの属性には建物名称が入っていません。

    そのため、

    今回取得した建物を

    「和泉市役所本庁舎」

    と断定するには、

    • 航空写真
    • 公共施設台帳
    • ArcGISの施設データ

    との照合が必要になります。


    処理時間はデータ量によって大きく変わる

    今回の検証では、対象データによって処理時間に大きな差が見られました。

    公共空地(217)の分析では、

    • 対象件数:94件
    • 対象ファイル:4ファイル

    だったため、件数・面積・分布の集計は約3分で完了しました。

    一方で、建築物モデルを対象とした調査では、

    • 建築物数:約64,000棟
    • CityGMLファイル数:81ファイル
    • 対象範囲:和泉市全域

    となり、建物数や利用可能属性の集計に約23分を要しました。

    これはPLATEAU MCPの性能というよりも、解析対象となるCityGMLデータ量の違いによるものです。


    従来作業との比較

    同じ分析を従来のGIS作業で行う場合を考えてみます。

    従来の作業

    • PLATEAUデータ検索:10分
    • CityGML取得:5分
    • ArcGIS Pro変換:15分
    • 属性確認:10分
    • 公共空地抽出:5分
    • 面積計算:5分
    • 集計表作成:10分

    合計:約60分

    MCP+AI

    • 自然言語による指示
    • 自動解析
    • 結果出力

    実行時間:約3分

    もちろん結果確認は必要ですが、調査作業だけで見れば大幅な時間短縮になります。


    実際に使って感じたこと

    今回の検証を通じて感じたのは、

    PLATEAU MCPは「GIS解析エンジン」ではなく、

    「都市データ検索エンジン」

    として非常に優秀だということです。

    特に、

    ・どのデータが存在するのか
    ・どのCityGMLが利用できるのか
    ・どの属性が利用できるのか

    を自然言語で確認できる点は大きなメリットです。

    プロンプト設計も結果を左右する

    今回の再検証で分かったのは、MCPサーバーの能力だけでなく、利用者がどこまで具体的に取得対象を指定するかによって、返ってくる情報量が大きく変わるということです。
    当初の検証では基本属性までの確認でしたが、詳細属性を明示して再度問い合わせることで、より多くのURO属性を取得できました。

    一方で、

    ・統計データとの統合
    ・高度な空間分析
    ・ダッシュボード作成
    ・Webマップ公開

    についてはArcGISなど他のGIS基盤が必要になります。


    今後の可能性

    今回の検証では、

    自治体職員

    PLATEAU MCP

    必要な属性を自然言語で指定

    CityGML取得

    AI解析

    結果確認

    という流れを確認できました。

    今後はさらに、

    ・PLATEAU MCP
    ・ArcGIS MCP
    ・e-Stat API
    ・生成AIエージェント

    を組み合わせることで、

    統計データの取得

    GISデータ整備

    空間分析

    政策判断支援

    までを自然言語で実行できる可能性があります。

    さらに再検証では、質問の仕方を具体化することで、通常の属性確認では表面化しなかった詳細用途、土地利用分類、指定建ぺい率・容積率なども取得できました。

    つまりPLATEAU MCPでは、単に「どの属性がありますか」と聞くだけでなく、
    「detailedUsageを取得してください」
    「指定建ぺい率・容積率を確認してください」
    と取得対象を明示することで、CityGML内部のより詳細な属性まで利用できる可能性があります。

    特に自治体では、人材不足やGIS担当者への業務集中が課題となっています。

    特に、CityGMLのXML構造やURO属性名を職員が完全に理解していなくても、取得したい情報を自然言語で指定し、AIがMCPツールを呼び出して属性を取得できる点は大きな特徴です。

    今回確認できた仕組みは、専門職だけでなく一般職員もGISを活用できる環境につながる可能性があります。よく活用するための入口として非常に有効であることが確認できました。

    次回予告

    PLATEAU MCP単体では分析は完結しません。

    次回は、

    LATEAU MCP
    (データ探索・CityGML特定)

    ArcGIS MCP
    (GIS解析)

    e-Stat API
    (人口統計)

    生成AI

    を組み合わせ、

    統計データ取得からGIS分析までを自然言語で実行できるのかを検証します。

    地域GIS研究所では、生成AIとGISを活用した自治体業務の可能性について、引き続き実証と研究を進めていきます。

    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第5回:e-Stat APIとGISを結合するときの落とし穴
    ▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

  • e-Stat APIとGISを結合するときの落とし穴

    ~AIエージェントによる統計データクレンジングの実践~

    本記事は、生成AIとGISを活用した自治体業務の実証シリーズの第5回です。
    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第6回:PLATEAU MCPは自治体GISを変えるのか
    ▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ

    はじめに

    近年、e-Stat APIを利用することで自治体の人口統計を容易に取得できるようになりました。

    生成AIやMCPを利用すれば、

    ・統計データ取得
    ・CSV出力
    ・GIS登録

    まで自動化することも可能です。

    しかし実際に自治体業務で利用しようとすると、単純なAPI連携だけでは解決できない問題が存在します。

    今回は和泉市の小地域統計データを用いて、e-Stat APIとGISデータを結合する際に直面した課題を整理します。


    和泉市データで発生した問題

    まずe-Stat APIから2020年国勢調査データを取得しました。

    取得結果は以下の通りです。

    • 人口CSV:192件

    一方でGIS側の小地域ポリゴンは、

    • ポリゴン数:183
    • ユニークKEY_CODE:162

    でした。

    この時点で、

    「CSV件数とGIS件数が一致しない」

    という問題が発生しました。

    単純な属性結合では正しく結合できません。


    落とし穴① 町集計と町丁目が混在している

    e-Statには、

    府中町

    だけではなく、

    • 府中町一丁目
    • 府中町二丁目
    • 府中町三丁目

    なども同時に存在します。

    さらに、

    府中町

    一丁目~八丁目

    の合計値となっています。

    つまり、

    町集計

    町丁目

    をそのままGISへ取り込むと、

    人口が二重計上されます。


    落とし穴② KEY_CODEが一意ではない

    和泉市小地域ポリゴンを確認すると、

    KEY_CODE

    だけでは一意になっていませんでした。

    例えば、

    27219101000_E1
    27219101000_E2
    27219101000_E3

    のように、

    同じKEY_CODEでも複数ポリゴンが存在します。


    落とし穴③ 人口はE1にしか入っていない

    統計データを確認すると、

    • E1 → 人口あり
    • E2 → 0
    • E3 → 0

    という構造になっていました。

    この状態でKEY_CODEだけを使ってJoinすると、

    同じ人口が複数ポリゴンへ付与されてしまいます。

    結果として人口が重複計上されます。


    解決策:JOIN_KEYを作成する

    今回採用した方法は、

    GIS側

    JOIN_KEY

    KEY_CODE + “_” + KIGO_E

    を作成する方法です。

    CSV側も同様に、

    join_key

    area_code_text + “_” + KIGO_E

    を生成します。

    その結果、

    183ポリゴン

    183レコード

    で正しく結合できるようになりました。

    ArcGIS Pro と CSV 結合で発生する schema.ini の落とし穴

    前回の和泉市の分析では、小地域ポリゴンと e-Stat API の人口データでコード体系が一致していなかったため、

    KEY_CODE = KCODE_JE + KCODE_E
    

    による JOIN_KEY を作成して結合を行いました。

    一方、今回の豊島区データでは、小地域ポリゴンの

    area_code
    

    と e-Stat API の

    KEY_CODE
    

    が同じコード体系であったため、JOIN_KEY を作成せずに直接結合できる状態でした。

    ところが、ここで別の問題が発生しました。

    それは ArcGIS Pro が CSV を読み込む際に、コード項目を数値型(Double)として認識してしまうことです。

    例えば、

    13116001001
    

    という小地域コードは、本来は文字列として扱う必要があります。

    しかし ArcGIS Pro は CSV を自動判定するため、

    小地域ポリゴン
    area_code(Text)
    
    人口CSV
    KEY_CODE(Double)
    

    という状態になることがあります。

    この場合、値は同じでも型が異なるため Join が実行できません。

    そこで利用するのが schema.ini です。

    CSV と同じフォルダに schema.ini を配置し、

    [toshima_demographics_2020.csv]
    Format=CSVDelimited
    ColNameHeader=True
    
    Col1=municipality_name Text Width 50
    Col2=year Long
    Col3=KEY_CODE Text Width 20
    Col4=area_name Text Width 50
    Col5=population_total Long
    

    のように定義します。

    重要なのは、

    Col3=KEY_CODE Text Width 20
    

    です。

    これにより ArcGIS Pro は KEY_CODE を文字列として読み込みます。

    結果として、

    area_code (Text)
    =
    KEY_CODE (Text)
    

    となり、正常に Join できるようになります。

    なお、インターネット上では

    CharacterSet=65001
    

    を記載している例もありますが、ArcGIS Pro では

    schema.ini に値が無効なオプションがあります
    CharacterSet=65001
    

    というエラーが発生することがあります。

    そのため UTF-8 の CSV を利用する場合でも、CharacterSet の指定は行わず、必要なフィールド定義のみを記述する方が安全です。

    今回のように自治体によって、

    • JOIN_KEY の作成が必要なケース(和泉市)
    • KEY_CODE をそのまま利用できるケース(豊島区)

    があります。

    ただし、どちらの場合でも ArcGIS Pro 上では「文字列として結合できる状態にする」ことが重要であり、そのための手段として schema.ini が有効です。


    MCP化して分かったこと

    今回の検証で分かったのは、

    e-Stat APIが利用できること

    自治体業務で使えるGISデータになること

    は全く別問題だということです。

    実際には、

    • 統計構造の理解
    • 秘匿処理の理解
    • 小地域コードの理解
    • GIS側データ構造の理解

    が必要になります。

    今回作成したMCPでは、

    • 総人口
    • 0~14歳人口
    • 65歳以上人口
    • CSV出力
    • GIS結合用JOIN_KEY生成

    まで自動化しています。


    AIにe-Stat APIを読ませても実務データにはならない

    生成AIはe-Stat APIを利用できます。

    しかし、

    APIが返したデータ

    実務で利用できるGISデータ

    ではありません。

    今回の検証では、

    豊島区では問題なく動いた処理が、

    和泉市では正しく動きませんでした。

    原因を追跡すると、

    KEY_CODE

    KIGO_E

    秘匿処理

    JOIN_KEY

    という統計構造の違いにたどり着きました。

    つまり、

    AIがデータを取得できること

    自治体業務で利用できること

    の間には大きな差があります。


    次のステップは「年齢階級」の細分化

    現在のMCPでは、

    • 総人口
    • 0~14歳人口
    • 65歳以上人口

    を取得しています。

    しかし遊具配置を考える場合、

    本当に必要なのは

    0~14歳

    ではありません。

    例えば、

    • 幼児用すべり台
    • 幼児用ブランコ
    • スプリング遊具
    • 砂場
    • おむつ替え設備

    などは、

    主に0~4歳児を対象としています。

    そのため次の段階では、

    • 0~4歳人口
    • 5~9歳人口
    • 10~14歳人口

    を取得し、

    より実態に即した分析を行う予定です。


    今後想定される分析の方向性

    今回の検証では、小地域単位で人口統計をGISへ結合できることを確認しました。

    今後、公園ごとの遊具配置情報や遊具台帳などのデータが利用できれば、人口統計と組み合わせた分析も可能になります。

    例えば、

    小地域人口

    遊具配置情報

    を組み合わせることで、

    0~4歳人口100人あたりの幼児向け遊具数

    といった指標を作成できる可能性があります。

    また、

    幼児遊具不足指数

    =
    0~4歳人口
    ÷
    幼児向け遊具数

    のような考え方により、

    子育て世代が多い地域と遊具配置状況との関係を可視化できる可能性があります。

    現在は構想段階ですが、人口統計と公園施設データを組み合わせることで、公園整備や子育て支援施策の検討材料として活用できる可能性があると考えています。

    本手法はe-Stat APIを活用しているため、和泉市に限らず他自治体へも適用可能です。

    今後は、実際の施設データと組み合わせながら、GISと統計データを活用した政策検討支援についても研究を進めていきたいと考えています。

    AIエージェントによるデータ整備という視点

    今回の検証は、単にe-Stat APIから人口データを取得したという話ではありません。

    実際には、

    e-Stat API

    統計コードの確認

    KEY_CODEの確認

    KIGO_Eの確認

    秘匿化構造の確認

    JOIN_KEY生成

    CSV出力

    ArcGIS結合

    という複数の工程を経ています。

    表面的には「人口マップを作成した」ように見えますが、実際に時間を要したのは統計構造の理解とデータ整備でした。

    和泉市のケースでは、

    ・人口CSV:192レコード
    ・小地域ポリゴン:183ポリゴン
    ・ユニークKEY_CODE:162件

    という状態であり、単純なJoinでは正しく結合できませんでした。

    そのため、

    ・町集計と町丁目の重複確認
    ・KEY_CODEとKIGO_Eの関係確認
    ・秘匿化データの確認
    ・GIS側との整合確認

    を行い、最終的にJOIN_KEYを生成することで正しい結合を実現しました。

    従来であれば、このような作業は統計担当者やGIS担当者が手作業で調査しながら進める必要がありました。

    今回の検証では、生成AIとMCPを活用することで、こうしたデータ整備作業を支援できる可能性を確認しています。

    近年は、

    オープンデータ

    AIエージェント

    データクレンジング

    GIS分析

    意思決定

    という流れが重要になりつつあります。

    単に地図を作成するだけではなく、分析に利用できるデータ基盤を整備すること自体が価値となる時代へ変化しています。

    今回の成果は、e-Stat APIを利用した人口データ取得だけではありません。

    統計データを自治体GISで利用できる形へ変換するための知識とノウハウを整理できたことに、大きな意義があると考えています。


    まとめ

    今回の検証は単なるMCP開発ではありません。

    統計データを取得するだけではなく、

    自治体GISで利用できる形へ変換するための知識を整理するプロセスでした。

    e-Stat APIや生成AIが普及しても、

    統計構造やGISデータ構造を理解することの重要性は変わりません。

    むしろGIS AI時代だからこそ、

    「データを取得する技術」

    ではなく、

    「実務で使えるデータへ変換する知識」

    がますます重要になると考えています。

    MCPで取得した人口データを用いた試験分析

    今回整備したデータを用いて、

    • クラスター・外れ値分析
    • 最適化ホットスポット分析

    を実施しました。

    その結果、

    65歳以上人口については有意な空間集積が確認された一方、

    幼児人口については明確な集積は確認されませんでした。

    これは統計データをGISへ正しく結合できたことで初めて実施できる分析であり、今後は公園施設データや遊具配置データと組み合わせることで、より実践的な政策検討へ発展できる可能性があります。

    関連記事

    ▶ 第1回:自治体GISとAIの融合
    ▶第2回:ArcGIS Onlineと生成AIを連携した人口統計分析の実証
    ▶第3回:生成AIとGISで健康遊具の優先整備地区を抽出してみた
    ▶第4回:自治体の人材不足はGIS AIで解決できるのか
    ▶第6回:PLATEAU MCPは自治体GISを変えるのか
    ▶第7回:健康遊具はどこに整備すべきか?生成AIとGISで検証
    ▶第8回:AIの回答は信用できるのか(検証と説明責任)
    ▶第9回:自治体GISにおける人口統計データの構造要件を生成AIで検証する
    ▶第10回:PLATEAU LOD1と生成AIで建物単位人口推計は可能か
    ▶第11回:PLATEAU建物人口から見る浸水リスク
    ▶第12回:建物単位人口で見る避難所シミュレーション
    ▶第13回:PLATEAUの建物に人口を配置する
    ▶第14回:PLATEAUを「人口を持つ都市」へ