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

MariaDB ST_GeomCollFromText() 函数用来将一个 Well-Known Text (WKT)表示的几何集合转换为相应的几何集合对象。

发布于

MariaDB ST_GeomCollFromText() 函数用来将一个 Well-Known Text (WKT)表示的几何集合转换为相应的几何集合对象。它常用于从文本形式创建几何数据。

语法

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

ST_GeomCollFromText(wkt[, srid])
  • wkt:一个 Well-Known Text 字符串,表示一个几何集合。
  • srid:可选。一个整数值,表示空间参考系统标识符(SRID)。

该函数返回一个几何集合对象。如果输入的 WKT 无效,则返回 NULL。

实例

从 WKT 创建一个几何集合

本实例将展示如何从 WKT 创建一个几何集合。

SELECT ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))'));

以下是该语句的输出:

+-------------------------------------------------------------------------------------------+
| ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))')) |
+-------------------------------------------------------------------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,1 1,2 2))                                    |
+-------------------------------------------------------------------------------------------+

从输出可以看到,ST_GeomCollFromText()函数成功地从 WKT 创建了一个几何集合。

指定 SRID

本实例将展示如何在创建几何集合时指定 SRID。

SELECT ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))', 4326));

以下是该语句的输出:

+-------------------------------------------------------------------------------------------------+
| ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))', 4326)) |
+-------------------------------------------------------------------------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,1 1,2 2))                                          |
+-------------------------------------------------------------------------------------------------+

在这个示例中,我们将 SRID 设置为 4326,代表 WGS 84 坐标系统。

从表中查询几何集合

本实例将展示如何从一个表中查询几何集合。

DROP TABLE IF EXISTS geometries;
CREATE TABLE geometries (
  gid INT AUTO_INCREMENT KEY,
  geom GEOMETRYCOLLECTION
);

INSERT INTO geometries (geom) VALUES
  (ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))')),
  (ST_GeomCollFromText('GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)), LINESTRING(5 5,7 7))'));

SELECT ST_AsText(geom)
FROM geometries;

以下是该语句的输出:

+----------------------------------------------------------------------------+
| ST_AsText(geom)                                                            |
+----------------------------------------------------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,1 1,2 2))                     |
| GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),LINESTRING(5 5,7 7)) |
+----------------------------------------------------------------------------+

在这个示例中,我们首先创建了一个表来存储几何集合数据,然后从表中查询出这些数据。

计算几何集合中各个几何对象的长度或面积

本实例将展示如何计算一个几何集合中各个几何对象的长度或面积。

DROP TABLE IF EXISTS geometries;
CREATE TABLE geometries (
  gid INT AUTO_INCREMENT KEY,
  geom GEOMETRYCOLLECTION
);

INSERT INTO geometries (geom) VALUES
  (ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2), POLYGON((0 0,10 0,10 10,0 10,0 0)))'));

SELECT
  ST_AsText(ST_GeometryN(geom, 1)) AS geom1,
  ST_Length(ST_GeometryN(geom, 2)) AS length2,
  ST_Area(ST_GeometryN(geom, 3)) AS area3
FROM geometries;

以下是该语句的输出:

+------------+--------------------+-------+
| geom1      | length2            | area3 |
+------------+--------------------+-------+
| POINT(0 0) | 2.8284271247461903 |   100 |
+------------+--------------------+-------+

在这个示例中,我们首先从几何集合中提取每个几何对象,然后分别计算它们的长度或面积。

使用无效的 WKT

本实例将展示当输入的 WKT 无效时,ST_GeomCollFromText()函数的行为。

SELECT ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0),LINESTRING(0 0,1 1,2 2))'));

以下是该语句的输出:

NULL

由于输入的 WKT 无效(第一个 POINT 缺少第二个坐标值),因此函数返回了 NULL。

相关函数

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

  • MariaDB ST_GeomFromText() 函数用来将一个 Well-Known Text 表示的几何对象转换为相应的几何对象。
  • MariaDB ST_GeometryN() 函数用来从一个几何集合中提取某个几何对象。
  • MariaDB ST_NumGeometries() 函数用来计算一个几何集合中包含的几何对象数量。
  • MariaDB ST_AsText() 函数用来将一个几何对象转换为 Well-Known Text 表示。

结论

本文介绍了 MariaDB ST_GeomCollFromText() 函数的用法以及一些实例。通过这些实例,我们学习了如何从 WKT 创建几何集合,如何指定 SRID,如何从表中查询几何集合,如何计算几何集合中各个几何对象的长度或面积,以及当输入无效时函数的行为。