3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日本の行政区域データをPostgreSQLにインポートするメモ

Posted at

日本の行政区域データをPostgreSQLにインポートするメモです。行政区域や町の境界データは、国土交通省および、政府統計の総合窓口(e-Stat)から取得することができます。

初めにPostgreSQLのデータベースを作成します。以前投稿した以下の記事も参考にして下さい。

僕の地球を作って!そろそろOpenStreetMapタイルサーバは数秒で構築できるようにしようよ

これから紹介するスクリプトで使用する環境変数を設定しておきます。環境にあわせて変更してください。

export PSQL_HOST=localhost
export PSQL_PORT=5432
export PSQL_USERNAME=postgres
export PSQL_PASSWORD=postgrespassword
export PSQL_DBNAME=gis

PostgreSQLのデータベースします。

echo $PSQL_HOST:$PSQL_PORT:$PSQL_DBNAME:$PSQL_USERNAME:$PSQL_PASSWORD > ~/.pgpass
chmod 600 ~/.pgpass
psql --host=$PSQL_HOST --port=$PSQL_PORT --username=$PSQL_USERNAME --dbname=postgres --command="CREATE DATABASE $PSQL_DBNAME ENCODING = UTF8;"
psql --host=$PSQL_HOST --port=$PSQL_PORT --username=$PSQL_USERNAME --dbname=$PSQL_DBNAME --command="CREATE EXTENSION postgis;"
psql --host=$PSQL_HOST --port=$PSQL_PORT --username=$PSQL_USERNAME --dbname=$PSQL_DBNAME --command="CREATE EXTENSION hstore;"

行政区域をPostgreSQLにインポート

行政区域データは、国土交通省のGISホームページから入手することができます。
「GISホームページ」、「GML(JPGIS2.1)シェープファイル」、「行政区域(ポリゴン)」の順にページを移動してください。

TOP / 国土数値情報 / 行政区域データ

image.png

各地域のデータをダウンロードして、1つのディレクトリにまとめます。まとめたディレクトリに移動したら以下のスクリプトを実行することでPostgreSQLのSQLを作成することができます。

create_table_admarea_estat.sh
#!/bin/sh
APPEND=0
FILE_SQL=admarea_mlit.sql
TABLE=admarea_mlit
for FILE in *.zip
do
echo unzip $FILE
unzip -u $FILE
done
for FILE in *.shp
do
echo shp2pgsql $FILE
if test $APPEND -eq 0
then
shp2pgsql -s 4612 -D -i -I -W cp932 $FILE $TABLE > $FILE_SQL
APPEND=1
else
shp2pgsql -a -s 4612 -D -i -I -W cp932 $FILE $TABLE >> $FILE_SQL
fi
done

作成されたSQLを実行することによりインポートします。

psql --host=$PSQL_HOST --port=$PSQL_PORT --username=$PSQL_USERNAME --dbname=$PSQL_DBNAME -f admarea_mlit.sql

QGISで確認するとインポートされていることを確認することができます。
image.png

町の境界データをPostgreSQLにインポート

町の境界データは、各府省等の参画の下、総務省統計局が整備し、独立行政法人統計センターが運用管理している、政府統計の総合窓口(e-Stat)から入手することができます。

「e-Stat」、「地図で見る統計(統計GIS)」、「境界データダウンロード」、「小地域」、「国勢調査」、「2015年」、「小地域(町丁・字等別)」、「世界計地系緯度経度・Shapefile」の順にページを移動してください。

政府統計の総合窓口(e-Stat)/トップページ / 地図で見る統計(統計GIS) / 境界データダウンロード

image.png

各地域のShapefileをダウンロードして、1つのディレクトリにまとめます。まとめたディレクトリに移動したら以下のスクリプトを実行することでPostgreSQLのSQLを作成することができます。

create_table_admarea_estat.sh
#!/bin/sh
APPEND=0
FILE_SQL=admarea_estat.sql
TABLE=admarea_estat
for FILE in *.zip
do
echo unzip $FILE
unzip -u $FILE
done
for FILE in *.shp
do
echo shp2pgsql $FILE
if test $APPEND -eq 0
then
shp2pgsql -s 4612 -D -i -I -W cp932 $FILE $TABLE > $FILE_SQL
APPEND=1
else
shp2pgsql -a -s 4612 -D -i -I -W cp932 $FILE $TABLE >> $FILE_SQL
fi
done

作成されたSQLを実行することによりインポートします。

psql --host=$PSQL_HOST --port=$PSQL_PORT --username=$PSQL_USERNAME --dbname=$PSQL_DBNAME -f admarea_estat.sql

QGISで確認するとインポートされていることを確認することができます。
image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?