BufferWithTolerance(geometry 数据类型)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
返回一个几何图形对象,该对象表示所有与 geometry 实例的距离小于或等于指定值的点值的并集,允许存在指定的公差。
语法
.BufferWithTolerance ( distance, tolerance, relative )
参数
distance
一个 float 表达式,用于指定与围绕其计算缓冲区的 geometry 实例的距离。
tolerance
一个 float 表达式,用于指定缓冲区距离的公差。
公差是指理想的缓冲区距离与返回的线性近似值之间的最大偏差。
例如,点的理想缓冲区距离为圆圈,但是这必须与多边形近似。 公差越小,多边形具有的点就越多,这将增加结果的复杂度,但可减少错误。
relative
一个指定 tolerance 值是相对值还是绝对值的 bit 值。 如果为“TRUE”或 1,则公差为相对值,并按 tolerance 参数与该实例的边框直径之间的乘积进行计算。 如果为“FALSE”或 0,则公差为绝对值,并且 tolerance 值为理想缓冲区距离与返回的线性近似值之间的绝对最大偏差。
返回类型
SQL Server 返回类型:geometry
CLR 返回类型:SqlGeometry
例外
tolerance 参数必须大于零。 如果 tolerance<= 0,则引发 System.ArgumentOutOfRangeException
。
备注
由于 tolerance 的类型为 float,如果指定的 tolerance 值很小,则可能会由于浮点类型舍入问题而引发 System.Runtime.InteropServices.COMException
。
备注
如果 distance > 0,则返回 Polygon 或 MultiPolygon 实例。
注意
由于 distance 的类型为 float,因此,极小的值可能在计算中等于零。 如果发生这种情况,则会返回执行调用的 geometry 实例的副本。 请参阅 float 和 real (Transact-SQL)。
如果 distance = 0,则会返回执行调用的 geometry 实例的副本。
如果 distance < 0,则
当实例维度为 0 或 1 时,将返回空的 GeometryCollection 实例。
当实例维度为 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();