Définition
ST_NumInteriorRing accepte un objet ST_Polygon et retourne le nombre de ses boucles intérieures.
Syntaxe
Oracle et PostgreSQL
sde.st_numinteriorring (polygon1 sde.st_geometry)
SQLite
st_numinteriorring (polygon1 geometryblob)
Type de retour
Entier
Exemple
Une ornithologue souhaite étudier une population d'oiseaux sur plusieurs îles des mers du sud. Elle souhaite identifier les îles possédant un ou plusieurs lacs, car les espèces d'oiseaux auxquelles elle s'intéresse se nourrissent exclusivement dans les lacs d'eau douce.
Les colonnes ID et name de la table islands identifient chaque île, tandis que la colonne ST_Polygon land stocke la géométrie des îles.
Comme les boucles intérieures représentent les lacs, l'instruction SELECT qui comprend la fonction ST_NumInteriorRing répertorie uniquement les îles possédant au moins une boucle intérieure.
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