Definición
ST_NumInteriorRing toma un ST_Polygon y devuelve el número de sus anillos interiores.
Sintaxis
Oracle y PostgreSQL
sde.st_numinteriorring (polygon1 sde.st_geometry)
SQLite
st_numinteriorring (polygon1 geometryblob)
Tipo de devolución
Entero
Ejemplo
Un ornitólogo quiere estudiar una población de aves en varias islas del mar del sur. Quiere identificar qué islas contienen uno o más lagos, ya que las especies de aves en las que está interesada se alimentan solo en lagos de agua dulce.
Las columnas de Id. y nombre de la tabla de islas identifica cada isla, mientras que la columna ST_Polygon de tierras almacena la geometría de las islas.
Ya que los anillos interiores representan los lagos, la declaración SELECT que incluye la función ST_NumInteriorRing enumera solo aquellas islas que tienen al menos un anillo interior.
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