Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Azure 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