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


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

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

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

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

Arguments

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

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

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

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

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

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

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

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

Exceptions

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

Note

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

Remarks

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

Note

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

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

Когда distance< 0, то

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

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

    Note

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

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

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

Examples

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

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

См. также

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