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