名前

ST_PointN — ジオメトリーの最初のラインストリングまたは曲線ストリングの N 番目のポイントを返します。

概要

geometry ST_PointN(geometry a_linestring, integer n);

説明

ラインストリングまたは曲線ストリングの N 番目の点を返します。負数はラインストリングの終端から逆方向に遡って数えます。-1は終端を指します。ジオメトリーにラインストリングが無い場合には、NULL を返します。

[注記]

OGC 仕様では 0.8.0版から要素番号は 1始まりです。逆方向要素番号 (負の要素番号) はOGC 仕様にはありません。前の版では 0始まりで実装していました。

[注記]

マルチラインストリング内のラインストリングの N 番目のポイントを得るには、ST_Dump を併用します。

このメソッドはOGC Simple Features Implementation Specification for SQL 1.1の実装です。

このメソッドはSQL/MM仕様の実装です。 SQL-MM 3: 7.2.5, 7.3.5

この関数は3次元に対応し、Z値を削除しません。

このメソッドは曲線ストリングと曲線に対応しています。

Changed: 2.0.0 単一ジオメトリーの MULTILINESTRING で動作しなくなりました。単一のラインストリングからなる MULTILINESTRING については幸運にも動いていて、最初のポイントを返していました。2.0.0では他の MULTILINESTRING と同様に NULL を返すようになりました。

Changed: 2.3.0 : 負数インデックスが有効になりました (-1は終端を指します)

この例では一つの LINESTRING から全ての POINT ジオメトリーを抽出します。

コード
SELECT ST_PointN(
      column1,
      generate_series(1, ST_NPoints(column1))
   )
FROM ( VALUES ('LINESTRING(0 0,1 1,2 2)'::geometry) ) AS foo;
出力
POINT(0 0)
 POINT(1 1)
 POINT(2 2)
(3 rows)
Geometry figure for visual-st-pointn-01

この例では CIRBULARSTRING を使います。

コード
SELECT ST_PointN('CIRCULARSTRING(1 2,3 2,1 2)', 2);
出力
POINT(3 2)
Geometry figure for visual-st-pointn-02

インデックスは 1始まりです。負数インデックスは LINESTRING の最後から遡って数えます。

コード
SELECT f
FROM ST_GeomFromText('LINESTRING(0 0 0,1 1 1,2 2 2)') AS g
  CROSS JOIN ST_PointN(g, -2) AS f;
出力
POINT Z (1 1 1)
Geometry figure for visual-st-pointn-03

関連情報

ST_NPoints