ST_Envelope
定義
ST_Envelope は、ST_Geometry オブジェクトの最小範囲ボックスをポリゴンとして返します。
注意:
この関数は、ST_Envelope がポリゴンを返すことを指定した OGC(Open Geospatial Consortium)のシンプル フィーチャ仕様に準拠しています。ST_Envelope 関数は、ポイント ジオメトリや水平線または垂直線といった特殊な場合で機能するように、最大 XY と最小 XY 座標の 1 単位上および下である形状の周囲にあるポリゴンを返します。
構文
sde.st_envelope (g1 sde.st_geometry)
戻り値のタイプ
ST_Geometry
例
envelope_test テーブルの geotype 列は、g1 ST_Geometry 列に格納されるジオメトリ サブクラスの名前を格納します。
CREATE TABLE envelope_test (geotype varchar(20), g1 sde.st_geometry);
INSERT ステートメントは、各ジオメトリ サブクラスを envelope_test テーブルに挿入します。
Oracle
INSERT INTO ENVELOPE_TEST VALUES ( 'Point', sde.st_geometry ('point (10.02 20.01)', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Linestring', sde.st_geometry ('linestring (10.01 20.01, 10.01 30.01, 10.01 40.01)', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Linestring', sde.st_geometry ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Polygon', sde.st_geometry ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Multipoint', sde.st_geometry ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Multilinestring', sde.st_geometry ('multilinestring ((10.01 20.01, 20.01 20.01, 30.01 20.01), (30.01 20.01, 40.01 20.01, 50.01 20.01))', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Multilinestring', sde.st_geometry ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 0) ); INSERT INTO ENVELOPE_TEST VALUES ( 'Multipolygon', sde.st_geometry ('multipolygon (((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73)))', 0) );
PostgreSQL
INSERT INTO envelope_test VALUES ( 'Point', sde.st_point ('point (10.02 20.01)', 0) ); INSERT INTO envelope_test VALUES ( 'Linestring', sde.st_linestring ('linestring (10.01 20.01, 10.01 30.01, 10.01 40.01)', 0) ); INSERT INTO envelope_test VALUES ( 'Linestring', sde.st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO envelope_test VALUES ( 'Polygon', sde.st_polygon ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 0) ); INSERT INTO envelope_test VALUES ( 'Multipoint', sde.st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO envelope_test VALUES ( 'Multilinestring', sde.st_multilinestring ('multilinestring ((10.01 20.01, 20.01 20.01, 30.01 20.01), (30.01 20.01, 40.01 20.01, 50.01 20.01))', 0) ); INSERT INTO envelope_test VALUES ( 'Multilinestring', sde.st_multilinestring ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 0) ); INSERT INTO envelope_test VALUES ( 'Multipolygon', sde.st_multipolygon ('multipolygon (((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73)))', 0) );
クエリは、サブクラス名とそのエンベロープをリストします。ST_Envelope 関数は、ポイント、ライン、ポリゴンの周囲にあるエンベロープを返します。
Oracle
SELECT geotype, sde.st_astext (sde.st_envelope (g1)) Envelope FROM ENVELOPE_TEST; GEOTYPE Envelope Point POLYGON (( 9.02000000 19.01000000, 11.02000000 19.01000000, 11.02000000 21.01000000, 9.02000000 21.01000000, 9.02000000 19.01000000)) Linestring POLYGON (( 9.01000000 19.01000000, 11.01000000 19.01000000, 11.01000000 41.01000000, 9.01000000 41.01000000, 9.01000000 19.01000000)) Linestring POLYGON (( 10.02000000 20.01000000, 11.92000000 20.01000000, 11.92000000 25.64000000, 10.02000000 25.64000000, 10.02000000 20.01000000)) Polygon POLYGON (( 10.02000000 20.01000000, 25.02000000 20.01000000, 25.02000000 35.64000000, 10.02000000 35.64000000, 10.02000000 20.01000000)) Multipoint POLYGON (( 10.02000000 20.01000000, 11.92000000 20.01000000, 11.92000000 25.64000000, 10.02000000 25.64000000, 10.02000000 20.01000000)) Multilinestring POLYGON (( 9.01000000 19.01000000, 51.01000000 19.01000000, 51.01000000 21.01000000, 9.01000000 21.01000000, 9.01000000 19.01000000)) Multilinestring POLYGON (( 9.55000000 20.01000000, 15.36000000 20.01000000, 15.36000000 30.11000000, 9.55000000 30.11000000, 9.55000000 20.01000000)) Multipolygon POLYGON (( 10.02000000 20.01000000, 73.36000000 20.01000000, 73.36000000 35.64000000, 10.02000000 35.64000000, 10.02000000 20.01000000))
PostgreSQL
SELECT geotype, sde.st_astext (sde.st_envelope (g1)) AS Envelope FROM envelope_test; geotype envelope Point | POLYGON (( 9.02000000 19.01000000, 11.02000000 19.01000000, 11.02000000 21.01000000, 9.02000000 21.01000000, 9.02000000 19.01000000)) Linestring | POLYGON (( 9.01000000 19.01000000, 11.01000000 19.01000000, 11.01000000 41.01000000, 9.01000000 41.01000000, 9.01000000 19.01000000)) Linestring | POLYGON (( 10.02000000 20.01000000, 11.92000000 20.01000000, 11.92000000 25.64000000, 10.02000000 25.64000000, 10.02000000 20.01000000)) Polygon | POLYGON (( 10.02000000 20.01000000, 25.02000000 20.01000000, 25.02000000 35.64000000, 10.02000000 35.64000000, 10.02000000 20.01000000)) Multipoint | POLYGON (( 10.02000000 20.01000000, 11.92000000 20.01000000, 11.92000000 25.64000000, 10.02000000 25.64000000, 10.02000000 20.01000000)) Multilinestring | POLYGON (( 9.01000000 19.01000000, 51.01000000 19.01000000, 51.01000000 21.01000000, 9.01000000 21.01000000, 9.01000000 19.01000000)) Multilinestring | POLYGON (( 9.55000000 20.01000000, 15.36000000 20.01000000, 15.36000000 30.11000000, 9.55000000 30.11000000, 9.55000000 20.01000000)) Multipolygon | POLYGON (( 10.02000000 20.01000000, 73.36000000 20.01000000, 73.36000000 35.64000000, 10.02000000 35.64000000, 10.02000000 20.01000000))
7/10/2012