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