ST_IsClosed

Definición

ST_IsClosed toma un ST_LineString o ST_MultiLineString y devuelve 1 (Oracle y SQLite) o t (PostgreSQL) si está cerrado; de lo contrario, devuelve 0 (Oracle y SQLite) o f (PostgreSQL).

Sintaxis

Oracle y PostgreSQL

sde.st_isclosed (line1 sde.st_geometry)
sde.st_isclosed (multiline1 sde.st_geometry)

SQLite

st_isclosed (geometry1 geometryblob)

Tipo de devolución

Booleano

Ejemplos

Pruebas de una cadena de texto de líneas

La tabla closed_linestring se crea con una columna de cadena de texto de línea única.

Las declaraciones INSERT insertan dos registros en la tabla closed_linestring. El primer registro no es una cadena de texto de líneas cerradas, mientras que la segunda lo es.

La consulta devuelve los resultados de la función ST_IsClosed. La primera fila devuelve 0 o f porque la cadena de líneas no está cerrada, mientras que la segunda fila devuelve 1 o t porque la cadena de líneas está cerrada.

Oracle

CREATE TABLE closed_linestring (ln1 sde.st_geometry);
INSERT INTO CLOSED_LINESTRING VALUES (
 sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);

INSERT INTO CLOSED_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)
);
SELECT sde.st_isclosed (ln1) Is_it_closed
 FROM CLOSED_LINESTRING;

Is_it_closed

0
1

PostgreSQL

CREATE TABLE closed_linestring (ln1 sde.st_geometry);
INSERT INTO closed_linestring VALUES (
 sde.st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);

INSERT INTO closed_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)
);
SELECT sde.st_isclosed (ln1) AS Is_it_closed
FROM closed_linestring;

is_it_closed

f
t

SQLite

CREATE TABLE closed_linestring (id integer);

SELECT AddGeometryColumn (
 NULL,
 'closed_linestring',
 'ln1',
 4326,
 'linestring',
 'xy',
 'null'
);
INSERT INTO closed_linestring VALUES (
 1,
 st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);

INSERT INTO closed_linestring VALUES (
 2,
 st_linefromtext ('linestring (10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)', 4326)
);
SELECT st_isclosed (ln1)
 AS "Is_it_closed"
 FROM closed_linestring;

Is_it_closed

0
1

Pruebas de una cadena de texto multilínea

La tabla closed_mlinestring se crea con una columna ST_MultiLineString única.

Las declaraciones INSERT insertan un registro ST_MultiLineString que no está cerrado y otro que si.

La consulta enumera los resultados de la función ST_IsClosed. La primera fila devuelve 0 o f porque la cadena de texto multilínea no está cerrada. La segunda fila devuelve 1 o t porque la cadena de texto multilínea almacenada en la columna ln1 está cerrada. Una cadena de texto multilínea está cerrada si todos sus elementos de cadena de texto de línea están cerrados.

Oracle

CREATE TABLE closed_mlinestring (mln1 sde.st_geometry);
INSERT INTO closed_mlinestring VALUES (
 sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);

INSERT INTO closed_mlinestring VALUES (
 sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 11.92 35.64, 25.02
34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73))', 4326)
);
SELECT sde.st_isclosed (mln1) Is_it_closed
 FROM CLOSED_MLINESTRING;

Is_it_closed

0
1

PostgreSQL

CREATE TABLE closed_mlinestring (mln1 sde.st_geometry);
INSERT INTO closed_mlinestring VALUES (
 sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);

INSERT INTO closed_mlinestring VALUES (
 sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 11.92 35.64, 25.02
34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73))', 4326)
);
SELECT st_isclosed (mln1)
 AS Is_it_closed
 FROM closed_mlinestring;

is_it_closed

f
t

SQLite

CREATE TABLE closed_mlinestring (mln1 geometryblob);

SELECT AddGeometryColumn (
 NULL,
 'closed_mlinestring',
 'mln1',
 4326,
 'multilinestring',
 'xy',
 'null'
);
INSERT INTO closed_mlinestring VALUES (
 st_mlinefromtext ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);

INSERT INTO closed_mlinestring VALUES (
 st_mlinefromtext ('multilinestring ((10.02 20.01, 11.92 35.64, 25.02
34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73))', 4326)
);
SELECT sde.st_isclosed (mln1)
 AS "Is_it_closed"
 FROM CLOSED_MLINESTRING;

Is_it_closed

0
1

Temas relacionados

5/10/2014