MariaDB ST_BOUNDARY() 函数的基础用法与实例

MariaDB ST_Boundary() 函数用来获取一个几何图形的边界。

发布于

MariaDB ST_Boundary() 函数用来获取一个几何图形的边界。对于点类型的几何图形,返回值为空,因为点没有边界。对于线状几何图形,返回值是其端点构成的多点。对于面状几何图形,返回值是其环的边界构成的线。

语法

MairaDB ST_Boundary() 函数的语法如下:

ST_Boundary(g)
  • g:要获取边界的几何图形。

该函数会返回一个表示输入几何图形边界的几何图形。

实例

获取一个点的边界

这个实例将展示获取一个点的边界会返回 GEOMETRYCOLLECTION EMPTY

DROP TABLE IF EXISTS point_table;
CREATE TABLE point_table (id INT PRIMARY KEY, pt POINT NOT NULL);
INSERT INTO point_table VALUES (1, POINT(1, 2));
SELECT ST_AsText(ST_Boundary(pt)) FROM point_table;

以下是该语句的输出:

+----------------------------+
| ST_AsText(ST_Boundary(pt)) |
+----------------------------+
| GEOMETRYCOLLECTION EMPTY   |
+----------------------------+

获取一条线的边界

这个实例将展示如何获取一条线的边界。

SELECT ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(0 0, 1 1, 2 2)')));

以下是该语句的输出:

+----------------------------------------------------------------------+
| ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(0 0, 1 1, 2 2)'))) |
+----------------------------------------------------------------------+
| MULTIPOINT(0 0,2 2)                                                  |
+----------------------------------------------------------------------+

线的边界是其端点构成的多点。

获取一个多边形的边界

这个实例将展示如何获取一个多边形的边界。

SET @p = ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');
SELECT ST_AsText(ST_Boundary(@p));

以下是该语句的输出:

+---------------------------------+
| ST_AsText(ST_Boundary(@p))      |
+---------------------------------+
| LINESTRING(0 0,1 0,1 1,0 1,0 0) |
+---------------------------------+

多边形的边界是其环的边界构成的线。

获取一个多线形的边界

这个实例将展示如何获取一个多线形的边界。

SET @ml = ST_GeomFromText('MULTILINESTRING((0 0, 1 1), (2 2, 3 3))');
SELECT ST_AsText(ST_Boundary(@ml));

以下是该语句的输出:

+-----------------------------+
| ST_AsText(ST_Boundary(@ml)) |
+-----------------------------+
| MULTIPOINT(0 0,1 1,2 2,3 3) |
+-----------------------------+

多线形的边界是其所有线段端点构成的多点。

获取一个几何集合的边界

这个实例将展示如何获取一个几何集合的边界。

SET @gc = ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(2 2, 3 3))');

DROP TABLE IF EXISTS gcoll_table;
CREATE TABLE gcoll_table (id INT PRIMARY KEY, gc GEOMETRYCOLLECTION NOT NULL);
INSERT INTO gcoll_table VALUES (1, @gc);
SELECT ST_AsText(ST_Boundary(gc)) FROM gcoll_table;

以下是该语句的输出:

+----------------------------+
| ST_AsText(ST_Boundary(gc)) |
+----------------------------+
| MULTIPOINT(2 2,3 3)        |
+----------------------------+

几何集合的边界是其中非点几何图形的边界组成的几何图形。

相关函数

以下是几个与 MairaDB ST_Boundary() 相关的几个函数:

  • MariaDB ST_Envelope() 函数用来获取一个几何图形的最小矩形边界。
  • MariaDB ST_IsClosed() 函数用来检测一个线型几何图形是否闭合。
  • MariaDB ST_StartPoint() 函数用来获取一条线的起点。
  • MariaDB ST_EndPoint() 函数用来获取一条线的终点。

结论

MariaDB ST_Boundary() 函数提供了一种方便获取几何图形边界的方法。通过本文介绍的各种示例,您可以更好地理解和使用这个功能强大的函数。无论是获取点、线、面还是集合类型几何的边界,都可以使用这个函数。