ST_SetPoint — Replaces the Nth Point of a Geometry for a new Point. N index starts at 0.
geometry ST_SetPoint(bytea
Geometry, integer N, bytea Point);
Replaces the Nth Point of a Geometry for a new Point. N index starts at 0.
If the N index is out of range, the incoming geometry is returned unchanged.
| 2D | 3D | M |
|---|---|---|
![]() | ![]() | ![]() |
| OGC SFS for SQL. 1.1 (1999) | OGC SFS for SQL. 1.1.0 (2005) | OGC SFS for SQL. 1.2.0 (2006) | SQL-MM Part 3 |
|---|---|---|---|
| - | - | - | - |
SELECT ST_AsEWKT(Line) as original,
ST_AsEWKT(ST_SetPoint(Line,0,Point)) as NewPoint0,
ST_AsEWKT(ST_SetPoint(Line,1,Point)) as NewPoint1
FROM (SELECT ST_GeomFromEWKT('LINESTRING (0 0, 10 10, 20 10)') as Line, ST_GeomFromEWKT('POINT (-5 5)') as Point) as foo;
original | newpoint0 | newpoint1
--------------------------------+---------------------------------+-------------------------------
LINESTRING (0 0, 10 10, 20 10) | LINESTRING (-5 5, 10 10, 20 10) | LINESTRING (0 0, -5 5, 20 10)
SELECT ST_AsEWKT(ST_SetPoint(ST_GeomFromEWKT('MULTILINESTRING ((0 0, 10 10, 20 10),(30 30, 40 40, 50 40))'),5,ST_GeomFromEWKT('POINT (-5 5)')));
--Result
MULTILINESTRING ((0 0, 10 10, 20 10), (30 30, 40 40, -5 5))
--Polygon
SELECT ST_AsEWKT(ST_SetPoint(ST_GeomFromEWKT('POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))'),2,ST_GeomFromEWKT('POINT (-5 5)')));
--Result
POLYGON ((0 0, 0 10, -5 5, 10 0, 0 0))
--MultiPoint
SELECT ST_AsEWKT(ST_SetPoint(ST_GeomFromEWKT('MULTIPOINT (0 0, 0 10, 10 10, 10 0, 0 0)'),0,ST_GeomFromEWKT('POINT (-5 5)')));
st_asewkt
-----------------------------------------------------
MULTIPOINT ((-5 5), (0 10), (10 10), (10 0), (0 0))
(1 row)
--N index out of range
SELECT ST_AsEWKT(ST_SetPoint(ST_GeomFromEWKT('LINESTRING (0 0, 10 10, 20 10)'),5,ST_GeomFromEWKT('POINT (-5 5)')));
--Result
LINESTRING (0 0, 10 10, 20 10)