Definición
ST_ExteriorRing devuelve el anillo exterior de un polígono como una cadena de texto de líneas.
Sintaxis
sde.st_exteriorring (polygon1 sde.st_geometry)
Oracle y PostgreSQL
sde.st_exteriorring (polygon1 sde.st_geometry)
SQLite
st_exteriorring (polygon1 geometryblob)
Tipo de devolución
ST_LineString
Ejemplo
Un ornitólogo, desea estudiar la población de aves en varias islas, sabe que la zona de alimentación de las especies de aves en la que está interesado está restringida a la línea costera. Como parte de su cálculo de la capacidad de carga de las islas, el ornitólogo requiere los perímetros de las islas. Algunas de las islas son tan grandes que tienen varios lagos en ellas. Sin embargo, la costa de los lagos está habitado únicamente por otras especies de aves más agresivas. Por lo tanto, la ornitólogo requiere el perímetro de solo el anillo exterior de las islas.
Las columnas de Id. y de nombre de la tabla de islas identifica de cada isla, mientras que la columna del polígono de tierra almacena la geometría de la isla.
La función ST_ExteriorRing extrae el anillo exterior de cada polígono de isla como una cadena de texto de líneas. La longitud de la cadena de texto de líneas se calcula según la función ST_Length. Las longitudes de la cadena de texto de líneas se resume según la función SUM.
Los anillos exteriores de las islas representan la interfaz ecológica que cada isla comparte con el mar.
Oracle
--Create the table and insert two polygons.
CREATE TABLE islands (
id integer,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands VALUES (
1,
'Bear',
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands VALUES (
2,
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM ISLANDS;
SUM(ST_LENGTH(ST_EXTERIORRING(LAND)))
264.72136
PostgreSQL
--Create the table and insert two polygons.
CREATE TABLE islands (
id serial,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands (name, land) VALUES (
'Bear',
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands (name, land) VALUES (
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM islands;
sum
264.721359549996
SQLite
--Create the table and insert two polygons.
CREATE TABLE islands (
id integer primary key autoincrement not null,
name varchar(32)
);
SELECT AddGeometryColumn (
NULL,
'islands',
'land',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO islands (name, land) VALUES (
'Bear',
st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands (name, land) VALUES (
'Johnson',
st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (st_length (st_exteriorring (land)))
FROM islands;
sum
264.721359549996