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

3/6/2012