

 从补丁 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\$1SetPoint
<a name="ST_SetPoint-function"></a>

ST\$1SetPoint 返回一个线串，该线串具有相对于索引指定的输入线串位置的更新坐标。新坐标是输入点的坐标。

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

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

```
ST_SetPoint(geom1, index, geom2)
```

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

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

 *index*   
数据类型 `INTEGER` 的一个值，表示索引的位置。`0` 是指从左边开始的线串的第一个点，`1` 指的是第二点，依此类推。索引可以是负值。`-1` 是指从右边开始的线串的第一个点，`-2` 指的是从右边开始的线串的第二点，依此类推。

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

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

`GEOMETRY`

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

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

如果 *geom1* 不是线串，则返回一个错误。

如果 *index* 不在有效的索引范围内，则返回一个错误。

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

如果 *geom1* 和 *geom2* 不具有相同的空间参考系统标识符 (SRID) 值，则返回一个错误。

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

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