Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Возвращает объект, представляющий набор точек одного экземпляра geography, который находится за пределами другого экземпляра geography.
Syntax
.STDifference ( other_geography )
Arguments
other_geography
Другой экземпляр geography, который показывает, какие точки нужно удалить из экземпляра, для которого вызван метод STDifference().
Типы возвращаемых данных
Тип возвращаемого значения SQL Server: geography
Тип возвращаемых данных CLR: SqlGeography
Exceptions
Этот метод вызывает исключение ArgumentException, если экземпляр содержит противоположную границу.
Remarks
Этот метод всегда возвращает значение NULL, если идентификаторы пространственных ссылок (SRID) экземпляров geography не совпадают.
В SQL Server набор возможных результатов, возвращаемых на сервере, был расширен до экземпляров FullGlobe . SQL Server поддерживает пространственные экземпляры, размер которых превышает полушарие. Результат может содержать сегменты дуги, только если во входном экземпляре содержатся сегменты дуги. Этот метод не является точным.
Examples
A. Вычисление разницы между двумя географическими объектами
В следующем примере с помощью метода STDifference() вычисляется разница между двумя экземплярами geography.
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SELECT @g.STDifference(@h).ToString();
B. Использование параметра FullGlobe с функцией STDifference()
В следующем примере используется экземпляр FullGlobe. Первый результат — пустая коллекция GeometryCollection, второй результат — экземпляр Polygon.
STDifference() возвращает пустую коллекцию GeometryCollection, когда экземпляр FullGlobe является параметром. Каждая точка экземпляра geography содержится в экземпляре FullGlobe.
DECLARE @g geography = 'POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
DECLARE @h geography = 'FULLGLOBE';
SELECT @g.STDifference(@h).ToString(),
@h.STDifference(@g).ToString();