ST_IsSimple

Definition

ST_IsSimple gibt 1 (Oracle und SQLite) oder t (PostgreSQL) zurück, wenn das Geometrieobjekt nach der Definition des Open Geospatial Consortium (OGC) einfach ist. Andernfalls wird 0 (Oracle und SQLite) oder f (PostgreSQL) zurückgegeben.

Syntax

Oracle und PostgreSQL

sde.st_issimple (geometry1 sde.st_geometry)

SQLite

st_issimple (geometry1 geometryblob)

Rückgabetyp

Boolesch

Beispiel

Die Tabelle "issimple_test" wird mit zwei Spalten erstellt. Die Spalte "pid" ist vom Datentyp smallint und enthält die eindeutige Kennung der einzelnen Zeilen. In der Spalte "g1" werden die einfachen und nicht einfachen Geometriebeispiele gespeichert.

Mit der INSERT-Anweisung werden zwei Datensätze in die Tabelle "issimple_test" eingefügt. Der erste Datensatz enthält einen einfachen Linestring, weil er seinen Innenbereich nicht schneidet. Der zweite Datensatz ist nach der OGC-Definition nicht einfach, weil er seinen Innenbereich schneidet.

Die Abfrage gibt die Ergebnisse der Funktion ST_IsSimple zurück. Für den ersten Datensatz wird 1 oder t zurückgegeben, weil der Linestring einfach ist. Für den zweiten Datensatz wird dagegen 0 oder f zurückgegeben, weil der Linestring nicht einfach ist.

Oracle

CREATE TABLE issimple_test (
 pid smallint,
 g1 sde.st_geometry
);
INSERT INTO ISSIMPLE_TEST VALUES (
 1,
 sde.st_linefromtext ('linestring (10 10, 20 20, 30 30)', 4326)
);

INSERT INTO ISSIMPLE_TEST VALUES (
 2,
 sde.st_linefromtext ('linestring (10 10, 20 20, 20 30, 10 30, 10 20,
20 10)', 4326)
);
SELECT pid, sde.st_issimple (g1) Is_it_simple
 FROM ISSIMPLE_TEST;

PID 		Is_it_simple

1		    1
2		    0

PostgreSQL

CREATE TABLE issimple_test (
 pid smallint,
 g1 sde.st_geometry
);
INSERT INTO issimple_test VALUES (
 1,
 sde.st_linestring ('linestring (10 10, 20 20, 30 30)', 4326)
);

INSERT INTO issimple_test VALUES (
 2,
 sde.st_linestring  ('linestring (10 10, 20 20, 20 30, 10 30, 10 20, 20 10)', 4326)
);
SELECT pid, sde.st_issimple (g1)
 AS Is_it_simple
 FROM issimple_test;

pid		is_it_simple

1	    	t
2	    	f

SQLite

CREATE TABLE issimple_test (
 pid integer
);

SELECT AddGeometryColumn (
 NULL,
 'issimple_test',
 'g1',
 4326,
 'linestring',
 'xy',
 'null'
);
INSERT INTO issimple_test VALUES (
 1,
 st_linestring ('linestring (10 10, 20 20, 30 30)', 4326)
);

INSERT INTO issimple_test VALUES (
 2,
 st_linestring  ('linestring (10 10, 20 20, 20 30, 10 30, 10 20, 20 10)', 4326)
);
SELECT pid, st_issimple (g1)
 AS Is_it_simple
 FROM issimple_test;

PID 		Is_it_simple

1		    1
2		    0

Verwandte Themen

5/10/2014