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)