名前

ST_SetPoint — ラインストリングのポイントを与えられたポイントに置き換えます。

概要

geometry ST_SetPoint(geometry linestring, integer zerobasedposition, geometry point);

説明

ラインストリングのN番目を与えられたポイントに置き換えます。インデックスは0はじまりです。負のインデックス値を与えると末尾から数えます。-1は末尾のポイントを指します。これは、頂点が一つ動いた時に接続のリレーションシップを維持しようとする場合のトリガに特に便利です。

Availability: 1.1.0

Updated 2.3.0 : 添え字の負数

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

始端点を (-1 3)から (-1 1)に変更します。

Code
SELECT ST_SetPoint('LINESTRING(-1 2,-1 3)', 0, 'POINT(-1 1)');
出力:
LINESTRING(-1 1,-1 3)
Figure
Geometry figure for visual-st-setpoint-01

終端点を変更します (今回は3次元ラインストリングでやってみます)

Code
SELECT ST_SetPoint(foo.geom, ST_NumPoints(foo.geom) - 1, 'POINT(-1 1 3)')
FROM (SELECT 'LINESTRING(-1 2 3,-1 3 4,5 6 7)'::geometry As geom) As foo;
出力:
LINESTRING(-1 2 3,-1 3 4,-1 1 3)
Figure
Geometry figure for visual-st-setpoint-02
Code
SELECT ST_SetPoint(g, -3, p)
FROM ST_GeomFromText('LINESTRING(0 0,1 1,2 2,3 3,4 4)') AS g
    CROSS JOIN ST_PointN(g, 1) as p;
出力:
LINESTRING(0 0,1 1,0 0,3 3,4 4)
Figure
Geometry figure for visual-st-setpoint-03