MariaDB ST_ExteriorRing() 函数的基础用法与实例
MariaDB ST_ExteriorRing()
函数用来从一个多边形中提取其外环,返回一个线性环。
发布于
MariaDB ST_ExteriorRing()
函数用来从一个多边形中提取其外环,返回一个线性环。它常用于处理空间数据和几何数据。
语法
MairaDB ST_ExteriorRing()
函数的语法如下:
ST_ExteriorRing(poly)
poly
:一个多边形的地理数据对象。
该函数返回一个表示该多边形外环的线性环。如果输入的不是一个多边形对象,则返回 NULL。
实例
从一个多边形中提取外环
本实例将展示如何从一个多边形中提取其外环。
DROP TABLE IF EXISTS polygons;
CREATE TABLE polygons (
gid INT AUTO_INCREMENT KEY,
poly POLYGON
);
INSERT INTO polygons (poly) VALUES
(ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))')),
(ST_PolygonFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
SELECT
ST_AsText(ST_ExteriorRing(poly)) AS exterior_ring
FROM polygons;
以下是该语句的输出:
+-------------------------------------+
| exterior_ring |
+-------------------------------------+
| LINESTRING(0 0,10 0,10 10,0 10,0 0) |
| LINESTRING(0 0,0 10,10 10,10 0,0 0) |
+-------------------------------------+
从输出可以看到,ST_ExteriorRing()
函数成功地从两个多边形中提取了其外环。
当输入不是多边形时
本实例将展示当输入的不是一个多边形时,ST_ExteriorRing()
函数的行为。
SELECT ST_AsText(ST_ExteriorRing(ST_GeomFromText('LINESTRING(0 0,1 1,2 2)')));
以下是该语句的输出:
NULL
由于输入的不是一个多边形,因此函数返回了 NULL。
嵌套使用 ST_ExteriorRing()
本实例将展示如何嵌套使用 ST_ExteriorRing()
函数。
DROP TABLE IF EXISTS polygons;
CREATE TABLE polygons (
gid INT AUTO_INCREMENT KEY,
poly POLYGON
);
INSERT INTO polygons (poly) VALUES
(ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))')),
(ST_PolygonFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
SELECT
ST_Length(ST_ExteriorRing(poly)) AS exterior_ring_length
FROM polygons;
以下是该语句的输出:
+----------------------+
| exterior_ring_length |
+----------------------+
| 40 |
| 40 |
+----------------------+
在这个示例中,我们首先从多边形中提取外环,然后使用 ST_LENGTH()
计算了该外环的长度。
与 ST_InteriorRingN() 函数结合使用
本实例将展示如何将 ST_ExteriorRing()
与 ST_InteriorRingN()
函数结合使用。
DROP TABLE IF EXISTS polygons;
CREATE TABLE polygons (
gid INT AUTO_INCREMENT KEY,
poly POLYGON
);
INSERT INTO polygons (poly) VALUES
(ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))')),
(ST_PolygonFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
SELECT
ST_AsText(ST_ExteriorRing(poly)) AS exterior_ring,
ST_AsText(ST_InteriorRingN(poly, 1)) AS interior_ring
FROM polygons;
以下是该语句的输出:
+-------------------------------------+---------------------------------+
| exterior_ring | interior_ring |
+-------------------------------------+---------------------------------+
| LINESTRING(0 0,10 0,10 10,0 10,0 0) | LINESTRING(5 5,7 5,7 7,5 7,5 5) |
| LINESTRING(0 0,0 10,10 10,10 0,0 0) | NULL |
+-------------------------------------+---------------------------------+
这个示例展示了如何同时提取一个多边形的外环和内环。
相关函数
以下是几个与 MairaDB ST_ExteriorRing()
相关的几个函数:
- MariaDB
ST_InteriorRingN()
函数用来从一个多边形中提取其内环。 - MariaDB
ST_NumInteriorRings()
函数用来计算一个多边形中内环的数量。 - MariaDB
ST_IsClosed()
函数用来检查一个线性环是否闭合。 - MariaDB
ST_IsRing()
函数用来检查一个线性环是否是一个有效的环。
结论
本文介绍了 MariaDB ST_ExteriorRing()
函数的用法以及一些实例。通过这些实例,我们学习了如何从一个多边形中提取其外环,如何与其他空间函数结合使用,以及如何利用外环进行一些其他的空间计算。