名称

ST_PointN — 返回几何中的第一个 LineString 或圆形 LineString 中的第 N 个点。

语法

geometry ST_PointN(geometry a_linestring, integer n);

描述

返回几何中单个 LineString 或圆形 LineString 中的第 N 个点。从 LineString 的末尾开始倒数负值,因此 -1 是最后一个点。如果几何中没有 LineString,则返回 NULL。

[Note]

自 0.8.0 版起,索引基于 1,符合 OGC 规范。向后索引(负索引)不在 OGC 中。以前的版本以 0 为基础实现了此功能。

[Note]

如果要获取 MultiLineString 中每个 LineString 的第 N 个点,请结合 ST_Dump 使用

此方法实现了 OGC 简单要素 SQL 1.1 实施规范。

此方法实现了 SQL/MM 规范。

SQL-MM 3: 7.2.5、7.3.5

此函数支持 3d,不会删除 z 索引。

此方法支持圆形字符串和曲线。

[Note]

已更改: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)

另请参见

ST_NPoints