ST_IsRing

Définition

ST_IsRing accepte un objet ST_LineString et retourne 1 (Oracle et SQLite) ou t (PostgreSQL) si l'objet est un anneau (par exemple, l'objet ST_LineString est fermé et simple) ; dans le cas contraire, la fonction retourne 0 (Oracle et SQLite) ou f (PostgreSQL).

Syntaxe

Oracle et PostgreSQL

sde.st_isring (line1 sde.st_geometry)

SQLite

st_isring (line1 geometryblob)

Type de retour

Booléen

Exemple

La table ring_linestring est créée avec une seule colonne ST_LineString, ln1.

Les instructions INSERT suivantes insèrent trois objets linestring dans la colonne ln1. La première ligne contient une chaîne de lignes non fermée, qui n'est pas une boucle. La deuxième ligne contient une chaîne de lignes fermée et simple qui est une boucle. La troisième ligne contient une chaîne de lignes fermée mais non simple car elle intersecte son propre intérieur. Il ne s'agit pas non plus d'un anneau.

La requête SELECT renvoie les résultats de la fonction ST_IsRing. La première ligne renvoie la valeur 0 ou f puisque les objets linestring ne sont pas des boucles, alors que les deuxième et troisième lignes renvoient la valeur 1 ou t, car ce sont des boucles.

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

Thèmes connexes

5/10/2014