ST_NumInteriorRing

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

Temas relacionados

5/10/2014