ST_Line_Interpolate_Point — 線に沿った内挿点を返します。第2引数はfloat8で0から1の区間で、そのポイントが位置するラインストリングの総延長についての割合です。
geometry ST_Line_Interpolate_Point(
geometry a_linestring, float a_fraction)
;
線に沿った内挿点を返します。第1引数は LINESTRINGでなければなりません。第2引数はfloat8で0から1の区間で、そのポイントが位置するラインストリングの総延長に対する割合です。
ポイントに最も近いライン位置の計算についてはST_Line_Locate_Pointを参照して下さい。
1.1.1から、この関数はM軸やZ軸の内挿点も(存在するなら)計算するようになりました。それより前の版では0.0となります。 |
初出: 0.8.2, Z軸とM軸のサポートが1.1.1で追加されました。
この関数は3次元に対応しています。Zインデクスを削除しません。
-- 2次元ラインに沿った20%ポイント SELECT ST_AsEWKT(ST_Line_Interpolate_Point(the_line, 0.20)) FROM (SELECT ST_GeomFromEWKT('LINESTRING(25 50, 100 125, 150 190)') as the_line) As foo; st_asewkt ---------------- POINT(51.5974135047432 76.5974135047432)
-- 3次元線の中点 SELECT ST_AsEWKT(ST_Line_Interpolate_Point(the_line, 0.5)) FROM (SELECT ST_GeomFromEWKT('LINESTRING(1 2 3, 4 5 6, 6 7 8)') as the_line) As foo; st_asewkt -------------------- POINT(3.5 4.5 5.5) -- ポイントまたは他のジオメトリへの、ライン上の最短点の探索 SELECT ST_AsText(ST_Line_Interpolate_Point(foo.the_line, ST_Line_Locate_Point(foo.the_line, ST_GeomFromText('POINT(4 3)')))) FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As the_line) As foo; st_astext ---------------- POINT(3 4)