定义
ST_NumInteriorRing 以 ST_Polygon 作为输入参数,并返回其内部环数。
语法
Oracle 和 PostgreSQL
sde.st_numinteriorring (polygon1 sde.st_geometry)
SQLite
st_numinteriorring (polygon1 geometryblob)
返回类型
整型
示例
一个鸟类学家想研究几个南部海岛上的鸟群。她想标识哪些岛上有一个或多个湖,因为她感兴趣的鸟类仅在淡水湖中觅食。
岛屿表格的 ID 和名称列标识各岛屿,而陆地 ST_Polygon 列存储岛屿的几何。
因为内部环代表湖泊,所以包含 ST_NumInteriorRing 函数的 SELECT 语句仅列出那些至少有一个内部环的岛屿。
Oracle
CREATE TABLE islands (
id integer,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands VALUES (
1,
'Bear',
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands VALUES (
2,
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
SELECT name
FROM ISLANDS
WHERE sde.st_numinteriorring (land)> 0;
NAME
Bear
PostgreSQL
CREATE TABLE islands (
id integer,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands VALUES (
1,
'Bear',
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands VALUES (
2,
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
SELECT name
FROM islands
WHERE sde.st_numinteriorring (land)> 0;
name
Bear
SQLite
CREATE TABLE islands (
id integer,
name varchar(32)
);
SELECT AddGeometryColumn(
NULL,
'islands',
'land',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO islands VALUES (
1,
'Bear',
st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120),(50 130, 60 130, 60 140, 50 140, 50 130),(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
INSERT INTO islands VALUES (
2,
'Johnson',
st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
SELECT name
FROM islands
WHERE st_numinteriorring (land)> 0;
name
Bear