Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Zwraca obiekt reprezentujący wszystkie punkty, które znajdują się w jednym wystąpieniu geometrii lub w innym wystąpieniu geometrii , ale nie w tych punktach, które znajdują się w obu wystąpieniach.
Syntax
.STSymDifference ( other_geometry )
Arguments
other_geometry
Jest innym wystąpieniem geometrycznym oprócz wystąpienia, na którym STSymDifference() jest wywoływane.
Typy zwracane
Zwracany typ programu SQL Server: geometria
Typ zwracania CLR: SqlGeometry
Remarks
Ta metoda zawsze zwraca wartość null, jeśli identyfikatory odwołań przestrzennych (SRID) wystąpień geometrii nie są zgodne. Wynik może zawierać segmenty łuku cyklicznego tylko wtedy, gdy wystąpienia wejściowe zawierają segmenty łuku cyklicznego.
Examples
A. Obliczanie symetrycznej różnicy między dwoma wystąpieniami wielokątowymi
W poniższym przykładzie użyto STSymDifference() metody do obliczenia symetrycznej różnicy między dwoma Polygon wystąpieniami.
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. Obliczanie różnicy symetrycznej między elementem CurvePolygon i wystąpieniem wielokąta
W poniższym przykładzie zwracana jest wartość GeometryCollection reprezentująca symetryczną różnicę między elementem a a CurvePolygon 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. Używanie klasy STSymDifference() w wystąpieniu CurvePolygon z przypisanym wystąpieniem wielokąta
Poniższy przykład zwraca CurvePolygon wystąpienie z pierścieniem wewnętrznym Polygon reprezentującym symetryczną różnicę między dwoma wystąpieniami w porównaniu.
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();