Name

ST_LineInterpolatePoint — 返回沿直线在分数位置处插补的点。

Synopsis

geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);

描述

返回沿直线在分数位置处插补的点。第一个参数必须是LINESTRING。第二个参数是一个介于0和1之间的浮点数,表示点所在的线长度的分数。如果存在Z值和M值,则会对其进行插补。

看见 ST_LineLocatePoint 用于计算距离点最近的线位置。

[Note]

此函数计算2D中的点,然后对Z和M的值进行内插,而 ST_3DLineInterpolatePoint 在3D中计算点,并且仅对M值进行内插。

[Note]

从1.1.1版开始,该函数还会插入M和Z值(如果存在),而以前的版本将它们设置为0.0。

可用性:1.1.1增加了对0.8.2、Z和M的支持

更改:2.1.0。直到2.0.x,这被称为ST_Line_Interpolate_Point。

This function supports 3d and will not drop the z-index.

示例

插值点位于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)

三维线的中点:

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