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

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Синтаксис

  
.BufferWithCurves ( distance )  

Примечание.

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

Аргументы

distance
Имеет тип float и указывает максимальное расстояние, на котором точки, составляющие буфер, могут находиться от экземпляра geography.

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

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

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

Исключения

Следующие критерии вызовут исключение ArgumentException.

  • Методу, например @g.BufferWithCurves(), не передаются никакие параметры

  • Методу, например @g.BufferWithCurves('a'), передается нечисловой параметр

  • NULL передается методу, например @g.BufferWithCurves(NULL)

Замечания

В следующей таблице показаны результаты, возвращенные для разных значений расстояния.

Значение расстояния Измерения типа Возвращенный пространственный тип
расстояние < 0 Ноль или один Пустой экземпляр GeometryCollection
расстояние < 0 Два и более Экземпляр CurvePolygon или GeometryCollection с отрицательным буфером.

Примечание. Отрицательный буфер может создать пустой экземпляр GeometryCollection
расстояние = 0 Все измерения Копия вызывающего экземпляра geography
расстояние > 0 Все измерения Экземпляр CurvePolygon или GeometryCollection

Примечание.

Поскольку аргумент distance относится к типу float, в расчетах очень маленькое значение может быть приравнено к нулю. Когда это происходит, возвращается копия вызывающего экземпляра geography.

Если методу передается параметр string, то он будет преобразован в тип float или возникнет исключение ArgumentException.

Примеры

А. Вызов метода BufferWithCurves() со значением параметра < 0 для экземпляра одномерного географического объекта

В следующем примере возвращается пустой экземпляр GeometryCollection:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(-1).ToString();

B. Вызов метода BufferWithCurves() со значением параметра < 0 для экземпляра двумерного географического объекта

В следующем примере возвращается экземпляр CurvePolygon с отрицательным буфером:

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
SELECT @g.BufferWithCurves(-1).ToString()

C. Вызов функции BufferWithCurves() со значением параметра < 0, которая возвращает пустую коллекцию GeometryCollection

Следующий пример демонстрирует, что происходит, когда параметр distance равняется –2:

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
SELECT @g.BufferWithCurves(-2).ToString();

Эта инструкция SELECT возвращает GEOMETRYCOLLECTION EMPTY

D. Вызов функции BufferWithCurves() со значением параметра = 0

В следующем примере возвращается копия вызывающего экземпляра geography:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(0).ToString();

Д. Вызов функции BufferWithCurves() с ненулевым, но очень малым значением параметра

В следующем примере также возвращается копия вызывающего экземпляра geography:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
DECLARE @distance float = 1e-20;  
SELECT @g.BufferWithCurves(@distance).ToString();

F. Вызов функции BufferWithCurves() со значением параметра > 0

В следующем примере возвращается экземпляр CurvePolygon:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(2).ToString();

G. Передача допустимого строкового параметра

В следующем примере возвращается тот же экземпляр CurvePolygon, который упоминался ранее, но методу передается строковый параметр:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves('2').ToString();

H. Передача недопустимого строкового параметра

В следующем примере возникнет ошибка:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'  
SELECT @g.BufferWithCurves('a').ToString();

Обратите внимание на то, что в предыдущих двух примерах передавался строковый литерал методу BufferWithCurves(). Первый пример будет работать, поскольку строковый литерал может быть преобразован в числовое значение. Но во втором примере возникнет исключение ArgumentException.

См. также

Расширенные методы в экземплярах Geography
BufferWithCurves (тип данных geometry)