ST_ExteriorRing

Définition

ST_ExteriorRing retourne la boucle extérieure d'un polygone sous la forme d'un objet linestring.

Syntaxe

sde.st_exteriorring (polygon1 sde.st_geometry)

Oracle et PostgreSQL

sde.st_exteriorring (polygon1 sde.st_geometry)

SQLite

st_exteriorring (polygon1 geometryblob)

Type de retour

ST_LineString

Exemple

Une ornithologue, souhaitant étudier la population d'oiseaux de plusieurs îlots, sait que la zone d'alimentation des espèces d'oiseaux qui l'intéressent est limitée au rivage. Dans le cadre du calcul de la capacité d'accueil de l'îlot, l'ornithologue doit connaître les périmètres des îlots. Certains îlots sont si grands qu'ils comportent plusieurs lacs. Toutefois, le rivage des lacs est habité exclusivement par une autre espèce d'oiseaux plus agressifs. Par conséquent, l'ornithologue n'a besoin que du périmètre de la boucle extérieure des îlots.

Les colonnes ID et name de la table islands identifient chaque île, tandis que la colonne de polygones land stocke la géométrie des îles.

La fonction ST_ExteriorRing extrait la boucle extérieure de chaque polygone d'îlot sous forme d'objet linestring. La longueur de l'objet linestring est calculée par la fonction ST_Length. Les longueurs des objets linestring sont totalisées par la fonction SUM.

Les boucles extérieures des îlots représentent l'interface écologique maritime de chaque îlot.

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

Thèmes connexes

5/10/2014