ST_PointN — 傳回幾何圖形中第一個 LineString 或圓形 LineString 的第 N 個點。
geometry ST_PointN(
geometry a_linestring, integer n)
;
傳回幾何圖形中單一 linestring 或圓形 linestring 的第 N 個點。負值會從 LineString 的末端向後計算,因此 -1 是最後一個點。如果幾何圖形中沒有 linestring,則傳回 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)