ST_IsRing

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

Temas relacionados

5/10/2014