ST_AddPoint
ST_AddPoint 返回一个线串几何体,它与添加了点的输入几何体相同。如果提供了索引,则在索引位置添加点。如果索引为 -1 或未提供,则在线串后面附加点。
索引是从零开始的。结果的空间参考系统标识符 (SRID) 与输入几何体的相同。
返回的几何体的维度与 geom1 值的相同。如果 geom1 和 geom2 具有不同的维度,则 geom2 会投影到 geom1 的维度。
语法
ST_AddPoint(geom1, geom2)
ST_AddPoint(geom1, geom2, index)
参数
- geom1
-
一个
GEOMETRY
数据类型的值,或一个计算结果为GEOMETRY
类型的表达式。子类型必须是LINESTRING
。 - geom2
-
一个
GEOMETRY
数据类型的值,或一个计算结果为GEOMETRY
类型的表达式。子类型必须是POINT
。该点可以是空点。 - index
-
一个
INTEGER
数据类型的值,表示从零开始的索引的位置。
返回类型
GEOMETRY
如果 geom1、geom2 或 index 为 null,则返回 null。
如果 geom2 是空点,则会返回 geom1 的副本。
如果 geom1 不是 LINESTRING
,则返回一个错误。
如果 geom2 不是 POINT
,则返回一个错误。
如果 index 超出范围,则返回一个错误。索引位置的有效值为 -1 或为一个介于 0 和 ST_NumPoints(geom1)
之间的值。
示例
以下 SQL 向线串添加点以使其成为闭合线串。
WITH tmp(g) AS (SELECT ST_GeomFromText('LINESTRING(0 0,10 0,10 10,5 5,0 5)',4326)) SELECT ST_AsEWKT(ST_AddPoint(g, ST_StartPoint(g))) FROM tmp;
st_asewkt
------------------------------------------------
SRID=4326;LINESTRING(0 0,10 0,10 10,5 5,0 5,0 0)
以下 SQL 将点添加到线串中的特定位置。
WITH tmp(g) AS (SELECT ST_GeomFromText('LINESTRING(0 0,10 0,10 10,5 5,0 5)',4326)) SELECT ST_AsEWKT(ST_AddPoint(g, ST_SetSRID(ST_Point(5, 10), 4326), 3)) FROM tmp;
st_asewkt
------------------------------------------------
SRID=4326;LINESTRING(0 0,10 0,10 10,5 10,5 5,0 5)