ST_LineInterpolatePoint — 傳回沿線以分數位置內插的點。
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 以計算最接近點的線段位置。
![]() |
|
此函數在 2D 中計算點,然後內插 Z 和 M 的值,而ST_3DLineInterpolatePoint 在 3D 中計算點,並且只內插 M 值。 |
![]() |
|
自 1.1.1 版本起,此函數也會內插 M 和 Z 值(如果存在),而先前的版本則將它們設定為 0.0。 |
可用性:0.8.2,1.1.1 新增支援 Z 和 M
已變更:2.1.0。在 2.0.x 版本之前,此函數稱為 ST_Line_Interpolate_Point。
此函數支援 3D,且不會捨棄 z 索引。
一個 LineString,在 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)
3D 線的中點
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)