サイトマップ
Click !! ( Open/Close )
案内板
杜の記録
最近の投稿
杜の記録カレンダー
2012年 5月
« 1月    
 12345
6789101112
13141516171819
20212223242526
2728293031  
 


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

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

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

ShapeファイルをPostGISに投入

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

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

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

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

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

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

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

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。 こちらと、 こちらを参照。

新しくコメントをつける

題名
ゲスト名  
投稿本文
より詳細なコメント入力フォームへ

コメント一覧


© 2007-2011 Tsukinomori kobo
login