ST_Boundary
Definition
ST_Boundary takes a geometry and returns its combined boundary as a geometry object.
Syntax
Oracle and PostgreSQL
sde.st_boundary (geometry sde.st_geometry)
SQLite
st_boundary (geometry geometryblob)
Return type
Oracle and PostgreSQL
ST_Geometry
SQLite
Geometryblob
Example
In this example, the boundaries table is created with two columns: type and geometry. The subsequent INSERT statements add one record for each one of the subclass geometries. The ST_Boundary function retrieves the boundary of each subclass stored in the geometry column. Note that the dimension of the resulting geometry is always one less than the input geometry. Points and multipoints always result in a boundary that is an empty geometry, dimension –1. Linestrings and multilinestrings return a multipoint boundary, dimension 0. A polygon or multipolygon always returns a multilinestring boundary, dimension 1.
Oracle
CREATE TABLE boundaries (
geotype varchar(20),
geometry sde.st_geometry
);
INSERT INTO BOUNDARIES VALUES (
'Point',
sde.st_pointfromtext ('point (10.02 20.01)', 4326)
);
INSERT INTO BOUNDARIES VALUES (
'Linestring',
sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO BOUNDARIES VALUES (
'Polygon',
sde.st_polyfromtext ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO BOUNDARIES VALUES (
'Multipoint',
sde.st_mpointfromtext ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO BOUNDARIES VALUES (
'Multilinestring',
sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 0)
);
INSERT INTO BOUNDARIES VALUES (
'Multipolygon',
sde.st_mpolyfromtext ('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)))', 4326)
);
SELECT type, sde.st_astext (sde.st_boundary (geometry)) "The boundary"
FROM BOUNDARIES;
GEOTYPE The boundary
Point POINT EMPTY
Linestring MULTIPOINT(10.02000000 20.01000000, 11.92000000 25.64000000)
Polygon MULTILINESTRING ((10.02000000 20.01000000, 19.15000000 33.94000000,25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
Multipoint POINT EMPTY
Multilinestring MULTIPOINT (9.55000000 23.75000000, 10.02000000 20.01000000, 11.92000000 25.64000000, 15.36000000 30.11000000)
Multipolygon MULTILINESTRING((51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000, 51.71000000 21.73000000), (10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
PostgreSQL
CREATE TABLE boundaries (
type varchar(20),
geometry st_geometry
);
INSERT INTO boundaries VALUES (
'Point',
st_point ('point (10.02 20.01)', 4326)
);
INSERT INTO boundaries VALUES (
'Linestring',
st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO boundaries VALUES (
'Polygon',
st_polygon ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO boundaries VALUES (
'Multipoint',
st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0)
);
INSERT INTO boundaries VALUES (
'Multilinestring',
st_multilinestring ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);
INSERT INTO boundaries VALUES (
'Multipolygon',
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)))', 4326)
);
SELECT type, st_astext (st_boundary (geometry))
AS "The boundary"
FROM boundaries;
type The boundary
Point EMPTY
Linestring MULTIPOINT(10.02000000 20.01000000, 11.92000000 25.64000000)
Polygon LINESTRING ((10.02000000 20.01000000, 19.15000000 33.94000000,25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000
20.01000000))
Multipoint EMPTY
Multilinestring MULTIPOINT (9.55000000 23.75000000, 10.02000000 20.01000000, 11.92000000 25.64000000, 15.36000000 30.11000000)
Multipolygon MULTILINESTRING((51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000,
51.71000000 21.73000000), (10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000,
10.02000000 20.01000000))
SQLite
CREATE TABLE boundaries (
type varchar(20)
);
SELECT AddGeometryColumn (
NULL,
'boundaries',
'geometry',
4326,
'geometry',
'xy',
'null'
);
INSERT INTO boundaries VALUES (
'Point',
st_point ('point (10.02 20.01)', 4326)
);
INSERT INTO boundaries VALUES (
'Linestring',
st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO boundaries VALUES (
'Polygon',
st_polygon ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO boundaries VALUES (
'Multipoint',
st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO boundaries VALUES (
'Multilinestring',
st_multilinestring ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);
INSERT INTO boundaries VALUES (
'Multipolygon',
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)))', 4326)
);
SELECT type, st_astext (st_boundary (geometry))
FROM boundaries;
Point EMPTY
Linestring MULTIPOINT(10.02000000 20.01000000, 11.92000000 25.64000000)
Polygon LINESTRING ((10.02000000 20.01000000, 19.15000000 33.94000000,25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000
20.01000000))
Multipoint EMPTY
Multilinestring MULTIPOINT (9.55000000 23.75000000, 10.02000000 20.01000000, 11.92000000 25.64000000, 15.36000000 30.11000000)
Multipolygon MULTILINESTRING((51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000,
51.71000000 21.73000000), (10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000,
10.02000000 20.01000000))
Related Topics
6/19/2015