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() 函数的用法以及一些实例。通过这些实例,我们学习了如何从一个多边形中提取其外环,如何与其他空间函数结合使用,以及如何利用外环进行一些其他的空间计算。