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

MariaDB ST_AsBinary() 函数用来将一个地理空间数据对象转换为 WKB(Well-Known Binary)格式的二进制表示。

发布于

MariaDB ST_AsBinary() 函数用来将一个地理空间数据对象转换为 WKB(Well-Known Binary)格式的二进制表示。WKB 格式是一种用于存储和传输地理空间数据的二进制编码方式。

语法

MariaDB ST_AsBinary() 函数的语法如下:

ST_AsBinary(geom)
  • geom:一个地理空间数据对象,可以是 POINT、LINESTRING、POLYGON 等类型。

该函数返回一个二进制字符串,表示给定地理空间数据对象的 WKB 格式。如果输入的地理空间数据对象为空,则返回 NULL。

实例

将一个点对象转换为 WKB 格式

本实例展示如何将一个点对象转换为 WKB 格式。

SELECT HEX(ST_AsBinary(POINT(1, 1)));

以下是该语句的输出:

+--------------------------------------------+
| HEX(ST_AsBinary(POINT(1, 1)))              |
+--------------------------------------------+
| 0101000000000000000000F03F000000000000F03F |
+--------------------------------------------+

输出结果是一个二进制字符串,表示点 (1, 1) 的 WKB 格式。这里使用 HEX() 函数将二进制转为字符串。

将一个线对象转换为 WKB 格式

本实例展示如何将一个线对象转换为 WKB 格式。

SELECT HEX(ST_AsBinary(LINESTRING(POINT(1, 1), POINT(2, 2), POINT(3, 3))));

以下是该语句的输出:

+--------------------------------------------------------------------------------------------------------------------+
| HEX(ST_AsBinary(LINESTRING(POINT(1, 1), POINT(2, 2), POINT(3, 3))))                                                |
+--------------------------------------------------------------------------------------------------------------------+
| 010200000003000000000000000000F03F000000000000F03F0000000000000040000000000000004000000000000008400000000000000840 |
+--------------------------------------------------------------------------------------------------------------------+

输出结果是一个二进制字符串,表示线串 ((1, 1), (2, 2), (3, 3)) 的 WKB 格式。

将一个多边形对象转换为 WKB 格式

本实例展示如何将一个多边形对象转换为 WKB 格式。

SELECT HEX(ST_AsBinary(ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))')));

以下是该语句的输出:

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HEX(ST_AsBinary(ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))')))                                                                                                               |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

输出结果是一个二进制字符串,表示多边形 ((0 0, 10 0, 10 10, 0 10, 0 0)) 的 WKB 格式。

将一个空几何对象转换为 WKB 格式

本实例展示当输入的地理空间数据对象为空几何对象时,ST_AsBinary() 函数的返回值。

SELECT HEX(ST_AsBinary(ST_GeomFromText('MULTIPOLYGON()')));

以下是该语句的输出:

+-----------------------------------------------------+
| HEX(ST_AsBinary(ST_GeomFromText('MULTIPOLYGON()'))) |
+-----------------------------------------------------+
| NULL                                                |
+-----------------------------------------------------+

输出结果为 NULL,因为空几何对象没有 WKB 格式表示。

从一个地理空间数据表中获取一条记录的 WKB 格式

本实例展示如何从一个地理空间数据表中获取一条记录的 WKB 格式。

DROP TABLE IF EXISTS geo_table;
CREATE TABLE geo_table (id INT, geom GEOMETRY);
INSERT INTO geo_table VALUES (1, POINT(1, 1)), (2, LINESTRING(POINT(1, 1), POINT(2, 2)));

SELECT id, HEX(ST_AsBinary(geom)) FROM geo_table;

以下是该语句的输出:

+------+------------------------------------------------------------------------------------+
| id   | HEX(ST_AsBinary(geom))                                                             |
+------+------------------------------------------------------------------------------------+
|    1 | 0101000000000000000000F03F000000000000F03F                                         |
|    2 | 010200000002000000000000000000F03F000000000000F03F00000000000000400000000000000040 |
+------+------------------------------------------------------------------------------------+

输出结果显示了 geo_table 表中每条记录的 WKB 格式表示。

相关函数

以下是几个与 MariaDB ST_AsBinary() 相关的几个函数:

  • MariaDB ST_AsText() 函数用来将一个地理空间数据对象转换为 WKT(Well-Known Text)格式的文本表示。
  • MariaDB ST_GeomFromWKB() 函数用来将一个 WKB 格式的二进制字符串转换为地理空间数据对象。
  • MariaDB ST_AsWKB() 函数与 ST_AsBinary() 函数作用相同,也是将一个地理空间数据对象转换为 WKB 格式的二进制表示。

结论

MariaDB ST_AsBinary() 函数是处理地理空间数据时非常有用的一个函数。它可以帮助您将地理空间数据对象转换为 WKB 格式,以便存储或传输这些数据。