STScale
STScale is a TSQL function that moves a geometry object’s ordinates using the supplied delta X, Y, Z and M.
Function Specification.
Function [dbo].[STScale] ( @p_geometry geometry, @p_xFactor float, @p_yFactor float, @p_zFactor float, @p_mFactor float, @p_round_xy int = 3, @p_round_zm int = 2 ) Returns geometry
Example.
-- XY SELECT [dbo].[STScale]( geometry::STGeomFromText('LINESTRING(0.1 0.2,1.4 45.2)',0), -5.0, 3.2, NULL, NULL, 3, 2 ).AsTextZM() as scaledGeom; scaledGeom LINESTRING (-0.5 0.64, -7 144.64) -- XYZ SELECT [dbo].[STScale]( geometry::STGeomFromText('LINESTRING(0.1 0.2 NULL 1.0,1.4 45.2 NULL 45.02)',0), NULL, NULL, NULL, 1.5, 3, 2 ).AsTextZM() as scaledGeom; scaledGeom LINESTRING (0.1 0.2 NULL 1.5, 1.4 45.2 NULL 67.53) -- XYZM SELECT [dbo].[STScale]( geometry::STGeomFromText('LINESTRING(0.1 0.2 0.9 1.0,1.4 45.2 2.1 45.02)',0), 1.0, 1.0, 2.0, 1.5, 3, 2 ).AsTextZM() as scaledGeom; scaledGeom LINESTRING (0.1 0.2 1.8 1.5, 1.4 45.2 4.2 67.53)
Description.
This function scales the supplied geometry’s ordinates using the supplied scale factors.
The computed ordinates of the new geometry are rounded to the appropriate decimal digits of precision.
Parameters.
@p_geometry (geometry) - supplied geometry of any type. @p_xFactor (double) - X ordinate scale factor. @p_yFactor (double) - Y ordinate scale factor. @p_zFactor (double) - Z ordinate scale factor. @p_mFactor (double) - M ordinate scale factor. @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 XM ordinates are rounded.
Results.
The function returns the input geometry scaled by supplied ordinate factor values.