ST_SetPoint
ST_SetPoint 返回一个线串,该线串具有相对于索引指定的输入线串位置的更新坐标。新坐标是输入点的坐标。
返回的几何体的维度与 geom1 值的相同。如果 geom1 和 geom2 具有不同的维度,则 geom2 会投影到 geom1 的维度。
语法
ST_SetPoint(geom1, index, geom2)
参数
- geom1
-
一个
GEOMETRY
数据类型的值,或一个计算结果为GEOMETRY
类型的表达式。子类型必须是LINESTRING
。 - index
-
数据类型
INTEGER
的一个值,表示索引的位置。0
是指从左边开始的线串的第一个点,1
指的是第二点,依此类推。索引可以是负值。-1
是指从右边开始的线串的第一个点,-2
指的是从右边开始的线串的第二点,依此类推。 - geom2
-
一个
GEOMETRY
数据类型的值,或一个计算结果为GEOMETRY
类型的表达式。子类型必须是POINT
。
返回类型
GEOMETRY
如果 geom2 是空点,则会返回 geom1。
如果 geom1、geom2 或 index 为 null,则返回 null。
如果 geom1 不是线串,则返回一个错误。
如果 index 不在有效的索引范围内,则返回一个错误。
如果 geom2 不是点,则返回一个错误。
如果 geom1 和 geom2 不具有相同的空间参考系统标识符 (SRID) 值,则返回一个错误。
示例
以下 SQL 返回一个新的线串,其中我们用指定的点设置了输入线串的第二个点。
SELECT ST_AsText(ST_SetPoint(ST_GeomFromText('LINESTRING(1 2, 3 2, 5 2, 1 2)'), 2, ST_GeomFromText('POINT(7 9)')));
st_astext
-------------
LINESTRING(1 2,3 2,7 9,1 2)
以下 SQL 示例返回一个新的线串,其中我们用指定的点设置了线串右起第三个点(索引为负数)。
SELECT ST_AsText(ST_SetPoint(ST_GeomFromText('LINESTRING(1 2, 3 2, 5 2, 1 2)'), -3, ST_GeomFromText('POINT(7 9)')));
st_astext
-------------
LINESTRING(1 2,7 9,5 2,1 2)