Posted on

STReverseMeasure

STReverseMeasure is a TSQL function that reverses the measures assigned to the vertices of a (multi)linestring.

TSQL Function Signature.

Function STReverseMeasure (
           @p_geometry geometry,
           @p_round_xy int = 3,
           @p_round_zm int = 2
         )
Returns geometry 

Description.

Reverses measures assigned to a linestring.

Supports CircularString and CompoundCurve geometry objects and subelements from 2012 onewards.

Parameters.

    @p_geometry (geometry) - Supplied Linestring geometry.
    @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.

<strong>Result.</strong>

The function returns the input geometry will all its vertices' M ordinates reversed.

<strong>Example.</strong>


WITH data AS (
  SELECT geometry::STGeomFromText('COMPOUNDCURVE (CIRCULARSTRING (3 6.3 1.1 0, 0 7 1.1 3.1, -3 6.3 1.1 9.3), (-3 6.3 1.1 9.3, 0 0 1.4 16.3, 3 6.3 1.6 20.2))',0) as Geom
)
SELECT 'Before' as text, d.geom.AsTextZM() as rGeom from data as d
UNION ALL
SELECT 'After' as text, [$(lrsowner)].[STReverseMeasure](d.geom,3,2).AsTextZM() as rGeom FROM data as d;
GO

text   rGeom
------ -------------------------------------------------------------------------------------------------------------------------------
Before COMPOUNDCURVE (CIRCULARSTRING (3 6.3 1.1 0, 0 7 1.1 3.1, -3 6.3 1.1 9.3), (-3 6.3 1.1 9.3, 0 0 1.4 16.3, 3 6.3 1.6 20.2))
After  COMPOUNDCURVE (CIRCULARSTRING (3 6.3 1.1 20.2, 0 7 1.1 17.1, -3 6.3 1.1 24.9), (-3 6.3 1.1 24.9, 0 0 1.4 17.9, 3 6.3 1.6 0))
Leave a Reply

Your email address will not be published. Required fields are marked *