

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# ST\$1AddPoint
<a name="ST_AddPoint-function"></a>

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

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

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

## 语法
<a name="ST_AddPoint-function-syntax"></a>

```
ST_AddPoint(geom1, geom2)
```

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

## 参数
<a name="ST_AddPoint-function-arguments"></a>

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

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

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

## 返回类型
<a name="ST_AddPoint-function-return"></a>

`GEOMETRY` 

如果 *geom1*、*geom2* 或 *index* 为 null，则返回 null。

如果 *geom2* 是空点，则会返回 *geom1* 的副本。

如果 *geom1* 不是 `LINESTRING`，则返回一个错误。

如果 *geom2* 不是 `POINT`，则返回一个错误。

如果 *index* 超出范围，则返回一个错误。索引位置的有效值为 -1 或为一个介于 0 和 `ST_NumPoints(geom1)` 之间的值。

## 示例
<a name="ST_AddPoint-function-examples"></a>

以下 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)
```