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


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

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

Синтаксис

.STDifference ( other_geography )

Аргументы

  • 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();

Б.Использование параметра 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, применяемые к географическим объектам