ArcGIS と PostGIS ジオメトリ タイプ
PostGIS は、PostgreSQL データベースを空間対応にする製品です。PostGIS は OGC(Open Geospatial Consortium)の Simple Features Specification for SQL に準拠しています。ジオメトリの OGC Well-Known Binary(WKB)表現と OGC Well-Known Text(WKT)表現を使用します。
PostGIS には、ジオメトリとジオグラフィの 2 つの空間タイプがあります。ArcGIS でサポートされているのは、ジオメトリのみです。
ArcGIS で PostGIS ジオメトリ格納タイプを使用するときは、以下のルールに留意してください。
- ジオデータベースとして使用する PostgreSQL データベースを PostGIS データベース テンプレートを使用して作成するか、データベースで PostGIS を有効化する必要があります。このトピックの「PostGIS ジオメトリを使用するためのデータベースの準備」をご参照ください。
- sde ユーザおよびジオデータベースにデータを作成するユーザは、特定の PostGIS テーブルに関する権限を付与されている必要があります。「PostGIS ジオメトリ列を持つテーブルを作成する権限のユーザへの割り当て」をご参照ください。
- 作成するフィーチャクラスは、PostGIS の public.spatial_ref_sys テーブルに列挙されている空間参照だけを使用できます。このテーブルにない空間参照を指定した場合、フィーチャクラスの作成は失敗します。
- PostGIS ジオメトリ タイプを使用するフィーチャクラスを作成するときは、GEOMETRY_STORAGE パラメータを PG_GEOMETRY に設定したコンフィグレーション キーワードを指定する必要があります。
- PostGIS ジオメトリ タイプを使用して格納された空間テーブルの名前を変更することはできません。これは、public.geometry_columns テーブルのテーブル名を更新する PostGIS 関数が存在しないためです。
以下では、ArcGIS アプリケーションで PostGIS ジオメトリ格納タイプを使用する方法について詳細に説明します。
PostGIS ジオメトリを使用するためのデータベースの準備
PostGIS ジオメトリ タイプを使用するには、PostGIS をインストールする必要があります。PostgreSQL をインストールした後、PostGIS をインストールします。インストールする PostGIS のバージョンが、使用する ArcGIS のリリースでサポートされていることを確認します。
使用している ArcGIS のリリースでサポートされている PostGIS のバージョンについては、ArcGIS Resources のデータベース システム要件のページをご参照ください。
PostGIS をインストールすると、PostGIS テンプレート データベースが PostgreSQL データベース クラスタに作成されます。この PostGIS データベース テンプレートを使用して、ジオデータベースを格納するデータベースを作成します。
[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ジオプロセシング ツールを使用してデータベースを作成する場合、PostGIS テンプレート以外のテンプレートを使用してデータベースが作成されます。そのため、PostGIS ジオメトリ タイプを使用する場合は、PostGIS テンプレートを使用してデータベースを手動で作成する必要があります。その後、[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ジオプロセシング ツールを実行するときに既存のデータベースを指定すると、ジオデータベースがその中に作成されます。
PostGIS ジオメトリ列を持つテーブルを作成する権限のユーザへの割り当て
データベースで PostGIS が有効になると、2 つのテーブル(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 のジオデータベースでのフィーチャクラスの作成
データベースで PostGIS ジオメトリの格納が有効になると、ジオメトリ タイプの空間列が含まれた空間対応テーブルを作成できるようになります。地理フィーチャをこの空間列に挿入することができます。
空間対応テーブルには、ArcGIS for Desktop から、または ArcSDE の C 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 コマンドを使用します。このコマンドを使用する方法については、『ArcSDE コマンド リファレンス』をご参照ください)。または、フィーチャクラスの一部だけを PostGIS 格納タイプで格納する場合は、PG_GEOMETRY コンフィグレーション キーワードを使用でき、フィーチャクラスの作成時に PG_GEOMETRY コンフィグレーション キーワードを指定します。dbtune.sde ファイルで、PG_GEOMETRY キーワードを次のように記述します(dbtune.sde ファイルは、sdedbtune コマンドを使用して sde_dbtune テーブルの内容をエクスポートすることで作成できます)。
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
残りの格納パラメータは DEFAULTS キーワードから取得されます。sde_dbtune 格納の詳細については、次のトピックをご参照ください。
既存の PostGIS テーブルの使用
ArcGIS ではテーブルが次の前提条件を満たしている限り、他のアプリケーションや SQL によって外部環境で作成された PostGIS ジオメトリ列が含まれたテーブル(サードパーティ テーブルとも呼ばれます)を使用することができます。
- ジオメトリ列が 1 つだけ含まれていなければならない。含まれていない場合は、ジオメトリ列を 1 つだけ含むクエリ レイヤまたはビューを定義する。
- 他にユーザ定義タイプの列が含まれていない。
- ジオメトリのタイプが 1 種類でなければならない(ポイント、ライン、またはポリゴン)。ただし、ジオメトリはマルチパートでもよい。
- 登録済みの RowID 列に適した、整数タイプの一意な NOT_NULL の列が含まれていなければならない。
- 空間インデックスを持つ。
SQL を使用して PostGIS 列を持つテーブルを作成する方法については、PostGIS のマニュアルをご参照ください。
PostGIS ジオメトリ列が含まれたサードパーティ テーブルの登録
ArcGIS for Desktop から PostGIS テーブルを含む PostgreSQL データベースに接続して、それらのテーブルをジオデータベースに登録することができます。詳細については、「ジオデータベースへのテーブルの登録」をご参照ください。
PostGIS および PostgreSQL ドキュメントの検索先
PostGIS のドキュメントは、PostGIS の Web サイト(http://www.postgis.org/documentation/)で参照できます。
PostgreSQL に関する一般的な情報については、PostgreSQL の Web サイト(http://www.postgresql.org/docs/)をご参照ください。