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 と次元を使用する方法の例を示しています。

手順:
  1. コマンド プロンプトまたはシェル プロンプトを開き、psql にログインします。ST_Geometry 列を登録するテーブルを含むデータベースに接続します。

    この例では、ユーザ horace がデータベース spatdat に接続しています。psql spatdat horace

  2. 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 権限を持っている必要があります。

  3. テーブルが正しく登録されたことを確認するために、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
    

関連トピック

9/14/2013