ST_IsSimple

定义

如果按照开放地理空间联盟 (OGC) 的定义,几何对象是简单对象,则 ST_IsSimple 返回 1(Oracle 和 SQLite)或 t (PostgreSQL);否则返回 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;而第二条记录的线串是非简单线串,所以返回 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