Definición
ST_Boundary toma una geometría y devuelve su límite combinado como un objeto de geometría.
Sintaxis
Oracle y PostgreSQL
sde.st_boundary (geometry sde.st_geometry)
SQLite
st_boundary (geometry geometryblob)
Tipo de devolución
Oracle y PostgreSQL
ST_Geometry
SQLite
Geometryblob
Ejemplo
En este ejemplo, la tabla de límites se crea con dos columnas: tipo y geometría. Las declaraciones posteriores INSERT agregan un registro para cada una de las geometrías de subclase. La función ST_Boundary recupera el límite de cada subclase almacenada en la columna de geometría. Observe que la dimensión de la geometría resultante es siempre una menor que la geometría de entrada. Los puntos y los multipuntos siempre generan un límite que es una geometría vacía con dimensión –1. Las cadenas de texto de líneas y las multicadenas devuelven un límite de multipunto, dimensión 0. Un polígono o un multipolígono siempre devuelve un límite de multicadenas, dimensión 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 geotype, 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 (
geotype 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 geotype, st_astext (st_boundary (geometry))
AS "The boundary"
FROM boundaries;
geotype 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 (
geotype 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 geotype, 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))