

 Amazon Redshift は、パッチ 198 以降、新しい 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 または指定されていない場合、ポイントはラインストリングに付加されます。

このインデックスは 0 から始まります。結果の空間参照系識別子 (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*   
0 から始まるインデックスの位置を表すデータ型 `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)
```