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

MariaDB ST_PolygonFromText() 函数用来从一个 Well-Known Text (WKT) 表示法构造一个多边形 (POLYGON) 值。

发布于

MariaDB ST_PolygonFromText() 函数用来从一个 Well-Known Text (WKT) 表示法构造一个多边形 (POLYGON) 值。与 ST_PolyFromText() 函数不同,该函数在构造过程中会自动修复 WKT 中不合法的几何形状。它常用于需要从存储的 WKT 字符串创建有效多边形对象的场景。

语法

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

ST_PolygonFromText(wkt[, srid])
  • wkt:一个字符串值,表示用于生成 POLYGON 的 WKT 表示。
  • srid:(可选)一个整数值,表示空间参考系统标识符 (SRID)。如果未指定,则使用默认 SRID 0。

该函数返回一个 POLYGON 值。如果 WKT 无效且无法修复,则返回 NULL

实例

从 WKT 构造多边形

此实例将展示如何从一个 WKT 字符串构造一个多边形。

SET @p = ST_PolygonFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
SELECT ST_AsText(@p);

以下是该语句的输出:

+------------------------------------+
| ST_AsText(@p)                      |
+------------------------------------+
| POLYGON((0 0,10 0,10 10,0 10,0 0)) |
+------------------------------------+

从 WKT 构造多边形并指定 SRID

此实例将展示如何从一个 WKT 字符串构造一个多边形,并指定 SRID。

SET @p = ST_PolygonFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326);
SELECT ST_AsText(@p), ST_SRID(@p);

以下是该语句的输出:

+------------------------------------+-------------+
| ST_AsText(@p)                      | ST_SRID(@p) |
+------------------------------------+-------------+
| POLYGON((0 0,10 0,10 10,0 10,0 0)) |        4326 |
+------------------------------------+-------------+

修复不合法的 WKT

此实例将展示函数如何修复不合法的 WKT。

SELECT ST_AsText(ST_PolygonFromText('POLYGON((0 0, 10 0, 10 10, 0 0))'));

以下是该语句的输出:

+-------------------------------------------------------------------+
| ST_AsText(ST_PolygonFromText('POLYGON((0 0, 10 0, 10 10, 0 0))')) |
+-------------------------------------------------------------------+
| POLYGON((0 0,10 0,10 10,0 0))                                     |
+-------------------------------------------------------------------+

从表中构造多边形

此实例将展示如何从一个表中构造多边形。

DROP TABLE IF EXISTS polygons;
CREATE TABLE polygons (id INT PRIMARY KEY, wkt TEXT NOT NULL);
INSERT INTO polygons VALUES
  (1, 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'),
  (2, 'POLYGON((2 2, 4 2, 4 4, 2 2))');
SELECT id, ST_AsText(ST_PolygonFromText(wkt)) FROM polygons;

以下是该语句的输出:

+----+------------------------------------+
| id | ST_AsText(ST_PolygonFromText(wkt)) |
+----+------------------------------------+
|  1 | POLYGON((0 0,10 0,10 10,0 10,0 0)) |
|  2 | POLYGON((2 2,4 2,4 4,2 2))         |
+----+------------------------------------+

结合其他函数使用

此实例将展示如何将 ST_PolygonFromText() 与其他函数结合使用。

SET @p = ST_PolygonFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
SELECT ST_AsText(@p),
       ST_Area(@p),
       ST_AsText(ST_Centroid(@p));

以下是该语句的输出:

+------------------------------------+-------------+----------------------------+
| ST_AsText(@p)                      | ST_Area(@p) | ST_AsText(ST_Centroid(@p)) |
+------------------------------------+-------------+----------------------------+
| POLYGON((0 0,10 0,10 10,0 10,0 0)) |         100 | POINT(5 5)                 |
+------------------------------------+-------------+----------------------------+

相关函数

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

  • MariaDB ST_PolyFromText() 函数用来从一个 WKT 字符串构造一个多边形,但不会修复不合法的几何形状。
  • MariaDB ST_PolygonFromWKB() 函数用来从一个 Well-Known Binary (WKB) 值构造一个多边形,并自动修复不合法的几何形状。
  • MariaDB ST_AsText() 函数用来将一个几何值转换为 WKT 字符串。
  • MariaDB ST_Area() 函数用来计算一个多边形的面积。
  • MariaDB ST_Centroid() 函数用来返回一个几何对象的质心。

结论

MariaDB ST_PolygonFromText() 函数是一个非常实用的函数,可以从存储的 WKT 字符串中构造出有效的多边形几何对象。通过自动修复不合法的几何形状,它可以确保生成的多边形能够正确用于各种空间分析和处理操作。无论是在地理信息系统 (GIS) 应用中还是处理空间数据时,ST_PolygonFromText() 函数都可以发挥重要作用。