名前

ST_Line_Interpolate_Point — 線に沿った内挿点を返します.第二引数はfloat8で0から1の区間で,そのポイントが位置するラインストリングの総延長についての割合です.

概要

geometry ST_Line_Interpolate_Point(geometry a_linestring, float a_fraction);

説明

線に沿った内挿点を返します.第一引数はラインストリングでなければなりません.第二引数はfloat8で0から1の区間で,そのポイントが位置するラインストリングの総延長に対する割合です.

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

[注意]

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

初出バージョン: 0.8.2, Z軸とM軸のサポートが1.1.1で追加されました.

この関数は三次元をサポートします.Zインデクスを削除しません.

ラインストリングの20%(0.20)位置の内挿点

--二次元ラインに沿った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)

--三次元線の中点
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)

関連情報

ST_AsText,ST_AsEWKT,ST_Length, ST_Line_Locate_Point