ST_IsRing
Definition
ST_IsRing wählt ein ST_LineString-Objekt aus und gibt 1 (Oracle und SQLite) bzw. t (PostgreSQL) zurück, wenn es ein Ring ist (beispielsweise wenn das ST_LineString-Objekt geschlossen oder einfach ist). Andernfalls wird 0 (Oracle und SQLite) oder f (PostgreSQL) zurückgegeben.
Syntax
Oracle und PostgreSQL
sde.st_isring (line1 sde.st_geometry)
SQLite
st_isring (line1 geometryblob)
Rückgabetyp
Boolesch
Beispiel
Die Tabelle "ring_linestring" wird mit der Spalte "ln1" vom Typ ST_LineString erstellt.
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.
Die SELECT-Abfrage gibt die Ergebnisse der Funktion "ST_IsRing" zurück. In der ersten Zeile wird 0 oder f zurückgegeben, weil die Linestrings keine Ringe sind. In der zweiten und dritten Zeile wird dagegen 1 oder t zurückgegeben, weil es Ringe sind.
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