Definición
ST_IsRing toma un ST_LineString y devuelve 1 (Oracle y SQLite) o t (PostgreSQL) si es un anillo (por ejemplo, el tipo ST_LineString es cerrado y simple); de lo contrario, devuelve 0 (Oracle y SQLite) o f (PostgreSQL).
Sintaxis
Oracle y PostgreSQL
sde.st_isring (line1 sde.st_geometry)
SQLite
st_isring (line1 geometryblob)
Tipo de devolución
Booleano
Ejemplo
La tabla ring_linestring se crea con una columna única ST_LineString, ln1.
Las declaraciones INSERT insertan tres cadenas de texto de líneas en la columna ln1. La primera fila contiene una cadena de texto de líneas que no está cerrada y no es un anillo. La segunda fila contiene una cadena de texto de líneas simple y cerrada que es un anillo. La tercera fila contiene una cadena de texto de líneas que está cerrada, pero no es simple porque se interseca con su propio interior. Tampoco es un anillo.
La consulta SELECT devuelve los resultados de la función ST_IsRing. La primera fila devuelve 0 o f porque las cadenas de líneas no son anillos, mientras que la segunda y la tercera fila devuelven 1 o t porque son anillos.
Oracle
CREATE TABLE ring_linestring (ln1 sde.st_geometry);
INSERT INTO RING_LINESTRING VALUES (
sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO RING_LINESTRING VALUES (
sde.st_linefromtext ('linestring (10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)', 4326)
);
INSERT INTO ring_linestring (ln1) VALUES (
sde.st_linestring ('linestring (11 31, 11.25 31.12, 21.83 44.13, 16.45 44.24, 11 31)', 4326)
);
SELECT sde.st_isring (ln1) Is_it_a_ring
FROM RING_LINESTRING;
Is_it_a_ring
0
1
1
PostgreSQL
CREATE TABLE ring_linestring (ln1 sde.st_geometry);
INSERT INTO ring_linestring VALUES (
sde.st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO ring_linestring VALUES (
sde.st_linestring ('linestring (10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)', 4326)
);
INSERT INTO ring_linestring (ln1) VALUES (
sde.st_linestring ('linestring (11 31, 11.25 31.12, 21.83 44.13, 16.45 44.24, 11 31)', 4326)
);
SELECT sde.st_isring (ln1)
AS Is_it_a_ring
FROM ring_linestring;
Is_it_a_ring
f
t
t
SQLite
CREATE TABLE ring_linestring (id integer primary key autoincrement not null);
SELECT AddGeometryColumn (
NULL,
'ring_linestring',
'ln1',
4326,
'linestring',
'xy',
'null'
);
INSERT INTO ring_linestring (ln1) VALUES (
st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO ring_linestring (ln1) VALUES (
st_linestring ('linestring (10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)', 4326)
);
INSERT INTO ring_linestring (ln1) VALUES (
st_linestring ('linestring (11 31, 11.25 31.12, 21.83 44.13, 16.45 44.24, 11 31)', 4326)
);
SELECT st_isring (ln1)
AS "Is it a ring?"
FROM ring_linestring;
Is it a ring?
0
1
1