ST_NumInteriorRing

Definition

ST_NumInteriorRing wählt ein ST_Polygon aus und gibt die Anzahl der darin enthaltenen inneren Ringe zurück.

Syntax

Oracle und PostgreSQL

sde.st_numinteriorring (polygon1 sde.st_geometry)

SQLite

st_numinteriorring (polygon1 geometryblob)

Rückgabetyp

Ganzzahl

Beispiel

Eine Ornithologin möchte die Vogelpopulation auf mehreren Südseeinseln studieren. Sie möchte herausfinden, welche Inseln einen oder mehrere Binnenseen enthalten, weil die Vogelart, an der sie interessiert ist, nur an Süßwasserseen Nahrung sucht.

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

Weil die inneren Ringe die Seen darstellen, listet die SELECT-Anweisung, die die ST_NumInteriorRing-Funktion enthält, nur diejenigen Inseln auf, die über mindestens einen inneren Ring verfügen.

Oracle

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)
);
SELECT name
 FROM ISLANDS
 WHERE sde.st_numinteriorring (land)> 0;

NAME

Bear

PostgreSQL

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)
);
SELECT name
 FROM islands
 WHERE sde.st_numinteriorring (land)> 0;

name

Bear

SQLite

CREATE TABLE islands (
 id integer,
 name varchar(32)
);

SELECT AddGeometryColumn(
 NULL,
 'islands',
 'land',
 4326,
 'polygon',
 'xy',
 'null'
);

INSERT INTO islands VALUES (
 1,
 '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 VALUES (
 2,
 'Johnson',
 st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
SELECT name
 FROM islands
 WHERE st_numinteriorring (land)> 0;

name

Bear

Verwandte Themen

5/10/2014