#はじめに
この記事は、FOSS4G 2015年アドベントカレンダーの前準備用の記事です。
面積按分をするために、e-Statから3次メッシュの人口統計情報をダウンロードし、PostgreSQLにデータを登録するまでの手順について説明します。
##必要なソフトウェア
今回用いるソフトは以下の2つです。
WindowsOSなら、どちらのソフトもGUIのインストーラーがあるので導入はそれほど難しくないと思います。また、PostGISはPostgreSQLのインストール後に別途インストール作業が必要です。こちらで手順をご確認下さい。
##データの入手
e-StatのWebサイトから「統計情報」を「メッシュ形状」をダウンロードします。
###ダウンロード
- ダウンロードサイト「e-Stat 政府統計の総合窓口」
e-Stat → 地図で見る統計(統計GIS)→ データダウンロード - Step1: 統計調査(集計)を選択データ
- 調査名:国勢調査
- データ:平成22年国勢調査(国勢調査ー世界測地系1kmメッシュ)
- Step2:統計表を選択(複数選択可能)
- 「 男女別人口総数及び世帯総数」を選択
- 「統計表各種データダウンロードへ」ボタンをクリック
- Step3:地域選択
- 市区町村:「097:M5339」 たくさんのメッシュがありますが、都心の5339を選択します。
- 「検索」ボタンを押下
- Step4:データダウンロード
- 統計データのダウンロード (「M5339」と書かれたリンクをクリックします)
- 境界データのダウンロード(しばらくすると境界データのリストが表示されます。「世界測地系緯度経度・Shape形式をダウンロード」)
QGISで読込
ダウンロードしたデータをQGISで読み込みます。
データは統計データと境界データの2つに分かれているので、QGISで1つに結合し、結合したデータをPostgreSQLに投入します。
ファイルの集類 | ファイル名称 |
---|---|
統計データ | tblT000608S53390.zip |
境界データ | S002005112009DDSWS05339.zip |
データの加工
統計データはtblT000608S53390.zipを解凍するとテキストファイルが1つ得られます。
先頭行に英語の列名がが、2行目に日本語のが入っています。
QGISのCSVデータの読込機能では、複数行のカラム名に対応していないので、1行目のKEY_CODE以降を削除して上書き保存します。
境界データで読込
境界データを解凍して、shapeデータ「MESH05339.shp」をダブルクリックします。
統計データの読込
- デリミテッドテキストレイヤの読込
QGISでレイヤ → レイヤの追加 → デリミテッドテキストレイヤの追加 を選択します。
![スクリーンショット 2015-12-06 19.14.21.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2F8cb24ef1-7d2f-7368-b2b4-788b9c41c2d6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e3aac1ebd9169067f0a9825adda2976f)
- 加工済みの統計データの選択
先頭行を編集したtblT000608S53390.txtを読み込みます。
![スクリーンショット 2015-12-06 19.22.32.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2Fefa4e1d5-e777-76a8-e8a8-6f061a674d2f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b9e9b26e83834e6a39e4332b854d3150)
![スクリーンショット 2015-12-06 19.30.16.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2F3ea71c16-682a-ecdb-493c-11c70fc72218.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d6bee1c612022e0160833a3ff061302a)
境界データと統計データの結合
- 境界データのプロバティを表示
レイヤウインドウの境界データ「MESH05339」をダブルクリックして、プロバティを表示
![スクリーンショット 2015-12-06 18.48.46.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2Fd58a33c5-e15e-81dc-6c9a-53c35238deee.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1dcfb2d361f1dd0373143672b90437e3)
- データの結合
- 結合タブをクリック → 右下の「+」ボタンをクリック
- 統計データと境界データの2つのデータを結合する列名を指定
![スクリーンショット 2015-12-06 18.49.15.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2Ffc6fe9ad-6cf5-7643-5adf-f24b8f659d45.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=035ee1d477ac0bf57b463b5b35f6f897)
shape形式で保存
- レイヤを名前をつけて保存
レイヤウインドウの境界データ「MESH05339」を右クリックして、「名前をつけて保存」を選択します。
名称は特に拘る必要はありませんが、今回は「mesh5339.shp」という名称にしました。
![スクリーンショット 2015-12-06 19.44.49.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2F458e3e14-6f86-b2ed-9220-205e7662cb66.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=072cc11b16944cbb828a213d938bc509)
- 形式を指定する
ファイルの形式を「ESRI Shapefile」と指定して下さい。
- ファイル名を指定
「ブラウズ」ボタンをクリックし、ファイルの保存場所とファイル名を指定して下さい。 - 保存
「OK」ボタンをクリックして保存します。
#データベースへ投入
QGISの拡張機能である「SPIT」を使って、shapeデータをPostGISに投入します。
SPITがインストールされていれば、象さんのアイコンが表示されています。
- SPITの起動
象のアイコン沢山有るかもしれませんが、SPITのアイコンを探しだしてクリック - データベースの接続の選択または新規作成
PostgreSQLに接続する為の設定が必要になります。
予め、PostgreSQLにPostGISを導入済みのデータベースを作成する必要があります。
- 名称:任意の名称を付けて下さい
- ホスト:データベースの接続先です。同じPCでしたら「localhost」
- データベース:PostGISが導入されているデータベースの名称を指定して下さい
- インポートオプション
設定のポイント - SRID:「デフォルトのSRIDを使う」のチェックボックスを外し、作成したshapeデータのSRIDを入力します。(4612)
- データの追加
- 「追加」ボタンをクリックしてshapeファイルを選択します
DBリレーション名:作成されるテーブルの名称です。 - 「OK」をクリックして入力データのPostgreSQLに読込
エラーメッセージが出なければ、データベースへの登録は完了です。
- 作成されたテーブル
SPITが自動的に作成したテーブルを観察してみます。 - テーブル構造
CREATE TABLE mesh5339
(
gid serial NOT NULL, --ID
"MESH1_ID" character varying(4), --1次メッシュコード
"MESH2_ID" character varying(2), --2次メッシュコード
"MESH3_ID" character varying(2), --3次メッシュコード
"OBJ_ID" integer, --メッシュ形状のID
"KEY_CODE" character varying(8), --メッシュコード
"tblT000608" integer, --人口
"tblT0006_1" integer, --男性人口
"tblT0006_2" integer, --女性人口
"tblT0006_3" character varying(254), --世帯数
the_geom geometry(Polygon,4612),--メッシュ形状:測地系(新日本測地系)
CONSTRAINT mesh5339_pkey PRIMARY KEY (gid)
)
WITH (
OIDS=FALSE
);
- データ例
![スクリーンショット 2015-12-07 0.43.57.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53918%2F10ad68eb-802c-f2b2-1047-b096e907cf8a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5af379f9587f0a3cea56966f51eb1e71)
お疲れ様でした。ここまで来れば準備OKです!