PostgreSQL の ST_Geometry 列の登録
SQL を使用して ST_Geometry 列を持つテーブルを作成した場合、特定の空間参照と次元を使用するための列を登録できます。この方法を使えば、SQL を使用してレコードを挿入するユーザが、別の空間参照を使用するレコードや別の次元を含むレコードを誤って挿入することはありません。これを行うには、sde.st_register_spatial_column 機能を使用します。この機能の構文は次のとおりです。
SELECT st_register_spatial_column('<database_name>', '<schema_name>',
'<table_name>', '<spatial_column_name>', <srid>, <coordinate_dimension>)
指定する SRID は public.sde_spatial_references テーブル内に存在する必要があります。座標ディメンションは、データが単なる X、Y 座標(2)か、X、Y、Z 座標(3)か、X、Y、Z、M 座標(4)か、X、Y、M 座標(5)かを示します。デフォルトでは、座標ディメンションを指定しない場合、データは単なる X、Y ディメンションとして登録されます。
次の手順は、PostgreSQL の ST_Geometry 列を登録して、特定の SRID と次元を使用する方法の例を示しています。
-
コマンド プロンプトまたはシェル プロンプトを開き、psql にログインします。ST_Geometry 列を登録するテーブルを含むデータベースに接続します。
この例では、ユーザ horace がデータベース spatdat に接続しています。psql spatdat horace
- SQL プロンプトで、st_register_spatial_column 関数を呼び出して、特定の SRID と次元を使用できるようにテーブルの空間列を登録します。
ここでは、スキーマ cleo の waypoints テーブルの geo 列が 104199 の SRID および X、Y、Z 次元に登録されています。
SELECT sde.st_register_spatial_column('spatdat', 'cleo', 'waypoints', 'geo', 104199, 3);
ユーザ horace が空間列を登録するには、少なくとも cleo.waypoints テーブルに対する SELECT 権限を持っている必要があります。
- テーブルが正しく登録されたことを確認するために、st_isregistered_spatial_column および st_get_coord_dimension 関数を使用して登録情報を返すことができます。
st_isregistered_spatial_column 関数は、指定した SRID に列が登録されていれば 1(true)を返します。
SELECT sde.st_isregistered_spatial_column('spatdat', 'cleo', 'waypoints', 'geo', 104199); st_isregistered_spatial_column -------------------------------- 1
st_get_coord_dimension 関数は、テーブルが格納できる座標ディメンションを返します。
SELECT sde.st_get_coord_dimension('cleo', 'waypoints', 'geo', 104199); st_get_coord_dimension -------------------------------- xyz