以前,空間データベースを作成していれば,GISデータをデータベースにアップロードできる状態にあります.現在,PostGIS/PosgreSQLデータベースにデータを入れるには2つの方法があります:書式付SQLステートメントを使うか,図形ファイルloader/dumperを使うかです.
データをテキスト表現に変換することができれば,書式付SQLはPostGISへデータを入れるもっとも簡単な方法ですしょう.Oracleや他のSQLデータベースと同様に,SQLの"INSERT"ステートメントの大きなテキストファイルをSQL端末モニタへ渡して(piping)ロードすると,データは巨大になるでしょう.
データアップロードファイル(例えばroads.sql)はこのようになるでしょう:
BEGIN; INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (1,GeometryFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (2,GeometryFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (3,GeometryFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (4,GeometryFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (5,GeometryFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (6,GeometryFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres'); COMMIT; |
データファイルはSQL端末モニタ"psql"を使って,とても簡単にPostgreSQLに渡すことができます:
psql -d [database] -f roads.sql |
図形ファイルのデータをもつ新しいテーブルを作成する前に,データベーステーブルを削除(drop)します.
図形ファイルのデータをデータベーステーブルに追加します.このオプションを複数ファイルをロードする為に用いる場合,ファイルは同じ属性と同じデータタイプで無ければならないことに注意してください.
新しいテーブルを作成し,そこに図形ファイルのデータを格納します.これが既定のモードです.
新しいテーブルを作成し,そこに図形ファイルのデータを格納します.このオプションは,データ出力のためのPostgreSQLの"dump"フォーマットを利用し,ロードは既定の"insert"SQLフォーマットよりもずっと高速です.とても大きなデータセットに対してこのオプションを利用してください.
指定のSRIDのジオメトリテーブルを作成し,格納します.
loaderを使って入力ファイルを作成し,それをアップロードするセッションの例は,このようになるでしょう:
# shp2pgsql shaperoads roadstable roadsdb > roads.sql # psql -d roadsdb -f roads.sql |
変換とアップロードはUNIXのパイプを使って,一度に行うこともできます:
# shp2pgsql shaperoads roadstable roadsdb | psql -d roadsdb |