GISデータのロード

以前,空間データベースを作成していれば,GISデータをデータベースにアップロードできる状態にあります.現在,PostGIS/PosgreSQLデータベースにデータを入れるには2つの方法があります:書式付SQLステートメントを使うか,図形ファイルloader/dumperを使うかです.

SQLの利用

データをテキスト表現に変換することができれば,書式付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

Loaderの利用

-d

図形ファイルのデータをもつ新しいテーブルを作成する前に,データベーステーブルを削除(drop)します.

-a

図形ファイルのデータをデータベーステーブルに追加します.このオプションを複数ファイルをロードする為に用いる場合,ファイルは同じ属性と同じデータタイプで無ければならないことに注意してください.

-c

新しいテーブルを作成し,そこに図形ファイルのデータを格納します.これが既定のモードです.

-D

新しいテーブルを作成し,そこに図形ファイルのデータを格納します.このオプションは,データ出力のためのPostgreSQLの"dump"フォーマットを利用し,ロードは既定の"insert"SQLフォーマットよりもずっと高速です.とても大きなデータセットに対してこのオプションを利用してください.

-s <SRID>

指定のSRIDのジオメトリテーブルを作成し,格納します.

loaderを使って入力ファイルを作成し,それをアップロードするセッションの例は,このようになるでしょう:

  # shp2pgsql shaperoads roadstable roadsdb > roads.sql 
  # psql -d roadsdb -f roads.sql

変換とアップロードはUNIXのパイプを使って,一度に行うこともできます:

  # shp2pgsql shaperoads roadstable roadsdb | psql -d roadsdb