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