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

Verwandte Themen

5/10/2014