PostGISで国勢調査データをインポートを手軽に始めてみる

PostGISを初めて見ようと思いましたが何が何やら・・・。そんなときは、簡単なWindowsでGUIでざくざくっと進む方法を試してみようと思います。初めてって、ちょっとしたことで躓くんですよね。

目次

準備するもの

※PostgreSQLとPostGISのバージョンは合わせたものを利用する。

・Windows版のPostgreSQLをインストールします。

↓ダウンロードURL(Windows版)

https://www.postgresql.org/download/windows/

 

・PostGISをインストールします。

↓ダウンロードURL

http://download.osgeo.org/postgis/windows/

 

・PgAdmin4をインストール(PostgreSQLの管理用)

https://www.pgadmin.org/download/windows4.php

 

 

・インポートするデータ

今回は国勢調査データを利用します。

http://www.e-stat.go.jp

※細かいデータは割愛

 

インポート先のデータベースを準備する

・PgAdmin4を起動し、localのPostgreSQLのサーバーに接続します。それでテスト用データベースを作成します。

※PgAdmin4の動きが遅いので気を付けて操作します。

gistest2

 

PostGISを有効にするために下記のqueryを実行する

CREATE EXTENSION postgis ;
CREATE EXTENSION pgrouting ;

posgis4

 

コマンドでは「select postgis_full_version();」を実行する

posgis5

 

インポートを行う

・PostGIS Shapefile Import/Export Managerを起動します

・「View Connection details…」をクリックして、PostgreSQLへの接続情報を入力します。

 

posgis

 

・あらかじめダウンロードしておいた、国勢調査のデータを解凍するといくつかファイルがあります。そのうち、「shp」「dbf」「prj」「shx」の4つのファイルをインポート時に利用するのでセットのフォルダにおいてください。

 

・「AddFile」ボタンをクリックして、「shp」ファイルを指定します。次に、「Import」ボタンをクリックしてインポートを行います。

※SRIDは「4326」でインポートをする。(図は0となっているが4326で。)用語参照

 

 

posgis2

 

・インポートはあっという間に終わるのでそしたら「PgAdmin4」戻って、Tablesにインポートしたテーブルがあるのか確認します。

↓東京都新宿区のデータを取り込んでみました。

posgis3

 

インポートしたものをQGISで表示してみる

何がどうしてどーなるのか不明なため、とりあえずインポートしたデータが閲覧できるのか試してたいと思いQGISを利用します。

・QGISをダウンロードしてインストールする(http://www.qgis.org/ja/site/

 

・QGISの「レイヤ」>「レイヤの追加」>「PostGISレイヤの追加…」をクリックします。

gistest1-1

 

・「PostGISテーブルの追加」の「新規」クリックして、「接続先のPOSTGISの設定を登録」します。

gistest1-2

 

・「接続」ボタンをクリックして、インポートしたテーブルを選択し、「追加」ボタンをクリックします。

gistest1-3

 

追加完了すると画面上に表示されます。

gistest1-4

 

動いているって感じですね・・。

 

この後はポリゴン用のデータをクエリで取り出したいんだけど、どうするのかな・・・。

 

GeoJSONで出力する(クエリ処理)

ポリゴンをMAPで表示するときにGeoJSON形式のファイルを読み込みます。それなのでGeoJSONの形式出力をいろいろなところを参考にして試してみました。

・geom列をGeoJSON形式にしてgeometryとして出力

 

SELECT ST_AsGeoJSON(geom)::json AS geometry
FROM "h22ka13104"

↓なんかそれっぽくみえるけど。。。

gistest1-5

あれ、出力の値が想定と違う・・・。SRID:4326で出力したいのだが・・・。

→インポートの時にSRIDの指定を間違えていたので失敗していた。

 

 

PSQLのコマンドメモ

psql -t -f ファイル名.sql -U postgres テーブル名 > 出力ファイル名

 

 

緯度経度から住所変換

ST_Withinを使えば可能。取得した緯度経度の測地系に気を付ける。

 

 

町丁目をクリック→選択

gis

それっぽい感じになりました。