ST_Envelope

Definition

ST_Envelope gibt das kleinste umgebende Rechteck eines ST_Geometry-Objekts als Polygon zurück.

HinweisHinweis:

Diese Funktion entspricht der Simple Features-Spezifikation von Open Geospatial Consortium, Inc. (OGC), die besagt, dass ST_Envelope ein Polygon zurückgibt. Bei der Arbeit mit Sonderfällen von Punktgeometrien oder horizontalen und vertikalen Linien gibt die Funktion ST_Envelope ein Polygon zurück, das diese Formen eine Einheit ober- und unterhalb der minimalen und maximalen X- und Y-Koordinaten umschließt.

Syntax

sde.st_envelope (g1 sde.st_geometry)

Rückgabetyp

ST_Geometry

Beispiel

In der Spalte "geotype" der Tabelle "envelope_test" wird der Name der Geometrie-Subclass gespeichert, die in der Spalte "g1" vom Typ ST_Geometry enthalten ist.

CREATE TABLE envelope_test (geotype varchar(20), g1 sde.st_geometry);

Mit der INSERT-Anweisung wird jede Geometrie-Subclass in die Tabelle "envelope_test" eingefügt.

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)
);

Die Abfrage listet den Subclass-Namen und den zugehörigen Envelope auf. Die Funktion ST_Envelope gibt den Envelope zurück, der einen Punkt, eine Linie oder ein Polygon umschließt.

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