MakeValid (geometry)#
Converts an invalid geometry instance into a geometry instance with a valid Open Geospatial Consortium (OGC) type.
Syntax#
.MakeValid ()
Return type#
geometry
Remarks#
This method may cause a change in the type of the geometry instance, as well as cause the points of a geometry instance to shift slightly.
Example#
Create an invalid LineString instance that overlaps itself and uses STIsValid() to confirm that it is an invalid instance. STIsValid() returns the value of 0 for an invalid instance.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 0);
SELECT @g.STIsValid();
Use MakeValid() to make the instance valid and to test that the instance is indeed valid. STIsValid() returns the value of 1 for a valid instance.
SET @g = @g.MakeValid();
SELECT @g.STIsValid();
Verify how the instance has been changed to make it a valid instance.
SELECT @g.ToString();
-- returns a valid MULTILINESTRING ((0 2, 1 1, 2 2), (1 1, 1 0))
Convert the CircularString instance into a Point instance.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 1 1, 1 1)';
SELECT @g.MakeValid().ToString();