2021年4月30日金曜日

PostGISにポリゴンデータ(shp)を登録する

PostGISにポリゴンデータとしてShpファイルを取り込んでみたので、とりあえずメモ。

(参考)
[PostGISを使ってみよう]
https://lets.postgresql.jp/documents/tutorial/PostGIS
[PostGISを入れるところからやってみよう]
https://zenn.dev/boiledorange73/books/b1de0a18073af70946e0

 

shpファイルは、そのままでは取り込めないので、shp2pgsqlコマンドで、shpファイルをsqlに変換する。


変換元となるshpファイルは、.shp,.dbf,.shxの3つのファイルが1セットとなるので、おなじディレクトリに配置すること。

Shpファイルに含まれる属性はすべてテーブルの項目として設定される。
ジオメトリを扱うカラムは"geom"として作られ(-gで名前は変えられる)、空間インデックスも作ってくれる。

以下は、データベース名:hoge_db,テーブル:tb_hogeにtest.shpファイルのデータを取り込むときの手順。

(手順)

  1. テーブル定義を作る(最初だけ)
    > shp2pgsql -p -W cp932 -D -I -s 4612 test.shp tb_hoge > tb_hoge.sql

    • -p : テーブル定義のみ
    • -W cp932 : は文字コードを932指定
    •  -D : ダンプ形式を指定
    •  -I : 空間インデックスの作成を指定
    • -s 4612 : 空間参照系を4612 (JGD2000地理座標系)を指定

  2. テーブル定義をDBに取り込み
    > psql hoge_db -f tb_hoge.sql
  3. データ取り込み用SQLを作る
    > shp2pgsql -a -W cp932 -D -s 4612 test.shp tb_hoge > test_data.sql

    • -a :データのみ ※-Dを指定しない場合はinsert文になる
    • -W cp932 : は文字コードを932指定
    •  -D : ダンプ形式を指定
    • -s 4612 : 空間参照系を4612 (JGD2000地理座標系)を指定

  4. データをDBに取り込む
    > psql hoge_db -f test_data.sql

初めに1.,2.の手順で、テーブルを作っておき、その後は、3.,4.でデータを追加するイメージ。
データ取り込みが1回だけで終わるなら、 1.の手順で-pを外せば、テーブル定義とデータ取り込みをしてくれるSQLができる。取り込み手順は2.でOK

0 件のコメント: