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.
Składnia
.STSymDifference ( other_geometry )
Arguments
- other_geometry
Is another geometry instance in addition to the instance on which STSymDistance() is being invoked.
Return Types
SQL Server return type: geometry
CLR return type: SqlGeometry
Uwagi
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();