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

MariaDB ST_PointFromText() 函数用来将一个 WKT(Well-Known Text) 表示形式的点字符串转换为一个 POINT 值。

发布于

MariaDB ST_PointFromText() 函数用来将一个 WKT(Well-Known Text) 表示形式的点字符串转换为一个 POINT 值。在处理空间数据时,这个函数能够提供很大的便利。

语法

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

ST_PointFromText(wkt[, srid])
  • wkt:一个表示点的 WKT 字符串。
  • srid:可选的空间参考系统编号。

如果转换成功,该函数返回一个 POINT 值;否则返回 NULL。

实例

将 WKT 字符串转换为点

本实例将展示如何将一个 WKT 字符串转换为一个点。

SELECT ST_AsText(ST_PointFromText('POINT(1 2)'));

以下是该语句的输出:

+-------------------------------------------+
| ST_AsText(ST_PointFromText('POINT(1 2)')) |
+-------------------------------------------+
| POINT(1 2)                                |
+-------------------------------------------+

函数成功地将 WKT 字符串转换为一个 POINT 值。

指定空间参考系统

本实例将展示如何在转换时指定空间参考系统。

SELECT ST_AsText(ST_PointFromText('POINT(1 2)', 4326));

以下是该语句的输出:

+-------------------------------------------------+
| ST_AsText(ST_PointFromText('POINT(1 2)', 4326)) |
+-------------------------------------------------+
| POINT(1 2)                                      |
+-------------------------------------------------+

转换结果相同,但是这个点使用的是 SRID 为 4326 的空间参考系统。

转换 WKB 字符串

本实例将展示如何转换 WKB 字符串。

SET @wkb = ST_AsWKB(ST_GeomFromText('POINT(1 2)'));
SELECT ST_AsText(ST_PointFromWKB(@wkb));

以下是该语句的输出:

+----------------------------------+
| ST_AsText(ST_PointFromWKB(@wkb)) |
+----------------------------------+
| POINT(1 2)                       |
+----------------------------------+

函数能够正确地将 WKB 字符串转换为一个 POINT 值。

插入转换后的点到表中

本实例将展示如何将转换后的点插入到表中。

DROP TABLE IF EXISTS point_table;
CREATE TABLE point_table (id INT PRIMARY KEY, pt POINT NOT NULL);
INSERT INTO point_table (id, pt) VALUES
    (1, ST_PointFromText('POINT(1 2)')),
    (2, ST_PointFromText('POINT(3 4)'));

SELECT id, ST_AsText(pt) FROM point_table;

以下是该语句的输出:

+----+---------------+
| id | ST_AsText(pt) |
+----+---------------+
|  1 | POINT(1 2)    |
|  2 | POINT(3 4)    |
+----+---------------+

转换后的点被成功地插入到了表中。

使用空间索引

本实例将展示在使用空间索引时的情况。

DROP TABLE IF EXISTS point_table;
CREATE TABLE point_table (id INT PRIMARY KEY, pt POINT NOT NULL, SPATIAL INDEX(pt));
INSERT INTO point_table (id, pt) VALUES
    (1, ST_PointFromText('POINT(1 2)')),
    (2, ST_PointFromText('POINT(4 4)'));

SELECT id, ST_AsText(pt) FROM point_table
WHERE ST_Distance(pt, ST_PointFromText('POINT(2 3)')) < 2;

以下是该语句的输出:

+----+---------------+
| id | ST_AsText(pt) |
+----+---------------+
|  1 | POINT(1 2)    |
+----+---------------+

通过在表上建立空间索引,可以加速空间操作的执行速度。

相关函数

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

  • MariaDB ST_GeomFromText() 函数用来将一个 WKT 字符串转换为任何类型的几何体值。
  • MariaDB ST_AsText() 函数用来将一个几何体值转换为 WKT 表示形式的字符串。
  • MariaDB ST_AsWKB() 函数用来将一个几何体值转换为 WKB 表示形式的字符串。

结论

ST_PointFromText() 是 MariaDB 中处理空间数据时一个非常有用的函数。通过本文的介绍和实例,相信您已经对它的用法有了较为全面的了解。在处理地理空间数据时,掌握这些空间函数将会给您带来很大的帮助。