ST_Geometry 列を持つテーブルへのフィーチャの挿入
SQL の INSERT ステートメントと ST_Geometry 関数を使用して、ST_Geometry 列を持つテーブルにレコードを挿入します。
ST_Geometry 列に挿入するデータは、以下のジオメトリ形式のいずれかで表現できます。
- OGC(Open Geospatial Consortium, Inc.)WKT(Well-Known Text)表現
- OGC WKB(Well-Known Binary)表現
上記の形式では、空間データをデータベースに挿入するときや、データベースから取得するときに、入出力変換関数を使用する必要があります。また、このような外部形式のそれぞれを 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 形式のデータを入力することもできます。
- SQL エディタにログインし、テーブルにデータを挿入する権限があるユーザとして、データを挿入するテーブルがあるデータベースに接続します。
-
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 );
-
Oracle