サイトマップ
お知らせ、メモ
案内板
うちのヘッドライン
 




トップ  >  ソフトウェア豆知識  >  PostGIS豆知識  >  PostGIS:Shapeファイルのインポート/エクスポート

Shapeファイルのインポート/エクスポート

shp2pgsqlとpgsql2shpコマンドを使用する場合

ShapeファイルをPostGISに投入

まずはデータベースを作成します。 データベースを作成するときにはテンプレート「template_postgis」を指定しておく必要があります。

PostGIS 2.0では「template_postgis_20」とします。

> createdb -U "ユーザ名" -T template_postgis "データベース名"

shp2pgsqlコマンドを使って、データベースにデータを追加するSQLファイルを作成します。

> shp2pgsql -s "SRID番号" -W "文字コード" "shpファイル名" 
   "テーブル名" "データベース名" > "SQLファイル名"

テーブル名は既存のテーブルを指定することができません。

最後に、できたSQLファイルを実行します。

> psql -U "ユーザ名" -d "データベース名" -f "SQLファイル名"

PostGIS 2.0では、GeometryColumnのカラム名が「the_geom」から「geom」になるように変更されています。

PostgreSQL 9.1以降の場合

投入方法が大幅に変わりました。template_postgisがなくなりました。 新規作成したデータベースをPostGISに対応させるためにはCREATE EXTENSION postgis;を実行します。 コマンドラインから実行する場合は以下の手順になるでしょうか。

> createdb -U "ユーザ名" "データベース名"

> psql -U "ユーザ名" -d "データベース名" -c "create extension postgis;"

後はいっしょ

pgAdmin III を使う場合は以下のようにします。



pgadmin popupmenu
データベースのツリーを展開して、"Extensions"を右クリック、ポップアップメニューから"New Extension"を選択


pgadmin new extension dialog
"名前"のドロップダウンリストから"postgis"を選択

PostGISからShapeに吐き出し

pgsql2shpコマンドを使って、データベースの内容をShapeファイルに書き出すには以下のようにします。

> pgsql2shp -u "ユーザ名" -P "パスワード" -f "Shapeファイル名"
    "データベース名" "テーブル名"

ユーザ名のオプションが普通は大文字の"-U"なのに、このコマンドだけ小文字なので注意! また、パスワードを後で聞かれなくて、コマンドラインで指定しないと動かないようです。

ogr2ogrコマンドを使用する場合

OGR2OGR Cheatsheet に詳しく書かれています。大体以下の要領です。 データベースの作成は上記と同じように行います。

ShapeファイルをPostGISに投入

> ogr2ogr -f "PostgreSQL" -a_srs "EPSG:EPSG番号" PG:"host=ホスト名 user=ユーザ名
     dbname=データベース名 password=パスワード" Shapeフィアル名 -nln テーブル名

-nlnオプションを省略すると拡張子を除いたファイル名がテーブル名になります。 また、プライマリキーの"gid"フィールドは"ogc_fid"、 GeometryColumnの"the_geom"は"wkb_geometry"という名前にそれぞれなります。

さらに、shp2pgsqlとは文字列の取り扱いが異なります。 shp2pgsqlでは文字列はvarchar(255)として登録されますが、 ogr2ogrでは文字列はcharacter(255)で、固定長です。 なので、末尾に余計な空白があります。

このコマンドを使用した場合、shp2pgsqlのようにSQLファイルを出力するのではなく、直接データベースに投入します。

PostGISからShapeに吐き出し

以下のコマンドラインでShapeに吐き出します。

> ogr2ogr -f "ESRI Shapefile" Shapeファイル名 PG:"host=ホスト名 user=ユーザ名
     dbname=データベース名 password=パスワード" "テーブル名"

テーブル名の指定の仕方に注意してください(ここだけ別にダブルクォーテーションで囲みます)。

このコマンドを使用した場合、.prjファイルも作成されて、便利なのですが、 フィールドがアルファベット順に並び替えられてしまいます。

用語

意味
SRID spatial referencing system identifier。 こちらと、 こちらを参照。


クリエイティブ・コモンズ・ライセンス
This documents by Yamate,N is licensed under a Creative Commons 表示 - 継承 3.0 非移植 License.
login