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 データベースの格納データ タイプに変換する関数も用意されています。 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 で修飾する必要があります。
-
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))
-
Oracle