MariaDB ST_NumInteriorRings() 函数的基础用法与实例
MariaDB ST_NumInteriorRings()
函数用来获取一个多边形内环的个数。
发布于
MariaDB ST_NumInteriorRings()
函数用来获取一个多边形内环的个数。在处理复杂的地理空间数据时,这个函数能够提供很有帮助的信息。
语法
MairaDB ST_NumInteriorRings()
函数的语法如下:
ST_NumInteriorRings(poly)
poly
:一个 POLYGON 值。
该函数返回一个整数,表示给定多边形内环的个数。如果输入的不是多边形,则返回 NULL。
实例
获取简单多边形的内环个数
本实例将展示如何获取一个简单多边形的内环个数。
SET @g1 = ST_GeomFromText('POLYGON((0 0,1 1,1 0,0 0))');
SET @g2 = ST_GeomFromText('POLYGON((0 0,3 0,3 3,0 3,0 0),(1 1,2 1,2 2,1 2,1 1))');
SELECT ST_NumInteriorRings(@g1), ST_NumInteriorRings(@g2);
以下是该语句的输出:
+--------------------------+--------------------------+
| ST_NumInteriorRings(@g1) | ST_NumInteriorRings(@g2) |
+--------------------------+--------------------------+
| 0 | 1 |
+--------------------------+--------------------------+
第一个多边形没有内环,因此返回 0;第二个多边形有一个内环,因此返回 1。
获取多环多边形的内环个数
本实例将展示获取多环多边形内环个数的情况。
SET @poly = ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 8,8 8,8 4,4 4),(6 6,6 7,7 7,7 6,6 6))');
SELECT ST_NumInteriorRings(@poly);
以下是该语句的输出:
+----------------------------+
| ST_NumInteriorRings(@poly) |
+----------------------------+
| 2 |
+----------------------------+
对于有多个内环的多边形,函数返回内环的总数。
输入非多边形的情况
本实例将展示输入非多边形时的情况。
SELECT ST_NumInteriorRings(ST_GeomFromText('POINT(0 0)'));
以下是该语句的输出:
+----------------------------------------------------+
| ST_NumInteriorRings(ST_GeomFromText('POINT(0 0)')) |
+----------------------------------------------------+
| NULL |
+----------------------------------------------------+
当输入的不是多边形时,函数返回 NULL。
结合其他函数使用
本实例将展示如何结合其他函数使用 ST_NumInteriorRings()
。
SELECT ST_NumInteriorRings(ST_ExteriorRing(ST_GeomFromText('POLYGON((0 0,3 0,3 3,0 3,0 0),(1 1,2 1,2 2,1 2,1 1))'))) result;
以下是该语句的输出:
+--------+
| result |
+--------+
| NULL |
+--------+
通过结合 ST_ExteriorRing()
,可以获取多边形的外环,外环本身没有内环,因此结果为 NULL。
使用空间索引
本实例将展示在使用空间索引时的情况。
DROP TABLE IF EXISTS poly_table;
CREATE TABLE poly_table (id INT PRIMARY KEY, p POLYGON NOT NULL, SPATIAL INDEX(p));
INSERT INTO poly_table (id, p) VALUES
(1, ST_GeomFromText('POLYGON((0 0,1 1,1 0,0 0))')),
(2, ST_GeomFromText('POLYGON((0 0,3 0,3 3,0 3,0 0),(1 1,2 1,2 2,1 2,1 1))')),
(3, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 8,8 8,8 4,4 4),(6 6,6 7,7 7,7 6,6 6))'));
SELECT id, ST_NumInteriorRings(p) FROM poly_table;
以下是该语句的输出:
+----+------------------------+
| id | ST_NumInteriorRings(p) |
+----+------------------------+
| 1 | 0 |
| 2 | 1 |
| 3 | 2 |
+----+------------------------+
通过在表上建立空间索引,可以加速空间操作的执行速度。
相关函数
以下是几个与 MairaDB ST_NumInteriorRings()
相关的几个函数:
- MariaDB
ST_NumGeometries()
函数用来获取一个几何体集合中包含的几何体个数。 - MariaDB
ST_NumPoints()
函数用来获取一个线串或多边形中的点的个数。 - MariaDB
ST_InteriorRingN()
函数用来获取一个多边形的指定索引的内环。
结论
ST_NumInteriorRings()
是 MariaDB 中处理多边形时一个非常有用的函数。通过本文的介绍和实例,相信您已经对它的用法有了较为全面的了解。在处理复杂的空间数据时,掌握这些空间函数将会给您带来很大的帮助。