ST_ExteriorRing
Определение
ST_ExteriorRing возвращает внешнее кольцо полигона в виде строки linestring.
Синтаксис
sde.st_exteriorring (pl1 sde.st_geometry)
Тип возврата
ST_LineString
Пример
Орнитолог, которая хочет изучить популяцию птиц на нескольких островах, знает, что зона питания интересующего её вида птиц ограничена прибрежной полосой. При вычислении совокупной ёмкости популяции островов орнитолог должна знать периметр островов. Некоторые острова такие большие, что содержат несколько озер. Однако береговая линия озер населена только другим, более агрессивным видом птиц. Поэтому орнитолог должна знать периметр только внешнего кольца островов.
Столбцы ID и name таблицы islands определяют каждый остров, а в столбце land polygon хранится геометрия острова.
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))', 0)
);
INSERT INTO islands VALUES (
2,
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 0)
);
Функция ST_ExteriorRing извлекает внешнее кольцо из каждого полигона острова в виде строки linestring. Функция ST_Length вычисляет длину строки linestring. Длины строк linestring суммируются функцией SUM.
Oracle
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM ISLANDS;
SUM(ST_LENGTH(ST_EXTERIORRING(LAND)))
264.72136
PostgreSQL
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM islands;
sum
264.721359549996
Внешние кольца островов представляют экологическую зону каждого острова, общую с морем.