Name

ST_LineInterpolatePoint — ラインに沿って、割合で示された位置の補間ポイントを返します。

Synopsis

geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);

geography ST_LineInterpolatePoint(geography a_linestring, float8 a_fraction, boolean use_spheroid = true);

説明

ラインに沿って、割合で示された位置の補間ポイントを返します。一つ目の引数はLINESTRINGです。二つ目の引数は0から1の間の浮動小数点数で、ライン長に対するポイントの位置の割合を表現します。Z値とM値が存在する場合には補間計算を行います。

ポイントに最も近いライン位置の計算についてはST_LineLocatePointを参照して下さい。

[Note]

この関数は2次元のポイントとして計算して、Z値とM値は補間値を計算します。ST_3DLineInterpolatePointは3次元のポイントとして計算して、M値のみ補間値を計算します。

[Note]

1.1.1から、この関数はM軸やZ軸の内挿点も (存在するなら)計算するようになりました。それより前の版では0.0となります。

Availability: 0.8.2 Z軸とM軸のサポートが1.1.1で追加されました。

Changed: 2.1.0 2.0.xまでではST_Line_Interpolate_Pointと呼んでいました。

この関数は3次元に対応し、Z値を削除しません。

ラインストリングの20% (0.20)位置の補完ポイント

-- The point 20% along a line

SELECT ST_AsEWKT(  ST_LineInterpolatePoint(
        'LINESTRING(25 50, 100 125, 150 190)',
        0.2 ));
----------------
 POINT(51.5974135047432 76.5974135047432)

3次元ラインの中間点

SELECT ST_AsEWKT(  ST_LineInterpolatePoint('
        LINESTRING(1 2 3, 4 5 6, 6 7 8)',
        0.5 ));
--------------------
 POINT(3.5 4.5 5.5)

ライン上のポイントに最も近いポイント

SELECT ST_AsText( ST_LineInterpolatePoint( line.geom,
                      ST_LineLocatePoint( line.geom, 'POINT(4 3)')))
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As geom) AS line;
------------
 POINT(3 4)

関連情報

ST_LineInterpolatePoints, ST_3DLineInterpolatePoint, ST_LineLocatePoint