BufferWithTolerance (тип данных geometry)

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

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

Синтаксис

  
.BufferWithTolerance ( distance, tolerance, relative )  

Примечание.

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

Аргументы

distance
Это выражение типа float задает расстояние от экземпляра geometry, для которого вычисляется буфер.

tolerance
Выражение типа float, задающее погрешность буферного расстояния.

Под погрешностью понимается максимальное отклонение от идеальной буферной дистанции для возвращаемого линейного приближения.

Например, идеальной границей буфера для точки является окружность, однако ее необходимо приблизительно изобразить многоугольником. Чем меньше заданная погрешность, тем из большего числа точек должен состоять многоугольник. Это увеличивает сложность результата, но уменьшает его погрешность.

relative
Значение типа bit, указывающее значение tolerance: относительное или абсолютное. Если задано значение TRUE или 1, то используется относительная погрешность, которая вычисляется как произведение параметра tolerance и диаметра ограничивающего прямоугольника экземпляра. Если этот аргумент имеет значение FALSE или 0, то погрешность является абсолютной, а значение tolerance задает максимальное абсолютное отклонение от идеальной буферной дистанции для возвращаемого линейного приближения.

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

Тип возвращаемых данных SQL Server: geometry

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

Исключения

Параметр tolerance должен быть больше нуля. Если tolerance<= 0, вызывается исключение System.ArgumentOutOfRangeException.

Примечание.

Так как параметр tolerance имеет тип float, то может возникнуть исключение System.Runtime.InteropServices.COMException, если значение, заданное в качестве погрешности, слишком мало, из-за особенностей округления типов с плавающей запятой.

Замечания

Если distance> 0, возвращается экземпляр Polygon или MultiPolygon.

Примечание.

Так как аргумент distance относится к типу float, то в расчетах очень маленькое значение может быть приравнено к нулю. Когда это происходит, возвращается экземпляр geometry. См. раздел Типы данных float и real (Transact-SQL).

Когда distance = 0, возвращается копия вызывающего экземпляра geometry.

Когда distance< 0, то

  • возвращается пустой экземпляр GeometryCollection, если измерения экземпляра — 0 или 1.

  • Возвращается отрицательный буфер, если измерений экземпляра 2 или более.

    Примечание.

    Отрицательный буфер может также создать пустой экземпляр GeometryCollection.

Отрицательный буфер удаляет все точки на указанном расстоянии от границы экземпляра geometry.

Ошибка между теоретическим и вычисляемым буфером составляет max(tolerance, extents × 1.E-7), где tolerance определяется значением параметра tolerance. Дополнительные сведения об экстентах см. в статье Справочник по методам типа данных geometry.

Примеры

В следующем примере создается экземпляр Point, а метод BufferWithTolerance() получает приблизительный буфер вокруг этого экземпляра.

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

См. также

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