Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает экземпляр geography, представляющий набор всех точек, расстояние которых от вызывающего экземпляра geography меньше параметра distance или равно ему.
Применимо для следующих объектов: SQL Server (SQL Server 2012 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Синтаксис
.BufferWithCurves ( distance )
Аргументы
- distance
Имеет тип float и указывает максимальное расстояние, на котором точки, составляющие буфер, могут находиться от экземпляра географического объекта.
Типы возвращаемых данных
Возвращаемый тип 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();
Б.Вызов метода 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
Г.Вызов функции 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();
Е.Вызов функции 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();
Ж.Передача допустимого строкового параметра
В следующем примере возвращается тот же экземпляр 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();
З.Передача недопустимого строкового параметра
В следующем примере возникнет ошибка:
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.
См. также
Справочник
BufferWithCurves (тип данных geometry)