eStatの地図で見る統計(統計GIS)データダウンロードから小地域の境界データをダウンロードし,人口密度をQGISで表現する

 国勢調査をもとに作成された境界データダウンロードサービスがある.市区町村よりも更に細かい,町字の粒度でのGISデータである.今回は関東地方のデータをダウンロードし,QGISで人口密度を可視化する.

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

 総務省のオープンデータの一環である eStat には各種統計が蓄積されている.下図のようにトップページから「地図」「地図上にデータを表示(統計GIS)」をクリックする.

eStatの「地図」「地図上にデータを表示(統計GIS)をクリック」
eStatの「地図」「地図上にデータを表示(統計GIS)をクリック」

 今回は GIS データを取得したいので,「境界データをダウンロード」をクリックする.

「境界データをダウンロード」をクリック
「境界データをダウンロード」をクリック

 「小地域」をクリックする.

「小地域」をクリック
「小地域」をクリック

 「国勢調査」をクリックする.他にも「事業所・企業統計調査」「経済センサスー基礎調査」「経済センサスー活動調査」「農林業センサス」があるが,今回は割愛する.

「国勢調査」をクリック
「国勢調査」をクリック

 2000 年以降のデータがある.今回は最新の 2015 年を選択する.

「2015年」をクリック
「2015年」をクリック

 「小地域(町丁・字等別)」をクリックする.

「小地域(町丁・字等別)」をクリック
「小地域(町丁・字等別)」をクリック

 座標参照系を選択する.ここでは「世界測地系緯度経度・Shapefile」を選択する.

「世界測地系緯度経度・Shapefile」をクリック
「世界測地系緯度経度・Shapefile」をクリック

 都道府県の一覧が出てくる.下図のように必要な都道府県ごとにデータをダウンロードする必要がある.

必要な都道府県をクリック
必要な都道府県をクリック

 下図は福島県の例である.最初に県全域のデータがあり,以下市区町村別のデータが列挙されている.このボタンをクリックするとデータを zip ファイルとしてダウンロードできる.

「県全域」をクリック
「県全域」をクリック

 zipファイルを展開する.

都道府県別のレイヤをマージする

QGIS の「レイヤ」「ベクタレイヤの追加」

 ダウンロードした zip ファイルをエクスプローラで展開したら,QGIS を起動する.「レイヤ」メニューの「ベクタレイヤの追加」を選ぶ.下図のようにダイアログが開くので,.shp ファイルを選択し「開く」をクリックする.

OGRがサポートするベクタデータセットを開く
OGRがサポートするベクタデータセットを開く

 都道府県ごとに色分けされて表示される.

関東地方と福島県が表示される
関東地方と福島県が表示される

ベクタレイヤのマージ

 このままでは操作がしづらいので,レイヤを一つにまとめてしまおう.「プロセシング」メニューの「ツールボックス」を選ぶ.

「プロセシング」「ツールボックス」
「プロセシング」「ツールボックス」

 「プロセシングツールボックス」の「ベクタ一般」から「ベクタレイヤのマージ」をダブルクリックする.

「ベクタ一般」「ベクタレイヤのマージ」
「ベクタ一般」「ベクタレイヤのマージ」

 「ベクタレイヤのマージ」ダイアログボックスである.ここでは「入力レイヤ」と「変換先の座標参照系」を指定する.

「ベクタレイヤのマージ」ダイアログ
「ベクタレイヤのマージ」ダイアログ

 まず入力レイヤである.下図ではすでに表示されているが,何も表示されていない場合は「ファイルを追加…」ボタンをクリックしてダイアログから追加する.

「ベクタレイヤのマージ」「入力レイヤ」
「ベクタレイヤのマージ」「入力レイヤ」

 「すべて選択する」ボタンをクリックするとチェックが入る.「OK」をクリックして入力レイヤの指定を終える.

「入力レイヤ」「すべてを選択する」
「入力レイヤ」「すべてを選択する」

 変換先の座標参照系では「プロジェクトCRS: EPSG:4612 – JGD2000」を指定する.

「変換先の座標参照系(CRS)」
「変換先の座標参照系(CRS)」

 「実行」をクリックすると下図のようにレイヤがマージされ,「出力レイヤ」という名前で表示される.

出力レイヤが表示される
出力レイヤが表示される

 注意が必要なのだが,この「出力レイヤ」はメモリ上にのみ存在するデータなので,アプリを終了すると消えてしまう.次に行うように「エクスポート」しないと保存されない.

「レイヤ」パネルでの出力レイヤ
「レイヤ」パネルでの出力レイヤ

出力レイヤをファイルとして保存

 「出力レイヤ」を右クリックして「エクスポート」「新しいファイル名で地物を保存…」と進む.

出力レイヤを右クリックし「エクスポート」「新しいファイル名で地物を保存...」
出力レイヤを右クリックし「エクスポート」「新しいファイル名で地物を保存…」

 「ベクタレイヤを名前を付けて保存…」ダイアログである.「ファイル名」に直接タイプしてもエラーが発生して弾かれる.右側の「…」ボタンをクリックしてフルパスで指定する必要がある.この辺り,もう少しインターフェースを工夫してもらいたい.

ベクタレイヤを名前を付けて保存...
ベクタレイヤを名前を付けて保存…

 保存されたレイヤが別の色で表示されている.

ファイルとして保存されたレイヤ
ファイルとして保存されたレイヤ

属性テーブルから人口密度を導出する

 ここまでの操作はジオメトリの準備だった.ここからは属性テーブル,つまり .dbf ファイルを操作することになる.境界データの属性テーブルには国勢調査の基本的なデータである人口や面積が付加されており,両者から人口密度を計算できる.面積の単位は平方メートルで与えられているため,平方kmに換算する必要がある.

属性テーブルを開く

 マージしたレイヤを右クリックして「属性テーブルを開く」を選ぶ.

レイヤを右クリックして「属性テーブルを開く」
レイヤを右クリックして「属性テーブルを開く」

 メニューバー左端の「編集モード切替」ボタンをクリックする.

属性テーブルの「編集モード切替」
属性テーブルの「編集モード切替」

フィールド計算機を開く

 メニューバー右側に「フィールド計算機を開く」ボタンがあるのでクリックする.

「フィールド計算機を開く」
「フィールド計算機を開く」

 「フィールド計算機」の初期状態.「新しいフィールドを作る」にチェックが入っている.データベースに新しい列を追加するという意味である.

フィールド計算機の初期状態
フィールド計算機の初期状態

面積の単位を換算

 まず,面積を換算する必要がある.具体的には平方メートルを 100 万で割って平方kmとする.下図のようにフィールドの名前,型,長さを指定する.

「新しいフィールドを作る」の「出力する属性(フィールド)の名前」と「フィールド型」「フィールド長」
「新しいフィールドを作る」の「出力する属性(フィールド)の名前」と「フィールド型」「フィールド長」

 「フィールドと値」を展開する.

「フィールドと値」を展開する
「フィールドと値」を展開する

 下にスクロールしていくと面積を示す “AREA” が出てくるのでダブルクリックして「式」に追加する.

計算の引数,ここでは "AREA" をダブルクリック
計算の引数,ここでは “AREA” をダブルクリック

 スラッシュを入力し,1000000 とタイプする.OK をクリックすると計算が実行される.

単位を換算するための除算
単位を換算するための除算

人口密度を算出

 ついで人口密度を算出する.ESRI の Shapefile にはフィールド名が半角 10 文字までという制約がある.全角も弾かれやすいため半角がベターである.

「新しいフィールドを作る」の「出力する属性(フィールド)の名前」「フィールド型」「フィールド長」
「新しいフィールドを作る」の「出力する属性(フィールド)の名前」「フィールド型」「フィールド長」

 人口を面積で除算する.OK をクリックすると計算が実行される.

人口を面積で除算する
人口を面積で除算する

 「編集モード切替」ボタンをクリックすると保存するよう促される.

編集を終了
編集を終了

 コミットエラーが出るが,実用上問題はなさそうである.

コミットエラー
コミットエラー

人口密度に応じて小地域を塗り分ける

 人口密度が計算できたところで,今度は小地域をそれに応じて塗り分ける作業となる.関東全域を対象とするため,どうしても東京に引きずられやすい.各県ごとに作成する場合にはもう少し細かい変化を追えるだろう.5 段階というのは人間の認知上,絶妙な設定だと思われる.10 段階では細かすぎて変化を識別しづらいだろう.

レイヤのプロパティからシンボロジを編集する

 レイヤを右クリックして「プロパティ…」を選ぶ.

レイヤを右クリックして「プロパティ...」
レイヤを右クリックして「プロパティ…」

 「シンボロジ」を選ぶと下図のように「単一定義」が初期値として表示されている.これを変更していく.

「シンボロジ」の初期設定は「単一定義(single)」
「シンボロジ」の初期設定は「単一定義(single)」

 クリックすると「シンボルなし」「単一定義」「カテゴリ値による定義」「連続値による定義」「ルールによる定義」「結合済み地物」「反転ポリゴン」「2.5D」がポップアップする.「連続値による定義」を選ぶ.

「連続値による定義(graduated)」に変更
「連続値による定義(graduated)」に変更

 「値」は空白で未定義であり,これから定義する.「カラーランプ」は赤が選ばれており,好みに応じて変更する.

「カラーランプ」の初期値は赤
「カラーランプ」の初期値は赤,「値」は未定義でこれから定義する

 先程定義した人口密度である Population を選択する.

「値(Value)」をポップアップしPopulationを選択
「値(Value)」をポップアップしPopulationを選択

 「カラーランプ」には Blues, Greens, Magma, RdGy, Reds, Spectral, Viridis があり,ここでは Greens を選ぶ.

「カラーランプ」を変更
「カラーランプ」を変更

自然分類で塗り分けてみる

 「モード」の初期値は「丸め間隔」である.

「モード」の初期値は「丸め間隔(Pretty)」
「モード」の初期値は「丸め間隔(Pretty)」

 まず「自然分類」を選んでみる.

「モード」を「自然分類(Jenks)」に変更してみる
「モード」を「自然分類(Jenks)」に変更してみる

 「クラス」に境界値が表示される.

「自然分類」とした場合の「クラス」
「自然分類」とした場合の「クラス」

 実行結果は中間階調に乏しく,ビジュアル的にはあまり良いとは言えない.

あまり変化が感じられない
あまり変化が感じられない

等量分類で塗り分けてみる

 ここからは試行錯誤である.「等量分類」に変更してみる.

「モード」を「等量分類(Quantile)」に変更してみる
「モード」を「等量分類(Quantile)」に変更してみる

 クラスの境界値がより小さい方にシフトしたように見える.

「等量分類」とした場合の「クラス」
「等量分類」とした場合の「クラス」

 結果として中間階調が鮮明となった.人の目にはこれが自然に感じられるが,分布を「ヒストグラム」で確認しておいたほうが良いだろう.すでにこの時点で「歪んで」いる.

こちらの方が自然に感じられる
こちらの方が自然に感じられる

そういえば,エラーが出ない

 QGISで国土数値情報のシェープファイルを修正するで述べたように,今回扱った eStat の境界データは修正する必要がなかった.後日,全国のデータをマージしてみたが,全く修正の必要がなかった.さすがに頻用されるデータだけはある.本来ならすべての国の公開するデータはここまでのレベルに仕上げておいてほしいものである.

属性テーブルの主キーとは

 レイヤのプロパティをスクロールしていくと,下図のように属性が見えてくる.

Field Type Length
KEY_CODE String 11
PREF String 2
CITY String 3
S_AREA String 6
PREF_NAME String 12
CITY_NAME String 14
S_NAME String 96
KIGO_E String 3
HCODE String 4
AREA Real 18,3
PERIMETER Real 18,3
H27KAxx_ Integer 6
H27KAxx_ID Integer 6
KEN String 2
KEN_NAME String 12
SITYO_NAME String 22
GST_NAME String 14
CSS_NAME String 14
KIHON1 String 4
DUMMY1 String 1
KIHON2 String 2
KEYCODE1 String 9
KEYCODE2 String 9
AREA_MAX_F String 1
KIGO_D String 2
N_KEN String 2
N_CITY String 3
KIGO_I String 1
MOJI String 96
KBSUM Integer 4
JINKO Integer64 10
SETAI Integer64 10
X_CODE Real 18,5
Y_CODE Real 18,5
KCODE1 String 7
layer String 254
path String 254
Areakm2 Real 10,3
Population Real 10,3

 eStat には他にも csv ファイルで提供される統計データがある.しかし QGIS には制約がある.つまり,テーブル結合のフィールドは一つしか指定できないため,それらと境界データを結合するには主キーを知っておく必要がある.KEY_CODE は 11 桁と定義されているが,実際の属性テーブルを見てみると 9 桁や 7 桁のデータがあって難渋することになる.これらはおそらく集計行であると思われるが,データベースの第一正規形を満たしておらず,総務省には善処をお願いしたい.

主キーの構造
主キーの構造

まとめ

 eStat の境界データをダウンロードし,QGIS で人口密度を小地域ごとに塗り分けた.全国の都道府県のデータをマージする際,修正の必要はなかった.

 しかし,データベース内に本来は不要である集計行が紛れ込んでおり,総務省には対応をお願いしたい.

 他の統計データとの結合は今後の課題である.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください