ST_Geometry 列を持つテーブルへのフィーチャの挿入

SQL の INSERT ステートメントと ST_Geometry 関数を使用して、ST_Geometry 列を持つテーブルにレコードを挿入します。

ST_Geometry 列に挿入するデータは、以下のジオメトリ形式のいずれかで表現できます。

上記の形式では、空間データをデータベースに挿入するときや、データベースから取得するときに、入出力変換関数を使用する必要があります。また、このような外部形式のそれぞれを Oracle または PostgreSQL データベースの格納データ タイプに変換する関数も用意されています。
PostgreSQL の場合、Esri シェープファイル形式の変換関数も用意されています。
用意されている関数の一覧については、「ST_Geometry タイプと ST_Raster タイプを使用する SQL 関数の概要」をご参照ください。

以下の例では、Oracle、PostgreSQL、DB2 のデータベース テーブル(sensitive_areas と hazardous_sites)にレコードを数件挿入します。ST_PolyFromText() 関数(PostgreSQL では ST_Polygon)でポリゴンの WKT 表現を ST_Polygon タイプに変換して、それを sensitive_areas テーブルの ZONE 列に挿入します。同様に、ST_PointFromText() 関数(PostgreSQL では ST_Point)でポイントの WKT 表現を ST_Point タイプに変換して、それを hazardous_sites テーブルの LOCATION 列に挿入します。また、ST_PolyFromWKB() 関数と ST_PointFromWKB() 関数を使用して、WKB 形式のデータを入力することもできます。

メモメモ:

DB2 で空間タイプ関数を使用するときは、関数名を db2gse で修飾する必要があります。

手順:
  1. SQL の INSERT ステートメントを使用して、sensitive_areas テーブルと hazardous_sites テーブルにレコードを追加します。
    • Oracle
      INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', sde.ST_PolyFromText('polygon ((52 28,58 28,58 23,52 23,52 28))', 1));
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location) 
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', sde.ST_PointFromText('point (52 24)',1));
    • PostgreSQL
      INSERT INTO sensitive_areas (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 1));
      
      INSERT INTO hazardous_sites (row_id, site_id, name, location)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', ST_Point('point (52 24)', 1);
    • DB2
      INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', db2gse.ST_PolyFromText('polygon ((52 28,58 28,58 23,52 23,52 28))', 1))
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', db2gse.ST_PointFromText('point (52 24)', 1))

3/6/2012