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ファイルのデータを取り込むときの手順。
(手順)
- テーブル定義を作る(最初だけ)
> shp2pgsql -p -W cp932 -D -I -s 4612 test.shp tb_hoge > tb_hoge.sql
-p : テーブル定義のみ
-W
:
は文字コードを932指定-D
:
ダンプ形式を指定-I
:
空間インデックスの作成を指定-s 4612
空間参照系を4612 (JGD2000地理座標系)を指定:
- テーブル定義をDBに取り込み
> psql hoge_db -f tb_hoge.sql
- データ取り込み用SQLを作る
> shp2pgsql -a -W cp932 -D -s 4612 test.shp tb_hoge > test_data.sql
-a :データのみ ※-Dを指定しない場合はinsert文になる
-W
:
は文字コードを932指定-D
:
ダンプ形式を指定-s 4612
空間参照系を4612 (JGD2000地理座標系)を指定:
- データをDBに取り込む
> psql hoge_db -f test_data.sql
初めに1.,2.の手順で、テーブルを作っておき、その後は、3.,4.でデータを追加するイメージ。
データ取り込みが1回だけで終わるなら、 1.の手順で-pを外せば、テーブル定義とデータ取り込みをしてくれるSQLができる。取り込み手順は2.でOK
0 件のコメント:
コメントを投稿