STInterpolatePoint

STInterpolatePoint — Returns value of the measure dimension of a point on the provided linesting closest to the provided point.

Function Specification.

Function [lrs].[STInterpolatePoint] (
               @p_linestring geometry,
               @p_point      geometry,
               @p_round_xy   int   = 3,
               @p_round_zm   int   = 2
             )
Returns geometry

Description.

This function snaps supplied point to @p_linestring, returning the measure value of the snapped point.

Returned measure value is rounded to @p_round_zm decimal digits of precision.

Notes.

Supports linestrings with CircularString elements.

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

@p_linestring must be measured.

Parameters.

    @p_linestring (geometry) - Measured linestring with or without Z ordinates.
    @p_point      (geometry) - Point near to linestring.
    @p_round_xy        (int) - Decimal digits of precision for XY ordinates.
    @p_round_zm        (int) - Decimal digits of precision for M ordinate.

Result.

The function returns the measure value of the point on @p_linestring nearest to @p_point.

Example.

select [lrs].[STInterpolatePoint] (
         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),
         3,2) as measure
union all
select [lrs].[STInterpolatePoint](
         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(10,0,28355),
         3,2) as measure
GO

measure
23.44
15.61