Export (0) Print
Expand All
Expand Minimize

STSymDifference (geometry Data Type)

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.

.STSymDifference ( other_geometry )

other_geometry

Is another geometry instance in addition to the instance on which STSymDistance() is being invoked.

SQL Server return type: geometry

CLR return type: SqlGeometry

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.

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();

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();

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft