ST_Envelope

Definition

ST_Envelope returns the minimum bounding box of an ST_Geometry object as a polygon.

NoteNote:

This function conforms with the Open Geospatial Consortium (OGC) Simple Features specification that states that ST_Envelope return a polygon. To work with special cases of point geometries or horizontal or vertical lines, the ST_Envelope function returns a polygon around these shapes that are one unit above and below the max x and y and min x and y coordinates.

Syntax

sde.st_envelope (g1 sde.st_geometry)

Return type

ST_Geometry

Example

The envelope_test table's geotype column stores the name of the geometry subclass stored in the g1 ST_Geometry column.

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

The INSERT statements insert each geometry subclass into the envelope_test table.

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

The query lists the subclass name and its envelope. The ST_Envelope function returns the envelope around a point, line, or polygon.

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

2/5/2013