Поделиться через


STDifference (тип данных geography)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Возвращает объект, представляющий набор точек одного экземпляра geography, который находится за пределами другого экземпляра geography.

Синтаксис

  
.STDifference ( other_geography )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

other_geography
Другой экземпляр geography, который показывает, какие точки нужно удалить из экземпляра, для которого вызван метод STDifference().

Типы возвращаемых данных

Тип возвращаемого значения SQL Server: geography

Тип возвращаемых данных CLR: SqlGeography

Исключения

Этот метод вызывает исключение ArgumentException, если экземпляр содержит противоположную границу.

Замечания

Этот метод всегда возвращает значение NULL, если идентификаторы пространственных ссылок (SRID) экземпляров geography не совпадают.

В SQL Server набор возможных результатов, возвращаемых на сервере, был расширен до экземпляров FullGlobe . SQL Server поддерживает пространственные экземпляры, размер которых превышает полушарие. Результат может содержать сегменты дуги, только если во входном экземпляре содержатся сегменты дуги. Этот метод не является точным.

Примеры

А. Вычисление разницы между двумя географическими объектами

В следующем примере с помощью метода 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();

См. также

Методы OGC в экземплярах Geography