ST_AddPoint
ST_AddPoint は、入力ジオメトリと同じラインストリングジオメトリにポイントを追加して返します。インデックスが指定されている場合、ポイントはインデックスの位置に追加されます。インデックスが -1 または指定されていない場合、ポイントはラインストリングに付加されます。
このインデックスは 0 から始まります。結果の空間参照系識別子 (SRID) は、入力ジオメトリのものと同じです。
結果のジオメトリのディメンションは、geom1 値 のものと同じです。geom1 と geom2 でディメンションが異なる場合、geom2 が geom1 のディメンションに射影されます。
構文
ST_AddPoint(geom1, geom2)
ST_AddPoint(geom1, geom2, index)
引数
- geom1
-
データ型
GEOMETRY
の値またはGEOMETRY
型と評価される式の値。サブタイプはLINESTRING
である必要があります。 - geom2
-
データ型
GEOMETRY
の値またはGEOMETRY
型と評価される式の値。サブタイプはPOINT
である必要があります。ポイントは空のポイントにすることができます。 - index
-
0 から始まるインデックスの位置を表すデータ型
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)