ST_ExteriorRing

Definition

ST_ExteriorRing gibt den äußeren Ring eines Polygons als Linestring zurück.

Syntax

sde.st_exteriorring (polygon1 sde.st_geometry)

Oracle und PostgreSQL

sde.st_exteriorring (polygon1 sde.st_geometry)

SQLite

st_exteriorring (polygon1 geometryblob)

Rückgabetyp

ST_LineString

Beispiel

Eine Ornithologin möchte die Vogelpopulation auf einigen Inseln studieren und weiß, dass die Vogelarten, an denen sie interessiert ist, nur am Strand nach Nahrung suchen. Zur Berechnung der Tragfähigkeit der Inseln benötigt die Ornithologin jeweils den Inselumfang. Einige Inseln sind so groß, dass es einige Binnenseen darauf gibt. Allerdings wird der Strand dieser Seen ausschließlich von einer anderen aggressiveren Vogelart bewohnt. Daher benötigt die Ornithologin nur den Umfang des äußeren Inselrings.

Durch die Spalten "ID" und "name" der Tabelle "islands" werden die einzelnen Inseln eindeutig gekennzeichnet, und die Spalte "land" enthält die Geometrie der einzelnen Inseln.

Die Funktion ST_ExteriorRing extrahiert den äußeren Ring aus jedem Inselpolygon und gibt ihn als Linestring zurück. Die Länge des Linestring wird mit der Funktion ST_Length berechnet. Die einzelnen Linestring-Längen werden mit der Funktion SUM zusammengezählt.

Der äußere Ring der Inseln stellt die ökologische Schnittstelle dar, die jede Insel mit dem Meer gemeinsam hat.

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

Verwandte Themen

5/10/2014