ST_AddPoint - Amazon Redshift

ST_AddPoint

ST_AddPoint 返回一个线串几何体,它与添加了点的输入几何体相同。如果提供了索引,则在索引位置添加点。如果索引为 -1 或未提供,则在线串后面附加点。

索引是从零开始的。结果的空间参考系统标识符 (SRID) 与输入几何体的相同。

返回的几何体的维度与 geom1 值的相同。如果 geom1geom2 具有不同的维度,则 geom2 会投影到 geom1 的维度。

语法

ST_AddPoint(geom1, geom2)
ST_AddPoint(geom1, geom2, index)

参数

geom1

一个 GEOMETRY 数据类型的值,或一个计算结果为 GEOMETRY 类型的表达式。子类型必须是 LINESTRING

geom2

一个 GEOMETRY 数据类型的值,或一个计算结果为 GEOMETRY 类型的表达式。子类型必须是 POINT。该点可以是空点。

index

一个 INTEGER 数据类型的值,表示从零开始的索引的位置。

返回类型

GEOMETRY

如果 geom1geom2index 为 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)