STSymDifference (geometry Data Type)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance SQL database in Microsoft Fabric
Returns an object that represents all points that are either in one geometry instance or another geometry instance, but not those points that lie in both instances.
Syntax
.STSymDifference ( other_geometry )
Arguments
other_geometry
Is another geometry instance in addition to the instance on which STSymDifference()
is being invoked.
Return Types
SQL Server return type: geometry
CLR return type: SqlGeometry
Remarks
This method always returns null if the spatial reference IDs (SRIDs) of the geometry instances do not match. The result may contain circular arc segments only if the input instances contain circular arc segments.
Examples
A. Computing the symmetric difference of two Polygon instances
The following example uses STSymDifference()
to compute the symmetric difference of two Polygon
instances.
DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);
SET @h = geometry::STGeomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);
SELECT @g.STSymDifference(@h).ToString();
B. Computing the symmetric difference between a CurvePolygon and a Polygon instance
The following example returns a GeometryCollection
that represents the symmetric difference between a CurvePolygon
and a Polygon
.
DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';
DECLARE @h geometry = 'POLYGON ((1 -1, 5 -1, 5 3, 1 3, 1 -1))';
SELECT @h.STSymDifference(@g).ToString();
C. Using STSymDifference() on CurvePolygon instance with an inscribed Polygon instance
The following example returns a CurvePolygon
instance with an interior Polygon
ring that represents the symmetric difference between the two instances compared.
DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';
DECLARE @h geometry = 'POLYGON ((1 -1, 2 -1, 2 1, 1 1, 1 -1))';
SELECT @h.STSymDifference(@g).ToString();