ST_LineInterpolatePoint — 返回沿直线在分数位置处插补的点。
geometry ST_LineInterpolatePoint(
geometry a_linestring, float8 a_fraction)
;
返回沿直线在分数位置处插补的点。第一个参数必须是LINESTRING。第二个参数是一个介于0和1之间的浮点数,表示点所在的线长度的分数。如果存在Z值和M值,则会对其进行插补。
看见 ST_LineLocatePoint 用于计算距离点最近的线位置。
![]() | |
此函数计算2D中的点,然后对Z和M的值进行内插,而 ST_3DLineInterpolatePoint 在3D中计算点,并且仅对M值进行内插。 |
![]() | |
从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)