Name

ST_PointN — ST_LineString 또는 ST_CircularString 값에 있는 포인트의 개수를 반환합니다.

Synopsis

geometry ST_PointN(geometry a_linestring, integer n);

설명

도형 안에 있는 단일 라인스트링 또는 원형 라인스트링의 N번째 포인트를 반환합니다. 음수 값은 라인스트링의 종단점으로부터 반대로 집계되므로, -1이 마지막 포인트입니다. 도형 안에 라인스트링이 없는 경우 NULL을 반환합니다.

[Note]

0.8.0 버전부터 인덱스는 OGC 사양을 따라 1-기반입니다. OGC는 반대 방향 인덱스(음수 인덱스)를 지원하지 않습니다. 예전 버전은 대신 0-기반 인덱스를 도입했습니다.

[Note]

멀티라인스트링 안에 있는 각 라인스트링의 N번째 포인트를 얻고자 할 경우, 이 함수를 ST_Dump 함수와 연결해서 이용하십시오.

This method implements the OGC Simple Features Implementation Specification for SQL 1.1.

This method implements the SQL/MM specification.

SQL-MM 3: 7.2.5, 7.3.5

This function supports 3d and will not drop the z-index.

This method supports Circular Strings and Curves.

[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