前回の演習では、施設から一定距離の範囲をバッファとして作成し、その範囲に重なる人口メッシュを集計することで、「施設の周辺にどれくらいの人が住んでいるか」を算出しました。
前回扱った「メッシュ総取り」の集計方法は、生活圏人口を大まかに把握するには便利です。一方で前回の方法では、人口メッシュがバッファに少しでも重なっていれば、そのメッシュの人口をすべて含めて集計していたため、結果として、実際よりも人口を多く見積もってしまう場合がありました。
そこで今回は、バッファと重なっている面積の割合に応じて人口を配分する「面積按分」という方法を紹介します。

例えば、ある人口メッシュの20%だけがバッファに重なっている場合、そのメッシュ人口の20%分だけをバッファ内人口として扱います。面積按分により、過大評価を抑えた、より実態に近い推計ができるようになります。
本記事では、次の流れで面積按分を説明します。
人口データの前処理(座標系の変換・面積算出)
↓
人口データと施設バッファの交差
↓
面積比率の算出
↓
バッファ内人口の推計
分析に用いるデータは前回(演習#03)と同様です。
面積按分とは
面積按分とは、バッファと重なっている面積の割合に応じて人口を配分する方法で、地理空間分析の世界では頻繁に用いられる手法となります。
例えば、
- ある人口ポリゴンの人口:1,000人
- バッファに含まれる面積の割合:40%
だった場合、
1,000人 × 40% = 400人
として、バッファ内に含まれる人口を推計します。

もちろん、実際の人口はポリゴン内に均等に分布しているとは限りません。住宅地が一部に偏っている場合もあります。そのため、面積按分はあくまで推計手法の一つです。ただし、細かい住所単位の人口データがない場合でも、一定の根拠を持って生活圏人口を算出できるため、GIS分析ではよく使われます。
①前処理(人口ポリゴンを平面直角座標系へ変換する)
まずは人口データを面積計算できる状態にし、面積算出をしたいと思います。
座標系の変換
以前説明した通り、緯度経度座標は「角度」を扱う座標系です。一方で、面積は「距離 × 距離」で求められます。そのため、緯度経度のままでは、面積計算には適していません。従って人口ポリゴンを平面直角座標系に変換してから、面積を計算します。
※前回(#03)で既に変換しているため、変換済のデータがお手元にあればこの作業はスキップしていただいて大丈夫です。

面積の算出
次に、人口データの元となるポリゴン面積を算出します。
右下のレイヤ一覧で人口ポリゴンレイヤを選択した状態で、上部メニューから「フィールド計算機」を開きます。フィールド計算機のウィンドウが表示されたら、以下のように設定します。
- 出力する属性の名前:自由に設定(例:全体面積)
- フィールド型:整数(32bit)または小数点付き数値(real)
- 式:
$area
設定後、「OK」を押します。
すると、各ポリゴンの面積が計算され、新しい属性として追加されます。単位は平方メートルです。

フィールド計算機のウィンドウを閉じた後は、必ず「編集モード」のボタン(QGIS画面上部の鉛筆アイコン)をクリックし、計算結果を保存してください。保存後、「地物情報の表示」機能で適当な地物をクリックすると、属性の中に先ほど作成した面積フィールドが追加されていることを確認できます。

交差データの作成
人口データの準備ができたら、次に施設バッファと人口ポリゴンが重なっている部分を取り出します。ここでは、QGISの標準機能である「交差」機能を使います。
交差データの作成
メニューから、「ベクタ→ 空間演算ツール→ 交差」を選択します。
そして表示されたウィンドウ内で以下のように設定します。
- 入力レイヤ:人口ポリゴン
- オーバーレイレイヤ:施設バッファ

実行すると、施設バッファと重なっている部分だけが新しいポリゴンとして作成されます。元の人口ポリゴンが、バッファの境界で切り分けられるイメージです。この交差後のポリゴンを使って、バッファ内に含まれる面積と人口を計算していきます。

処理エラーが発生したとき
なお、交差処理の際にジオメトリエラーが発生する場合があります(下図参照)。

その場合は、詳細パラメータから「不正なジオメトリの地物を無視」を選択すると処理できることがあります。ただし、元データにエラーがある場合は、本来はジオメトリを修正してから処理するのが望ましいのですが、少々今回の趣旨と逸れる内容になってしまうため別の機会で紹介できればと思います。

面積比率の算出
次に、交差後のポリゴン面積を計算し、面積比率の算出を行います。
交差部面積の算出
交差で作成されたレイヤを選択し、フィールド計算機を開き、以下のように設定します。
- 出力する属性の名前:交差部面積
- フィールド型:整数(32bit)または小数点付き数値(real)
- 式:$area
これで、バッファと重なっている部分だけの面積が計算されます。

面積比率の算出
続いて、交差部が元の人口ポリゴンに対して何割を占めているかを計算します。フィールド計算機で新しいフィールドを作成します。
- 出力する属性の名前:交差部の面積比率
- フィールド型:小数点付き数値(real)
- 式:”交差部面積” / “全体面積”
例えば、元の面積が10,000㎡、交差部面積が4,000㎡だった場合、面積比率は0.4になります。つまり、その人口ポリゴンの40%がバッファ内に含まれている、という意味です。

バッファ内人口の推計
次に、いよいよ今回の本題である人口を面積比率に応じて配分する計算を行います。
交差部の人口の推計
再度フィールド計算機を開き、以下のように設定します。
- 出力する属性の名前:交差部の人口総数
- フィールド型:小数点付き数値(real)
- 式:”人口総数” * “交差部の面積比率”
これで、バッファ内に含まれる推計人口が計算されます。なお、計算式に使用する項目名は元データによって異なるため、それぞれ該当する列名を入力してください。

ここまでで、元々は人口総数だけを持っていた人口ポリゴンに対して、
- 全体面積
- 交差部面積
- 交差部の面積比率
- 交差部の人口総数
を追加できました。

按分人口を合計する
最後に、交差部の人口総数をバッファごとに合計します。
現在は、1つのバッファに対して複数の交差ポリゴンが存在している状態です。そのため、それぞれの交差部人口を合計する必要があります。ここでは、QGISの標準機能「属性の空間結合(集計つき)」を使います。
設定は次の通りです。
- 地物を結合するレイヤ:施設バッファ
- 比較対象:交差レイヤ
- 空間条件:交差する
- Fields to summarise:交差部の人口総数
- Summaries to calculate:sum
実行すると、施設バッファごとに、交差部の人口総数を合計した値が追加されます。

ここで注意したいのは、人口ポリゴンの人口総数をそのまま合計するのではなく、先ほど作成した「交差部の人口総数」を合計する点です。人口総数をそのまま合計すると、少しでも重なったポリゴンの人口をすべて含めてしまうため、面積按分にはならず、前回行った「メッシュ総取り」での人口総数が出てきてしまいます。
まとめ
今回は、前回作成した施設バッファを使い、バッファと重なっている面積の割合に応じて人口を配分する「面積按分」の方法を紹介しました。単に「どのメッシュがバッファに重なっているか」を見るだけでなく、「どの程度重なっているか」まで考慮することで、人口の過大評価を抑えた集計ができるようになります。
次回は、より正確性を高めるため、円形のバッファではなく道路距離を用いたアクセス圏を作成し、より実態に近い施設カバー人口の分析に進みます。
