この項ではshp file(地理空間データの標準フォーマット)のデータをPostgreSQLにインポートする方法について紹介します。
準備
- Postgresql, pgAdminのインストール (PostgreSQLのセットアップ)
- 神奈川県全域シェープファイルをダウンロード
環境
UbuntuにPostgreSQL, pdAdminをインストールしている場合を想定しております。
- Ubuntu 20.04
- PostgreSQL 12.9
- pdAdmin 4
地理情報に関する基本知識
-
shp file:
-
座標系:
-
測地系:
-
SRID(空間参照系ID):
shp fileの座標系と測地系は、prjファイル(shp file形式データをどういった投影法や地球楕円体等に基づく空間参照情報で表示するかを定義)からわかります。
prjファイルの構成に関しては、こちら(操作手順: シェープファイルに対する投影メタデータ (*.prj) ファイルの作成)を参照ください。
1 |
GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] |
-
- 座標系:GEOGCS(地理座標系)
- 測地系:JGD_2000
今回は、座標系が地理座標系で測地系がJGD_2000の際によく使用されるSRID=4612を使用します。
PostGISで使用できるSRID(空間参照系ID)は、SPATIAL_REF_SYSテーブルに詳細情報とともにまとめられています。詳細に関してはこちら(SPATIAL_REF_SYSテーブルと空間参照系)を参照ください。
手順
1. PostGISの有効化
2_a. command でのimport
2_b. GUIでのimport
今回はcommandでのimportとGUIでのimportの2つの方法を紹介します。どちらを選択してもらっても構いません。
1. PostGISの有効化
-
PostGISをインストール
1 |
sudo apt update & sudo apt install postgis |
-
postgresアカウントに切り替えて、postgresプロンプトにアクセス
1 |
sudo -i -u postgres |
1 |
psql |
-
以下クエリでPostGISを有効化
1 |
CREATE EXTENSION postgis; |
2_a. command でのimport
-
シェープファイルをPostgreSQLに挿入するためのSQLに変換
1 |
shp2pgsql -s [:] <.shpファイルのパス> <スキーマ名.テーブル名> > test.sql |
-
-
-s [<FROM_SRID>:]<SRID>
オプション指定したSRIDでジオメトリデーブルの作成とデータの読み込みを行います。 入力シェープファイルが使っているFROM_SRIDの指定が可能で、この場合は対象SRIDに投影変換を行います。
今回の例では、以下のように設定します。
- FROM_SRID : 4612
- SRID : 4326 (pgAdminにおいて、可視化の際に背景地図を表示させるためSRIDを4326に設定します。)
-
以下がコマンドの例になります。
1 |
shp2pgsql -s 4612:4326 h27ka14.shp public.kanagawa > test.sql |
- インポート
1 |
psql -d postgres -f test.sql |
pdAdminのgoemetry viewerを用いて可視化し、正しくインポートできているかを確認します。
2_b. GUIでのimport
1. postgis-guiをinstallします
1 |
sudo apt install postgis-gui |
2. guiを起動します
1 |
shp2pgsql-gui |
3. view connection をクリックし、connectionの情報を入力します
4. add file ボタンを押し、追加したいshp fileを選択
5. 必要に応じてschema, table名, SRIDを編集します
今回は下記を入力
table: kanagawa
SRID: 4326
6. Importボタンをクリック
Shape file import completed と表示されていれば完了です。
参考
- シェープファイルについて(esriジャパン)
- 日本で使用される座標系
- 操作手順: シェープファイルに対する投影メタデータ (*.prj) ファイルの作成
- SPATIAL_REF_SYSテーブルと空間参照系
- shp2pgsql: ESRIシェープファイルローダを使う
- psql — PostgreSQLの対話的ターミナル
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?