ArcGIS と PostGIS ジオメトリ タイプ

PostGIS is a product from Refractions Research that can spatially enable PostgreSQL databases. PostGIS follows the Open Geospatial Consortium, Inc., Simple Features specification for SQL.

ArcGIS で PostGIS ジオメトリ格納タイプを使用するときは、以下のルールに留意してください。

以下では、ArcGIS アプリケーションで PostGIS ジオメトリ格納タイプを使用する方法について詳細に説明します。

PostGIS ジオメトリを使用するためのデータベースの準備

PostGIS ジオメトリ タイプを使用するには、PostGIS をインストールする必要があります。

PostgreSQL をインストールした後、PostGIS をインストールします。

ArcSDE でサポートされているバージョンの PostGIS を入手するには、Windows で PostgreSQL をインストールするときに PostgreSQL のスタックビルダをインストールします。または、PostGIS Web サイト(http://www.postgis.org/download/)または PgFoundry Web サイト(http://pgfoundry.org/)を参照して、ファイルのダウンロード場所を見つけます。必ず、使用するオペレーティング システムに適したインストール ファイルまたはバイナリ ファイルをダウンロードしてください。

ヒントヒント:

Esri のサポート ページにある ArcGIS Server システム要件のページを参照すると、ArcSDE がどのバージョンの PostGIS をサポートしているのかがわかります。

PostGIS をインストールすると、PostGIS テンプレート データベースが PostgreSQL データベース クラスタに作成されます。この PostGIS データベース テンプレートを使用して、ジオデータベースを格納するデータベースを作成します。

メモメモ:

Windows の ArcSDE ポスト インストール ウィザードを使用してジオデータベースを作成すると、PostGIS テンプレート以外のテンプレートを使用してデータベースが作成されます。このため、PostGIS ジオメトリ タイプを使用する場合は、インストール後のセットアップの開始前にインストール ウィザードを終了し、手動で PostGIS テンプレートからデータベースを作成し、sde ユーザ、およびデータベース内の sde ユーザ スキーマを作成します。その後、インストール後のセットアップの残りの作業をウィザードを使用して済ませることができます。ポスト インストール ウィザードの最初のダイアログ ボックスで [カスタム] をクリックし、[次へ] をクリックして、[SDE ユーザ環境の定義] をオフにします。

PostGIS ジオメトリ列を持つテーブルを作成する権限のユーザへの割り当て

データベースで PostGIS が有効になると、テーブル(geometry_columns と spatial_ref_sys)が public スキーマに作成されます。少なくとも、geometry_columns テーブルの SELECT、INSERT、UPDATE、DELETE 権限、spatial_ref_sys テーブルの SELECT 権限を、sde ユーザおよびジオデータベースにデータを作成するすべてのユーザに割り当てる必要があります。

GRANT select, insert, update, delete 
ON TABLE public.geometry_columns 
TO <user_name>;

GRANT select
ON TABLE public.spatial_ref_sys
TO <user_name>;

PostGIS ジオメトリ格納を使用して PostgreSQL 用の ArcSDE ジオデータベースにフィーチャクラスを作成

データベースで PostGIS ジオメトリの格納が有効になると、ジオメトリ タイプの空間列が含まれた空間対応テーブルを作成できるようになります。ジオグラフィック フィーチャをこの空間列に挿入することができます。

ArcSDE から空間対応テーブルにアクセスするには、ArcGIS ソフトウェアによって提供される既存のツールをアプリケーションで使用するか、ArcSDE の API を使ってアプリケーションを作成します。空間対応テーブルへのアクセスには、SQL の空間関数を呼び出すこともできます。

ArcGIS を使用したフィーチャクラスの作成

ArcGIS を使用して作成されたフィーチャクラスに使われるジオメトリ格納タイプは、sde_dbtune テーブルのパラメータで制御されます。そのパラメータは、GEOMETRY_STORAGE です。PostgreSQL のジオデータベースではパラメータの値を ST_GEOMETRY または PG_GEOMETRY(PostGIS ジオメトリ タイプに対する設定)のいずれかに設定できます。そのため、PostGIS ジオメトリ タイプを使用するフィーチャクラスを ArcGIS で作成するときは、GEOMETRY_STORAGE パラメータを PG_GEOMETRY に設定したコンフィグレーション キーワードを指定する必要があります。

デフォルトでは、ArcSDE for PostgreSQL ジオデータベースの新規フィーチャクラスのジオメトリ格納タイプには、ST_Geometry を使用します。ほとんどのデータを PostGIS 格納タイプで格納する場合は、sde_dbtune テーブルの DEFAULTS キーワードの GEOMETRY_STORAGE パラメータ値を PG_GEOMETRY に変更します(sde_dbtune テーブルのパラメータの変更には sdedbtune コマンドを使用します)。このコマンドを使用する方法については、ArcGIS Server Enterprise に付属している『ArcSDE コマンド リファレンス』をご参照ください。または、フィーチャクラスの一部だけを PostGIS 格納タイプで格納する場合は、フィーチャクラスの作成時に PG_GEOMETRY コンフィグレーション キーワードを指定します。dbtune.sde ファイルでは PG_GEOMETRY キーワードを次のように定義します。

##PG_GEOMETRY
GEOMETRY_STORAGE    "PG_GEOMETRY"
UI_TEXT             "User Interface text description for POSTGIS geometry storage" 
END

残りの格納パラメータは DEFAULTS キーワードから取得されます。sde_dbtune 格納の詳細については、以下のトピックをご参照ください。

既存の PostGIS テーブルの使用

ArcSDE ではテーブルが次の前提条件を満たしている限り、他のアプリケーションや SQL によって外部環境で作成された PostGIS ジオメトリ列が含まれたテーブル(サードパーティ テーブルとも呼ばれます)を使用することができます。

SQL を使用して PostGIS 列を持つテーブルを作成する方法については、PostGIS.org Web サイトにある PostGIS のマニュアルをご参照ください。

PostGIS ジオメトリ列が含まれたサードパーティ テーブルの登録

ArcSDE の sdelayer -o register 管理コマンドは、テーブルをフィーチャクラスとして登録します。つまり、そのテーブルに対するレコードが sde_layers、sde_table_registry および sde_geometry_columns システム テーブルに追加されます。sde_column_registry システム テーブルには、テーブルの各列に対するレコードも追加されます。

次に、shape という空間列にポイント ジオメトリ(-e p)が含まれている properties というテーブルを登録する例を示します。このテーブルには fid という整数列があり、SDE が管理する一意なフィーチャ ID 列として使用されます(-C fid,SDE)。

sdelayer –o register –l properties,shape –e p 
-t PG_GEOMETRY –C fid,SDE -g RTREE -x 30,10,1000 
–u <user> –p <pw>

上記のとおり、sdelayer は ArcSDE システム テーブルのみにテーブルを追加します。トポロジ、バージョニング、ネットワークなどの ArcGIS Desktop ジオデータベースの機能を使用可能にするには、テーブルをジオデータベースにも登録する必要があります。詳細については、「ジオデータベースへのテーブルの登録」をご参照ください。

メモメモ:

PostGIS ジオメトリ タイプを使用して格納された空間テーブルの名前を変更することはできません。これは、public.geometry_columns テーブルにテーブル名を更新する PostGIS 関数が存在しないためです。

PostGIS および PostgreSQL ドキュメントの検索先

PostGIS のドキュメントは、PostGIS の Web サイト(http://www.postgis.org/documentation/)で参照できます。

PostgreSQL に関する一般的な情報については、PostgreSQL の Web サイト(http://www.postgresql.org/docs/)をご参照ください。


3/6/2012