STSymDifference (tipo di dati geometry)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric
Restituisce un oggetto che rappresenta tutti i punti che si trovano in un'istanza geometry o un'altra istanza geometry, ma non i punti che si trovano in entrambe le istanze.
Sintassi
.STSymDifference ( other_geometry )
Argomenti
other_geometry
Altra istanza geometry oltre all'istanza sulla quale viene chiamato STSymDifference()
.
Tipi restituiti
Tipo SQL Server restituito: geometry
Tipo CLR restituito: SqlGeometry
Osservazioni:
Questo metodo restituisce sempre Null se gli identificatori SRID delle istanze geometry non corrispondono. Il risultato può contenere segmenti di arco circolare solo se le istanze di input contengono segmenti di arco circolare.
Esempi
R. Calcolo della differenza simmetrica di due istanze Polygon
Nell'esempio seguente viene utilizzato STSymDifference()
per calcolare la differenza simmetrica tra due istanze Polygon
.
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. Calcolo della differenza simmetrica tra un'istanza CurvePolygon e un'istanza Polygon
Nell'esempio seguente viene restituito GeometryCollection
che rappresenta la differenza simmetrica tra CurvePolygon
e 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. Utilizzo di STSymDifference() in un'istanza CurvePolygon con un'istanza Polygon inscritta
Nell'esempio seguente viene restituita un'istanza CurvePolygon
con un anello Polygon
interno che rappresenta la differenza simmetrica tra le due istanze confrontate.
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();