ST_PointN — 返回几何体中第一个 LineString 或圆形 LineString 中的第 N 个点。
geometry ST_PointN(geometry a_linestring, integer n);
返回几何体中单个线串或圆形线串的第 N 个点。负值从 LineString 的末尾开始向后计数,因此 -1 是最后一个点。如果几何体中没有线串,则返回 NULL。
|
|
|
自 0.8.0 版本以来,索引从 1 开始,与 OGC 规范一致。向后索引(负索引)不是 OGC 规范的一部分。之前的版本将其实现为从 0 开始。 |
|
|
|
如果您想获取 MultiLineString 中每个 LineString 的第 N 个点,请与 ST_Dump 结合使用 |
此方法实现了OGC 简单要素 SQL 实现规范 1.1。
此方法实现了 SQL/MM 规范。SQL-MM 3: 7.2.5, 7.3.5
此函数支持 3d,并且不会删除 z 索引。
此方法支持圆形字符串和曲线。
|
|
|
更改:2.0.0 版本不再适用于单个几何多线串。在旧版本的 PostGIS 中,单个线多线串可以正常使用此函数并返回起始点。在 2.0.0 版本中,它像任何其他多线串一样返回 NULL。 更改:2.3.0 版本:可以使用负索引(-1 为最后一个点) |
-- Extract all POINTs from a LINESTRING
SELECT ST_AsText(
ST_PointN(
column1,
generate_series(1, ST_NPoints(column1))
))
FROM ( VALUES ('LINESTRING(0 0, 1 1, 2 2)'::geometry) ) AS foo;
st_astext
------------
POINT(0 0)
POINT(1 1)
POINT(2 2)
(3 rows)
--Example circular string
SELECT ST_AsText(ST_PointN(ST_GeomFromText('CIRCULARSTRING(1 2, 3 2, 1 2)'), 2));
st_astext
------------
POINT(3 2)
(1 row)
SELECT ST_AsText(f)
FROM ST_GeomFromText('LINESTRING(0 0 0, 1 1 1, 2 2 2)') AS g
,ST_PointN(g, -2) AS f; -- 1 based index
st_astext
-----------------
POINT Z (1 1 1)
(1 row)