名称

ST_LineInterpolatePoint — 返回沿线按分数位置插值的一个点。

语法

geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);

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

描述

返回沿线按分数位置插值的一个点。第一个参数必须是线串。第二个参数是介于 0 到 1 之间的一个浮点数,表示该点所在的线长度分数。如果存在,Z 值和 M 值将被插值。

请参阅 ST_LineLocatePoint 以计算最接近某个点的线位置。

[Note]

此函数在 2D 中计算点,然后为 Z 和 M 插值,而 ST_3DLineInterpolatePoint 在 3D 中计算点,并且只为 M 值插值。

[Note]

从 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 索引。

示例

在 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)

另请参阅

ST_LineInterpolatePointsST_3DLineInterpolatePointST_LineLocatePoint