16.3. Lesson: インポートとエクスポート

もちろん, 簡単にデータを移行する方法はなく, そこから多く使用されることがありません. しかし, 幸いなことに簡単にデータを移動でき, PostGISに出力するツールがいくつかあります.

16.3.1. shp2pgsql

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 パラメータを外します. これは空間インデックスが直接作成されないことを意味します. データがインポートされた後にデータベースに空間インデックスを作成する必要があります(空間インデックスの作成は, 次のレッスンで説明します.).

16.3.2. pgsql2shp

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>"

16.3.3. ogr2ogr

ogr2ogr は, PostGIS を多くのデータフォーマットに変換する強力なツールです. ogr2ogr は, GDAL/OGR ソフトウェアの一部であり, 個別にインストールする必要があります. テーブルを PostGIS から GML へエクスポートするには, このコマンドを使用することができます

ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
        host=<hostname>' <Name of PostGIS-Table>

16.3.4. SPIT

SPIT は QGIS と一緒に配布される QGIS プラグインです. PostGIS に ESRI シェープファイルをアップロードするために SPIT を使用することができます.

Plugin Manager を介して SPIT プラグインを追加したら, このボタンを探します :

../../../_images/008.png

このボタンをクリックするか, メニューから Database –> Spit –> Import Shapefiles to PostgreSQL のように多たどり, SPIT ダイアログを表示できます.

../../../_images/spit_dialog.png

Add ボタンをクリックすることでファイルブラウザウィンドウを開き, データベースにシェープファイルを追加することができます.

16.3.5. DB Manager

Database メニュー内の DB Manager という別のオプションに気づいているかもしれません. これは PostGIS を含む空間データベースと対話する統一的なインターフェース持った QGIS 2.0 の新しいツールです. このツールもインポートしたデータベースから他のフォーマットにエクスポートすることができます. 次のモジュールは, 主にこのツールを使うことを念頭に置いているので, ここでは簡単にそれを説明します.

16.3.6. In Conclusion

データベースとの間でデータをインポート及びエクスポートは, 多様な方法で行うことができます. 異なるデータソースを使用する場合は特に, この機能(またはこの機能に似た機能)を使用します.

16.3.7. What’s Next?

次に,私たちが以前に作成したデータを参照する方法を見ていきます.