OSMを利用した人口推計

この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。


政府統計の総合窓口e-Statでは500mメッシュ人口が公開されており、横浜市の統計GISでは250mメッシュ人口が公開されています。しかし、それ以上精細なメッシュ人口のデータは一般には公開されていません。
そこで、OpenStreetMapの建物データを利用して100mメッシュの建物の総床面積を算出し、e-Statの500mメッシュ人口を床面積に応じて按分することにより、100mメッシュ人口を推計してみます。
使用するツールは、もちろんQGISです。

今回対象とする地域は、横浜市緑区の中山駅周辺の500mメッシュ6区画とします。

各メッシュの中央に表示されている数字は、500mメッシュ毎の人口です。

はじめに、Quick OSMプラグインを使用してOpenStreetMapから建物のデータを取得します。

「key」で「building」を指定し、「value」は空白のままにして、データを取得する範囲をレイヤ(今回は「targetmesh」)で指定します。

範囲内の全ての建物を取得することができました。
この時点で2526の地物があり、Group Statsプラグインで内訳を見ると以下のようになっています。

人口の按分に使用するため、人が住んでいない建物は除外します。そこで、QGISのフィルタ機能で「building」タグの値が「apartments」「house」「residential」「yes」のものだけを取り出します。
「apartments」とそれ以外(「house」「residential」「yes」)で色を塗り分け、階数(「building:levels」)の値をラベルで表示すると以下のようになります。

「apartments」のすべてに階数のデータが入っています。
次に、別途用意した100mメッシュの境界データと交差をとります。

メッシュ外の建物は切り取られ、メッシュ境界で建物は分断されます。各建物の属性には、メッシュ境界データに入っていたメッシュのIDが追加されます。

[ベクタ]→[ジオメトリツール]→[ジオメトリカラムの出力/追加]で地物の面積のカラム(「AREA」)を追加し、フィールド計算機で床面積のカラム(「floor_area」)を追加します。

式は以下のように記述します。

CASE WHEN "building_l" IS NULL THEN AREA * 2 ELSE AREA * "building_l" END

階数が入っていなければ面積を2倍し、階数が入っていれば面積に階数を掛けて床面積とするという意味です。「building_l」は、もともとOpenStreetMapに「building:levels」タグで入っていた建物の階数です。一度SHAPE形式で保存したため名前が変わってしまいました。

Group Statsプラグインで100mメッシュ毎の総床面積を求め、Excelを使って以下の式でメッシュ人口を推計します。

100mメッシュ推計人口 = (100mメッシュ床面積 ÷ 500メッシュ床面積) × 500mメッシュ人口

推計結果をCSVファイルに保存してQGISに読み込み、100mメッシュ境界データと結合します。
推計人口をラベルに表示し、推計人口によって色の濃さを変更すると以下のようになります。

次に、推計手法の有効性の確認のために、500mメッシュ6区画の合計人口を500mメッシュ毎の総床面積で按分してみます。

OpenStreetMapから取得した建物のデータと500mメッシュの境界データの交差をとり、フィールド計算機で床面積のカラムを追加して500mメッシュ毎の総床面積を求めます。
Excelを使って以下の式で500mメッシュ人口を推計します。

500mメッシュ推計人口 = (500mメッシュ床面積 ÷ 6区画総床面積) × 6区画合計人口

結果は以下のようになりました。

KEY_CODE 人口 推計人口 増減率
533924122 2901 2677 -224 -8%
533924124 3474 3373 -101 -3%
533924131 3359 3076 -283 -8%
533924133 2811 3703 +892 +32%
533924222 1950 1694 -256 -13%
533924231 1587 1559 -28 -2%

1区画で大きなプラスの誤差が出ていますが、残りの区画では1割程度のマイナスの誤差でした。
差分を地図上に表すと以下のようになります。

大きなプラスの誤差が出たのは中山駅の周辺でした。駅周辺では、5~6階建ての集合住宅の1~2階が商業施設になっていることが多いため、総階数による床面積で人口を按分すると過大になってしまいます。しかし、その影響を被ってマイナスになった残りの区画では、誤差は-2%~-13%と比較的小さく、今回の手法による人口推計は有効的であると考えられます。