STSymDifference (geometry-Datentyp)
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
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 STSymDifference()
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();