Namn

ST_SetPoint — Ersätt punkten i en linestrings med en given punkt.

Synopsis

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

Beskrivning

Ersätter punkt N i linestrings med given punkt. Index är 0-baserat. Negativa index räknas baklänges, så att -1 är sista punkten. Detta är särskilt användbart i triggers när man försöker bibehålla relationen mellan lederna när en vertex flyttas.

Tillgänglighet: 1.1.0

Uppdaterad 2.3.0: negativ indexering

Denna funktion stöder 3d och kommer inte att tappa z-index.

Exempel

Ändra den första punkten i linestring från -1 3 till -1 1.

Kod
SELECT ST_SetPoint('LINESTRING(-1 2,-1 3)', 0, 'POINT(-1 1)');
Utdata
LINESTRING(-1 1,-1 3)
Figur
Geometry figure for visual-st-setpoint-01

Ändra sista punkten i en linjesträng (den här gången använder vi en 3D-linjesträng)

Kod
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;
Utdata
LINESTRING(-1 2 3,-1 3 4,-1 1 3)
Figur
Geometry figure for visual-st-setpoint-02
Kod
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;
Utdata
LINESTRING(0 0,1 1,0 0,3 3,4 4)
Figur
Geometry figure for visual-st-setpoint-03