ST_IsSimple

Определение

ST_IsSimple возвращает 1 (Oracle и SQLite) или t (PostgreSQL), если объект геометрии является простым и определяется Open Geospatial Consortium (OGC). В противном случае возвращается 0 (Oracle и SQLite) или f (PostgreSQL).

Синтаксис

Oracle и PostgreSQL

sde.st_issimple (geometry1 sde.st_geometry)

SQLite

st_issimple (geometry1 geometryblob)

Тип возврата

Логический

Пример:

Создается таблица issimple_test с двумя столбцами. Тип данных столбца pid – smallint, столбец содержит уникальный идентификатор для каждой строки. В столбце g1 хранятся простой и непростой образцы геометрии.

Инструкция INSERT вставляет две записи в таблицу issimple_test. Первая строка является простой, так как она не пересекается с собственными внутренними точками. Вторая строка является непростой по определению OGC, так как она пересекается с собственными внутренними точками.

Запрос возвращает результаты функции ST_IsSimple. Первая запись возвращает 1 или t, так как строка linestring является простой, а вторая запись возвращает 0 или f, поскольку строка не является простой.

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

Связанные темы

5/25/2014