ST_IsRing
Définition
ST_IsRing accepte un objet ST_LineString et retourne 1 (Oracle) 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) ou f (PostgreSQL).
Syntaxe
sde.st_isring (ln1 sde.st_geometry)
Type de retour
Booléen
Exemple
La table ring_linestring est créée avec une seule colonne ST_LineString, ln1.
CREATE TABLE ring_linestring (ln1 sde.st_geometry);
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.
Oracle
INSERT INTO RING_LINESTRING VALUES (
sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0)
);
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)', 0)
);
INSERT INTO RING_LINESTRING VALUES (
sde.st_linefromtext ('linestring (15.47 30.12, 20.73 22.12, 10.83 14.13,
16.45 17.24, 21.56 13.37, 11.23 22.56, 19.11 26.78, 15.47 30.12)', 0)
);
PostgreSQL
INSERT INTO ring_linestring VALUES (
sde.st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0)
);
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)', 0)
);
INSERT INTO ring_linestring VALUES (
sde.st_linestring ('linestring (15.47 30.12, 20.73 22.12, 10.83 14.13,
16.45 17.24, 21.56 13.37, 11.23 22.56, 19.11 26.78, 15.47 30.12)', 0)
);
La requête suivante renvoie les résultats de la fonction. La première ligne renvoie la valeur 0 puisque les objets linestring ne sont pas des boucles, alors que les deuxième et troisième lignes renvoient la valeur 1, car ce sont des boucles.
Oracle
SELECT sde.st_isring (ln1) Is_it_a_ring
FROM RING_LINESTRING;
Is_it_a_ring
0
1
1
PostgreSQL
SELECT sde.st_isring (ln1)
AS Is_it_a_ring
FROM ring_linestring;
Is_it_a_ring
f
t
t