ST_SetPoint
ST_SetPoint は、インデックスで指定された入力ライン文字列の位置に関して更新された座標を持つライン文字列を返します。新しい座標は、入力ポイントの座標です。
結果のジオメトリのディメンションは、geom1 値 のものと同じです。geom1 と geom2 でディメンションが異なる場合、geom2 が geom1 のディメンションに射影されます。
構文
ST_SetPoint(geom1, index, geom2)
引数
- geom1
-
データ型
GEOMETRY
の値またはGEOMETRY
型と評価される式の値。サブタイプはLINESTRING
である必要があります。 - index
-
インデックスの位置を表すデータ型
INTEGER
の値。0
はライン文字列の左からの最初のポイントを指し、1
は 2 番目のポイントを指します。インデックスには負の値を指定できます。-1
はライン文字列の右から最初のポイントを指し、-2
はライン文字列の右から 2 番目のポイントを指します。 - geom2
-
データ型
GEOMETRY
の値またはGEOMETRY
型と評価される式の値。サブタイプはPOINT
である必要があります。
戻り型
GEOMETRY
geom2 が空のポイントである場合、geom1 が返されます。
geom1、geom2、または index が null の場合、null が返されます。
geom1 が linestring でない場合、エラーが返されます。
インデックスが有効なインデックス範囲内にない場合、エラーが返されます。
geom2 が point でない場合、エラーが返されます。
geom1 および geom2 の空間リファレンスシステム識別子 (SRID) が同じ値でない場合、エラーが返されます。
例
次の SQL は、入力ライン文字列の 2 番目のポイントを指定されたポイントに設定する新しいライン文字列を返します。
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 例では、新しいライン文字列を返します。ここでは、指定したポイントを持つライン文字列の右から 3 番目のポイント (インデックスは負の値) を設定します。
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)