ST_IsRing

Definition

ST_IsRing akzeptiert ein ST_LineString-Objekt und gibt 1 (Oracle) bzw. t (PostgreSQL) zurück, wenn es ein Ring ist (beispielsweise wenn das ST_LineString-Objekt geschlossen oder einfach ist). Andernfalls wird 0 (Oracle) oder f (PostgreSQL) zurückgegeben.

Syntax

sde.st_isring (ln1 sde.st_geometry)

Rückgabetyp

Boolesch

Beispiel

Die Tabelle "ring_linestring" wird mit der Spalte "ln1" vom Typ ST_LineString erstellt.

CREATE TABLE ring_linestring (ln1 sde.st_geometry);

Mit der INSERT-Anweisung werden drei Linestrings in die Spalte "ln1" eingefügt. Die erste Zeile enthält einen Linestring, der nicht geschlossen und kein Ring ist. Die zweite Zeile enthält einen geschlossenen, einfachen Linestring, der ein Ring ist. Die dritte Zeile enthält einen Linestring, der geschlossen, aber nicht einfach ist, weil er seinen eigenen Innenbereich schneidet. Es ist also kein Ring.

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)
);

Die Abfrage gibt die Ergebnisse der Funktion zurück. In der ersten Zeile wird 0 zurückgegeben, weil die Linestrings keine Ringe sind. In der zweiten und dritten Zeile wird dagegen 1 zurückgegeben, weil es Ringe sind.

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