ST_SetPoint — 用给定点替换线串的点。
geometry ST_SetPoint(geometry linestring, integer zerobasedposition, geometry point);
将线串的 N 点替换为给定点。 索引从 0 开始。负索引向后计数,因此 -1 是最后一个点。当一个顶点移动时试图维持关节关系时,这在触发器中特别有用。
可用性:1.1.0
更新 2.3.0:负索引
该函数支持 3d 并且不会丢失 z-index。
Change first point in line string from -1 3 to -1 1.
SELECT ST_SetPoint('LINESTRING(-1 2,-1 3)', 0, 'POINT(-1 1)');
LINESTRING(-1 1,-1 3)
Change last point in a line string (let's play with 3D linestring this time)
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)
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)