STSymDifference (geometry-Datentyp)
Gibt ein Objekt zurück, das alle Punkte darstellt, die sich entweder in einer geometry-Instanz oder in einer anderen geometry-Instanz befinden, nicht jedoch die Punkte, die sich innerhalb beider Instanzen befinden.
Syntax
.STSymDifference ( other_geometry )
Argumente
- other_geometry
Eine andere geometry-Instanz zusätzlich zu der Instanz, in der STSymDistance() aufgerufen wird.
Rückgabetypen
SQL Server Rückgabetyp: geometry
CLR-Rückgabetyp: SqlGeometry
Hinweise
Diese Methode gibt immer NULL zurück, wenn die SRIDs (Spatial Reference IDs) der geometry-Instanzen nicht übereinstimmen. Im Ergebnis können nur dann Kreisbogensegmente enthalten sein, wenn die Eingabeinstanzen auch Kreisbogensegmente enthalten.
Beispiele
A.Berechnen des symmetrischen Unterschiedes zweier Polygon-Instanzen
Im folgenden Beispiel wird STSymDifference() zum Berechnen der symmetrischen Differenz zweier Polygon-Instanzen verwendet.
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.Berechnen des symmetrischen Unterschiedes zwischen einer CurvePolygon- und einer Polygon-Instanz
Im folgenden Beispiel wird eine GeometryCollection zurückgegeben, die den symmetrischen Unterschied zwischen einem CurvePolygon und einem Polygon darstellt.
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.Verwenden von STSymDifference() in einer CurvePolygon-Instanz mit einer Polygoninstanz
Im folgenden Beispiel wird eine Instanz von CurvePolygon mit dem inneren Ring einer Instanz von Polygon zurückgegeben, der den symmetrischen Unterschied zwischen den beiden Instanzen darstellt.
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();