ST_NumInteriorRing

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

Thèmes connexes

5/10/2014