MariaDB ST_GEOMETRYN() 函数的基础用法与实例
MariaDB ST_GeometryN()
函数用来从一个几何集合对象中提取指定序号的几何对象。
MariaDB ST_GeometryN()
函数用来从一个几何集合对象中提取指定序号的几何对象。它常用于处理复合几何数据。
语法
MairaDB ST_GeometryN()
函数的语法如下:
ST_GeometryN(geom, n)
geom
:一个几何集合对象。n
:一个从 1 开始的整数,表示要提取的几何对象的序号。
该函数返回指定序号的几何对象。如果输入的geom
不是一个几何集合对象,或者n
超出了几何对象的范围,则返回 NULL。
实例
从几何集合中提取指定序号的几何对象
本实例将展示如何从一个几何集合中提取指定序号的几何对象。
SET @g = ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))');
SELECT ST_AsText(ST_GeometryN(@g, 1)), ST_AsText(ST_GeometryN(@g, 2));
以下是该语句的输出:
+--------------------------------+--------------------------------+
| ST_AsText(ST_GeometryN(@g, 1)) | ST_AsText(ST_GeometryN(@g, 2)) |
+--------------------------------+--------------------------------+
| POINT(0 0) | LINESTRING(0 0,1 1,2 2) |
+--------------------------------+--------------------------------+
从输出可以看到,ST_GeometryN()
函数成功地从几何集合中提取了指定序号的几何对象。
当输入不是几何集合时
本实例将展示当输入的不是一个几何集合时,ST_GeometryN()
函数的行为。
SET @g = ST_GeomFromText('LINESTRING(0 0,1 1,2 2)');
SELECT ST_AsText(ST_GeometryN(@g, 1));
以下是该语句的输出:
+--------------------------------+
| ST_AsText(ST_GeometryN(@g, 1)) |
+--------------------------------+
| NULL |
+--------------------------------+
由于输入的不是一个几何集合,因此函数返回了 NULL。
从表中查询几何集合并提取指定序号的几何对象
本实例将展示如何从表中查询几何集合,并提取指定序号的几何对象。
DROP TABLE IF EXISTS geometries;
CREATE TABLE geometries (
gid INT AUTO_INCREMENT KEY,
geom GEOMETRYCOLLECTION
);
INSERT INTO geometries (geom) VALUES
(ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))')),
(ST_GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)), LINESTRING(5 5,7 7))'));
SELECT
ST_AsText(ST_GeometryN(geom, 1)) AS geom1,
ST_AsText(ST_GeometryN(geom, 2)) AS geom2
FROM geometries;
以下是该语句的输出:
+------------------------------------+-------------------------+
| geom1 | geom2 |
+------------------------------------+-------------------------+
| POINT(0 0) | LINESTRING(0 0,1 1,2 2) |
| 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_GeomFromText('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 |
+------------+--------------------+-------+
在这个示例中,我们首先从几何集合中提取每个几何对象,然后分别计算它们的长度或面积。
使用超出范围的序号
本实例将展示当使用超出范围的序号时,ST_GeometryN()
函数的行为。
SET @g = ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1,2 2))');
SELECT ST_AsText(ST_GeometryN(@g, 3));
以下是该语句的输出:
+--------------------------------+
| ST_AsText(ST_GeometryN(@g, 3)) |
+--------------------------------+
| NULL |
+--------------------------------+
由于提供的序号超出了几何集合中几何对象的范围,因此函数返回了 NULL。
相关函数
以下是几个与 MairaDB ST_GeometryN()
相关的几个函数:
- MariaDB
ST_NumGeometries()
函数用来计算一个几何集合中包含的几何对象数量。 - MariaDB
ST_GeometryType()
函数用来获取一个几何对象的类型。 - MariaDB
ST_Dimension()
函数用来获取一个几何对象的维度。 - MariaDB
ST_SRID()
函数用来获取一个几何对象的空间参考系统标识符(SRID)。
结论
本文介绍了 MariaDB ST_GeometryN()
函数的用法以及一些实例。通过这些实例,我们学习了如何从几何集合中提取指定序号的几何对象,如何处理输入不是几何集合的情况,如何从表中查询几何集合并提取指定序号的几何对象,如何计算几何集合中各个几何对象的长度或面积,以及当使用超出范围的序号时函数的行为。