STAddMeasure

STAddMeasure is a TSQL function that adds measures to the supplied linestring.

TSQL Call Signature

Function [lrs].[STAddMeasure] (
@p_linestring    geometry,
@p_start_measure float,
@p_end_measure   float,
@p_round_xy      int = 3,
@p_round_zm      int = 2
)
Returns geometry;

Description.

Function that add measure ordinates to the supplied @p_linestring.

The function supports LineString, CircularString, CompoundCurve geometries

If geometry is already measured it is returned unchanged.

Start Point is assigned @p_start_measure and End Point is assigned @p_end_measure.

Intermediate Points’ measure values are calculated based on length calculations.

If a 2D linestring is supplied its Z ordinates are set to NULL.

The updated coordinate’s XY ordinates are rounded to @p_round_xy number of decimal digits of precision.

The updated coordinate’s ZM ordinates are rounded to @p_round_ZM number of decimal digits of precision.

Result.

measured linestring (geometry) – Input linestring with measures applied.

Parameters.

@p_linestring       (geometry) - Supplied Linestring geometry.
@p_start_measure       (float) - New Start M easurevalue.
@p_end_measure         (float) - New End Measure value.
@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.

Example.

The following query adds a measures to the supplied line. The start measure 1 is added to the first vertex of the linestring and an end measure of 2.141 is added to the last vertex of the linestring. Any intermediate vertices have measures added by distance interpolation.

use DEVDB -- change to your database
go

SELECT [lrs].[STAddMeasure] (
            geometry::STGeomFromText(
            'LINESTRING(0 0,0.5 0.5,1 1)',0),
            1,
            2.414,
            3,
            2
        ).AsTextZM() as MeasureLine;

MeasureLine
LINESTRING (0 0 NULL 1, 0.5 0.5 NULL 1.71, 1 1 NULL 2.41)