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

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

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

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


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

手順:
  1. SQL エディタにログインし、テーブルにデータを挿入する権限があるユーザとして、データを挿入するテーブルがあるデータベースに接続します。
  2. 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_geometry('polygon ((52 28,58 28,58 23,52 23,52 28))', 4326)
      );
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location) VALUES (
       1,
       102,
       'W. H. Kleenare Chemical Repository',
       sde.st_geometry('point (52 24)', 4326)
      );
      
    • 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))', 4326)
      );
      
      INSERT INTO hazardous_sites (row_id, site_id, name, location) VALUES (
       1,
       102,
       'W. H. Kleenare Chemical Repository',
       ST_Point('point (52 24)', 4326
      );
      
    • SQLite
      INSERT INTO sensitive_areas (name, area_size, type, zone) VALUES (
       'Summerhill Elementary School',
       67920.64,
       'school',
       ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 4326)
      );
      
      INSERT INTO hazardous_sites (site_id, name, location) VALUES (
       102,
       'W. H. Kleenare Chemical Repository',
       ST_Point('point (52 24)', 4326
      );
      

関連トピック

5/25/2014