名稱

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