MariaDB ST_POINTN() 函数的基础用法与实例
MariaDB ST_PointN()
函数用来从一个线串中返回指定索引位置的点对象。
发布于
MariaDB ST_PointN()
函数用来从一个线串中返回指定索引位置的点对象。它常用于提取构成线串的单个点,以便进行进一步的空间分析和处理。
语法
MairaDB ST_PointN()
函数的语法如下:
ST_PointN(ln, index)
ln
:一个LINESTRING
的几何对象。index
:一个从 1 开始的正整数,表示要返回的点的索引位置。如果索引超出范围,则返回NULL
。
该函数返回一个 POINT
类型的几何对象,表示给定线串中指定索引位置的点。
实例
从线串中指定的点
此实例将展示如何从一个线串中获取指定的点。
SET @ls = ST_GeomFromText('LINESTRING(1 1, 2 2, 3 3)');
SELECT ST_AsText(ST_PointN(@ls, 1)) AS p1,
ST_AsText(ST_PointN(@ls, 2)) AS p2,
ST_AsText(ST_PointN(@ls, 3)) AS p3;
以下是该语句的输出:
+------------+------------+------------+
| p1 | p2 | p3 |
+------------+------------+------------+
| POINT(1 1) | POINT(2 2) | POINT(3 3) |
+------------+------------+------------+
获取不存在的点索引
此实例将展示当请求一个不存在的点索引时,函数的返回结果。
SET @ls = ST_GeomFromText('LINESTRING(1 1, 2 2, 3 3)');
SELECT ST_PointN(@ls, 0), ST_PointN(@ls, 4);
以下是该语句的输出:
+-------------------+-------------------+
| ST_PointN(@ls, 0) | ST_PointN(@ls, 4) |
+-------------------+-------------------+
| NULL | NULL |
+-------------------+-------------------+
从表中获取点
此实例将展示如何从一个表中获取线串的点。
DROP TABLE IF EXISTS geom_table;
CREATE TABLE geom_table (id INT PRIMARY KEY, geom GEOMETRY NOT NULL);
INSERT INTO geom_table VALUES
(1, ST_GeomFromText('LINESTRING(1 1, 2 2, 3 3)')),
(2, ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'));
SELECT id, ST_AsText(ST_PointN(geom, 1)), ST_AsText(ST_PointN(geom, ST_NumPoints(geom)))
FROM geom_table;
以下是该语句的输出:
+----+-------------------------------+------------------------------------------------+
| id | ST_AsText(ST_PointN(geom, 1)) | ST_AsText(ST_PointN(geom, ST_NumPoints(geom))) |
+----+-------------------------------+------------------------------------------------+
| 1 | POINT(1 1) | POINT(3 3) |
| 2 | NULL | NULL |
+----+-------------------------------+------------------------------------------------+
由于第二行的数据不是 LINESTRING
,因此此函数返回 NULL。
结合其他函数使用
此实例将展示如何将 ST_PointN()
与其他函数结合使用。
SET @ls = ST_GeomFromText('LINESTRING(1 1, 2 2, 3 3, 4 4)');
SELECT ST_AsText(@ls) ls,
ST_AsText(ST_PointN(@ls, 2)) point2,
ST_AsText(ST_StartPoint(@ls)) start_point,
ST_AsText(ST_EndPoint(@ls)) end_point;
以下是该语句的输出:
+-----------------------------+------------+-------------+------------+
| ls | point2 | start_point | end_point |
+-----------------------------+------------+-------------+------------+
| LINESTRING(1 1,2 2,3 3,4 4) | POINT(2 2) | POINT(1 1) | POINT(4 4) |
+-----------------------------+------------+-------------+------------+
相关函数
以下是几个与 MairaDB ST_PointN()
相关的几个函数:
- MariaDB
ST_NumPoints()
函数用来返回一个线串中点的个数。 - MariaDB
ST_StartPoint()
函数用来返回一个线串的起点。 - MariaDB
ST_EndPoint()
函数用来返回一个线串的终点。 - MariaDB
ST_PointFromWKB()
函数用来从 Well-Known Binary (WKB) 值构造一个点对象。 - MariaDB
ST_PointFromText()
函数用来从 Well-Known Text (WKT) 值构造一个点对象。
结论
MariaDB ST_PointN()
函数是一个非常实用的函数,可以从线串中提取出单个点。通过结合其他几何函数,您可以对点执行各种空间分析和处理操作。无论是在地理信息系统 (GIS) 应用中还是处理空间数据时,ST_PointN()
函数都可以发挥重要作用。