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

MariaDB ST_InteriorRingN() 函数用来返回一个多边形内部的第 N 个环。

发布于

MariaDB ST_InteriorRingN() 函数用来返回一个多边形内部的第 N 个环。该函数常用于处理有内环的复杂多边形对象。

语法

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

ST_InteriorRingN(poly, n)
  • poly: 必选参数,是一个 POLYGON 类型的多边形对象。
  • n: 必选参数,是一个从 1 开始的整数,表示要返回的内环的序号。

如果 poly 为 NULL,或者 n 超出了内环的范围,则函数返回 NULL。如果 poly 没有内环,则对于任何 n 值,函数都返回 NULL。如果函数执行成功,它将返回一个 LINESTRING 类型的对象,代表第 n 个内环。

实例

获取多边形第一个内环

此实例演示如何获取一个多边形的第一个内环。

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (id INT PRIMARY KEY, poly POLYGON);
INSERT INTO test_table (id, poly) VALUES
  (1, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 3,3 3,3 1,1 1),(6 6,6 8,8 8,8 6,6 6))'));

SELECT id, ST_AsText(ST_InteriorRingN(poly, 1)) FROM test_table;

以下是该语句的输出:

+----+--------------------------------------+
| id | ST_AsText(ST_InteriorRingN(poly, 1)) |
+----+--------------------------------------+
|  1 | LINESTRING(1 1,1 3,3 3,3 1,1 1)      |
+----+--------------------------------------+

获取多边形第二个内环

此实例演示如何获取一个多边形的第二个内环。

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (id INT PRIMARY KEY, poly POLYGON);
INSERT INTO test_table (id, poly) VALUES
  (1, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 3,3 3,3 1,1 1),(6 6,6 8,8 8,8 6,6 6))'));

SELECT id, ST_AsText(ST_InteriorRingN(poly, 2)) FROM test_table;

以下是该语句的输出:

+----+--------------------------------------+
| id | ST_AsText(ST_InteriorRingN(poly, 2)) |
+----+--------------------------------------+
|  1 | LINESTRING(6 6,6 8,8 8,8 6,6 6)      |
+----+--------------------------------------+

获取没有内环的多边形内环

此实例演示当一个多边形没有内环时,ST_InteriorRingN() 函数的返回值。

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (id INT PRIMARY KEY, poly POLYGON);
INSERT INTO test_table (id, poly) VALUES
  (1, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0))'));

SELECT id, ST_AsText(ST_InteriorRingN(poly, 1)) FROM test_table;

以下是该语句的输出:

+----+--------------------------------------+
| id | ST_AsText(ST_InteriorRingN(poly, 1)) |
+----+--------------------------------------+
|  1 | NULL                                 |
+----+--------------------------------------+

获取一个无效多边形的内环

此实例演示当输入一个无效的多边形时,ST_InteriorRingN() 函数的返回值。

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (id INT PRIMARY KEY, poly POLYGON);
INSERT INTO test_table (id, poly) VALUES
  (1, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 3,3 3,3 1),(6 6,6 8,8 8,8 6,6 6))'));

SELECT id, ST_AsText(ST_InteriorRingN(poly, 2)) FROM test_table;

以下是该语句的输出:

+----+--------------------------------------+
| id | ST_AsText(ST_InteriorRingN(poly, 2)) |
+----+--------------------------------------+
|  1 | NULL                                 |
+----+--------------------------------------+

获取一个几何集合对象的内环

此实例演示当输入一个非多边形对象时,ST_InteriorRingN() 函数的返回值。

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (id INT PRIMARY KEY, gc GEOMETRYCOLLECTION);
INSERT INTO test_table (id, gc) VALUES
  (1, ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,2 2))'));

SELECT id, ST_AsText(ST_InteriorRingN(gc, 1)) FROM test_table;

以下是该语句的输出:

+----+------------------------------------+
| id | ST_AsText(ST_InteriorRingN(gc, 1)) |
+----+------------------------------------+
|  1 | NULL                               |
+----+------------------------------------+

相关函数

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

结论

MariaDB ST_InteriorRingN() 函数是一个非常有用的函数,它允许我们从一个复杂的多边形对象中提取出指定序号的内环。通过本文的实例,我们更好地理解了如何使用这个函数,以及它的作用和用法。需要注意的是,在使用该函数时,需要确保输入的是一个有效的多边形对象,否则可能会导致函数返回 NULL 或者出现错误。