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


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

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

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

Синтаксис

  
.BufferWithCurves ( distance )  

Аргументы

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

В. Вызов функции 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)