Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Возвращает объект, представляющий все точки, принадлежащие одному из экземпляров geometry или geometry, но не лежащие одновременно в обоих экземплярах.
Syntax
.STSymDifference ( other_geometry )
Arguments
other_geometry
Другой экземпляр geometry в дополнение к экземпляру, для которого вызван метод STSymDifference().
Типы возвращаемых данных
Тип возвращаемых данных SQL Server: geometry
Тип возвращаемых данных CLR: SqlGeometry
Remarks
Этот метод всегда возвращает значение NULL, если у экземпляров geometry не совпадают идентификаторы пространственных ссылок (SRID). Результат может содержать сегменты дуги, только если во входном экземпляре содержатся сегменты дуги.
Examples
A. Вычисление симметричной разницы двух экземпляров Polygon
В следующем примере метод STSymDifference() применяется для вычисления симметрической разности двух экземпляров 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. Вычисление симметричной разницы между экземплярами CurvePolygon и Polygon
В следующем примере возвращается коллекция GeometryCollection, представляющая симметричную разницу между экземплярами CurvePolygon и 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. Применение функции STSymDifference() к экземпляру CurvePolygon с вписанным экземпляром Polygon
В следующем примере возвращается экземпляр CurvePolygon, содержащий внутренний экземпляр Polygon, представляющий симметричную разницу между двумя сравниваемыми экземплярами.
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();