QGIS演習#01 | 国勢調査データで高齢化率を可視化する(小地域データ編)

city-data

今回はQGISを使った演習として、国勢調査2020年の小地域データをもとに、人口構造…具体的には高齢化率を可視化する方法を解説します。

人口データはまちづくりや交通など様々な場面で使われますが、今回は「総人口」「高齢者人口」「高齢化率」という3つの指標に絞って扱います。単純な人口だけでなく、構成比(割合)を見ることがポイントです。

特に高齢化率は、医療・福祉需要の把握や公共交通の維持判断、商圏分析など、実務でもよく使われる指標です。

本記事では、

データ取得・加工 → QGIS取り込み・結合 → 指標作成 → 可視化

という一連の流れで進めていきます。

お題(今回やること)

今回の課題は以下の通りです。

  • 国勢調査の「小地域・年齢(5歳階級、4区分)別男女別人口」を加工しQGISで使える形にする
  • QGIS上で各地域の「人口総数」「65歳以上人口」を可視化する
  • QGIS上で高齢化率(65歳以上人口 ÷ 総人口)を算出する
  • QGIS上で高齢化率を可視化する

データ取得~加工

まずは国勢調査のデータを取得します。小地域での統計データは「統計情報のデータ」と「地域の形状データ」に分かれており、また前者についてはダウンロードしたCSV(拡張子はtxt)を開くと、少し癖のある形式になっているため、取得後に加工まで行う必要があります。

国勢調査人口データのダウンロード

政府統計の総合窓口(e-stat)から人口統計データをダウンロードします。ダウンロードサイトは下記の通りです。

統計地理情報システムデータダウンロード | 政府統計の総合窓口
統計GISの各種データ(統計データ、境界データ)をダウンロードすることができます。

今回は「国勢調査>2020年>小地域(町丁・字等)>年齢(5歳階級、4区分)別、男女別人口」からデータをダウンロードします。

可視化したい都道府県を指定してください(今回は広島県を例に作業するため、広島県を選択)。

ダウンロードしたCSV(拡張子はtxt)を開くと、冒頭2行にヘッダー情報が入っています。

  • 1行目:項目ID(アルファベットや数値)
  • 2行目:日本語の項目名

項目(列名)が複数行にまたがるデータは、QGISをはじめとしたデータ分析の場面では扱いにくいため、通常は1行に整理して扱います。そのため今回は、以下のようにヘッダーを整理します。

  • Tから始まる連番より前:1行目を採用
  • Tから始まる連番以降:2行目を採用

この作業をしておくと、後の結合や可視化がかなり楽になります。

境界データのダウンロード

次に、地図として表示するための境界データを用意します。ダウンロードサイトは下記の通りです。

統計地理情報システムデータダウンロード | 政府統計の総合窓口
統計GISの各種データ(統計データ、境界データ)をダウンロードすることができます。

「国勢調査>2020年>小地域(町丁・字等(JGD2011)」を選択します。

形式は「世界測地系緯度経度・Shapefile」で問題ありません。

先ほど統計データをダウンロードした地域の中で、可視化したい都道府県及び市区町村等を指定してください(今回は広島県全域を指定します)。

QGIS取り込み・結合

上で取得・加工した2つのデータをQGISに取り込み、1データに結合します。

データの取り込み

Shapefileはそのままドラッグ&ドロップで読み込み可能です。統計データは下記の通り「レイヤ>レイヤを追加>CSVテキストレイヤを追加」から読み込みます。

最上段のファイル欄で先ほど加工したtxtファイルを指定します。その他の設定ポイントは以下の通りです。

  • 文字コード:Shift-JIS(またはsjis)
  • レコードとフィールドのオプション:破棄するヘッダ行数0、最初の行は属性名は☑
  • ジオメトリ定義:ジオメトリなし

また、人口データはデフォルトで「文字列(String)」として読み込まれることがあります。このままだと集計や色分けがしづらいため、サンプルデータ欄で使用する列は整数(64bit)に変更しておくことをおすすめします(今回の場合は「総人口(総数、年齢「不詳」含む)」と「65歳以上人口(総数65歳以上)」)。

以上の確認をしたうえで「追加」を選択。

データの結合(統計データ+境界データ)

次に、境界データと統計データを結合します。まず、境界データを右クリックし「プロパティ」画面を起動します。

レイヤプロパティのポップアップの中で、左メニューバーから「テーブル結合」を選択し、下部の「+」を選択して「ベクタ結合を追加」のポップアップを起動し、以下を設定します。

  • 結合するレイヤ:統計データ(例:tblT001082C34)
  • 結合基準の属性・ターゲット属性:ともにKEY_CODE
  • 結合属性:統計データのうち、可視化に必要な属性(今回は「総人口(総数、年齢「不詳」含む)」と「65歳以上人口(総数65歳以上)」)

設定が終わり次第「OK」を複数回選択し、レイヤプロパティのポップアップを閉じます。

一見、見た目は変わりませんが、属性テーブルを開くと、境界データの属性末尾に人口データが追加されていることが確認できます。

この状態で人口データをもとに境界データを塗分けると以下のようになります。

色の塗分け方法は下記サイトの「色の設定」以降をご覧いただければと思います。

初めてのQGISビジュアライズ~標高データを見てみよう~ | 地図のワークブック
QGISでオープンデータを可視化してみたいと思います。今回は標高データを可視化してみます。地形を見ていると、普段は意識していない街の高低差が分かり「確かにこの坂登るのはキツイよなあ」とか「水害時はこの…

高齢化率の算出

ここからがポイントです。今回は単に国勢調査データに含まれる指標を可視化するだけでなく、含まれるデータをもとに新しい指標を作ります。具体的には「人口総数」と「65歳以上人口」をもとに高齢化率を算出したいと思います。

フィールド計算機を使用

QGIS画面上部から「フィールド計算機」のアイコンを選択します。すると「フィールド計算機」のウィンドウが表示されるので、次の設定を行います。

  • 新規フィールドを作成」:☑を選択
  • 出力する属性の名前:自由に設定可能(今回は「高齢化率」とします)
  • フィールド型:小数点付き数値(real)

また、以下の計算式を設定します。

"65歳以上人口" / "人口総数"

※フィールド名は取り込むデータによって異なるため、右側の検索窓や候補一覧(「フィールドと値」の中に候補が出てきます)から確認しながら指定してください。なお、本記事執筆者の手元データでは、"tblT001082C34_総数65歳以上" / "tblT001082C34_総数、年齢「不詳」含む"となっていました。

OKを選択後、画面上部の「鉛筆アイコン」をクリックしてください。レイヤ一覧にも鉛筆マークが表示されていますが、このアイコンを押すとマークが消えます。これは、編集内容(フィールド計算の結果)が保存された状態を意味します。この状態になれば、作成した項目を可視化に使用できます。

高齢化率の可視化

最後に、高齢化率を地図上で可視化します。

レイヤを右クリックし「プロパティ」を選択、プロパティ画面が開いたら「シンボロジ」タブへ移動します。表示方法は「連続値による定義」を選択し、値に「高齢化率」を指定します。

モードは用途に応じて設定します(下図では等間隔分類を使用)。分類数は5〜10程度が見やすくおすすめです。

モードと分類数を設定後、「分類」をクリックし、「OK」を選択すると、設定した色分けが地図に反映されます。

まとめ

今回は、国勢調査の小地域データをもとに、QGIS上で人口構造を可視化しました。

データ取得・加工 → QGIS取り込み・結合 → 指標作成 → 可視化

と、一見すると手順は多いですが、この一連の流れは人口データに限らず、

  • 商圏分析
  • 医療・福祉分野の分析
  • 交通やまちづくりの検討

など、さまざまな場面でそのまま応用できます。

特に今回のように、既存データをそのまま使うのではなく、「高齢化率」など既存データから指標を作ることもデータ利活用にあたっては重要です。

QGISは単なるデータ可視化ツールではなく分析ツールとしての機能も充実しているため、次回以降は分析に関する演習を進めたいと思います。