STLineLocatePoint

STLineLocatePoint — Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point

Function Specification.

Function [$(lrsowner)].[STLineLocatePoint] (
           @p_linestring geometry,
           @p_point      geometry,
           @p_round_xy   int   = 3,
           @p_round_zm   int   = 2
         )
 Returns geometry

Description.

This function, given a point near a the supplied measure @p_linestring, returns the measure/length ratio of the found position.

Notes.

Is identical to PostGIS’s ST_LineLocatePoint.

Srid of @p_linestring and @p_point must be the same.

If @p_linestring is measured ratio returned is measure of located point / MeasureRange of linestring.

If @p_linestring is not measured the ratio returned is position of located point from start / STLenth of linestring.

Parameters.

    @p_linestring (geometry) - Linestring geometry with or without measures.
    @p_point      (geometry) - Point near to linestring.
    @p_round_xy        (int) - Decimal degrees of precision to which calculated XY ordinates are rounded.
    @p_round_zm        (int) - Decimal degrees of precision to which calculated ZM ordinates are rounded.

Result.

The function returns the ratio of the position of the point on @p_linestring using measure/measure range or length/total length.

Example.

select [lrs].[STLineLocatePoint] (
           geometry::STGeomFromText('LINESTRING(-4 -4 0 1, 0 0 0 5.6, 10 0 0 15.61, 10 10 0 25.4)',28355),
           geometry::Point(8,8,28355),
           default,
           default
       ) as ratio
union all
select [lrs].[STLineLocatePoint] (
           geometry::STGeomFromText('LINESTRING(-4 -4,0 0,10 0,10 10)',28355),
           geometry::Point(10,0,28355),
           4,
           8
       ) as ratio
GO

ratio
23.44
15.6