もちろん, 簡単にデータを移行する方法はなく, そこから多く使用されることがありません. しかし, 幸いなことに簡単にデータを移動でき, PostGISに出力するツールがいくつかあります.
shp2pgsql は, ESRIシェープファイルをデータベースへインポートするためのコマンドラインツールです. Unixでは, 新しい PostGIS のテーブルをインポートするために, 次のようなコマンドを使用できます:
shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> | \
psql -d <databasename> -h <hostname> -U <username>
Windows では, 2ステップでインポート処理を実行します
shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> > import.sql
psql psql -d <databasename> -h <hostname> -U <username> -f import.sql
次のようなエラーが発生することがあります
ERROR: operator class "gist_geometry_ops" does not exist for access method
"gist"
これは, インポートするデータのために空間インデックス in situ を作成するための既知の問題です. エラーを回避するためには, -I パラメータを外します. これは空間インデックスが直接作成されないことを意味します. データがインポートされた後にデータベースに空間インデックスを作成する必要があります(空間インデックスの作成は, 次のレッスンで説明します.).
pgsql2shp は, PostGIS のテーブル, ビュー, または SQL の select クエリをエクスポートするためのコマンドラインツールです. Unix では次のように実行します
pgsql2shp -f <path to new shapefile> -g <geometry column name> \
-h <hostname> -U <username> <databasename> <table | view>
クエリを使用してデータをエクスポートするには
pgsql2shp -f <path to new shapefile> -g <geometry column name> \
-h <hostname> -U <username> "<query>"
ogr2ogr は, PostGIS を多くのデータフォーマットに変換する強力なツールです. ogr2ogr は, GDAL/OGR ソフトウェアの一部であり, 個別にインストールする必要があります. テーブルを PostGIS から GML へエクスポートするには, このコマンドを使用することができます
ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
host=<hostname>' <Name of PostGIS-Table>
SPIT は QGIS と一緒に配布される QGIS プラグインです. PostGIS に ESRI シェープファイルをアップロードするために SPIT を使用することができます.
Plugin Manager を介して SPIT プラグインを追加したら, このボタンを探します :
このボタンをクリックするか, メニューから Database –> Spit –> Import Shapefiles to PostgreSQL のように多たどり, SPIT ダイアログを表示できます.
Add ボタンをクリックすることでファイルブラウザウィンドウを開き, データベースにシェープファイルを追加することができます.
Database メニュー内の DB Manager という別のオプションに気づいているかもしれません. これは PostGIS を含む空間データベースと対話する統一的なインターフェース持った QGIS 2.0 の新しいツールです. このツールもインポートしたデータベースから他のフォーマットにエクスポートすることができます. 次のモジュールは, 主にこのツールを使うことを念頭に置いているので, ここでは簡単にそれを説明します.
データベースとの間でデータをインポート及びエクスポートは, 多様な方法で行うことができます. 異なるデータソースを使用する場合は特に, この機能(またはこの機能に似た機能)を使用します.
次に,私たちが以前に作成したデータを参照する方法を見ていきます.