STBuffer(geography 数据类型)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
返回一个地理对象,该对象表示所有与 geography 实例的距离小于或等于指定值的点的并集。
这种 geography 数据类型方法支持大于半球的 FullGlobe 实例或空间实例。
语法
.STBuffer ( distance )
参数
distance
类型为 float(在 .NET Framework 中为 double)的值,用于指定与围绕其计算缓冲区的 geography 实例的距离。
缓冲区的最大距离不能超过 0.999 * π * minorAxis * minorAxis / majorAxis(~0.999 * 1/2 的地球圆周)或整个地球。
返回类型
SQL Server 返回类型:geography
CLR 返回类型:SqlGeography
备注
STBuffer() 计算缓冲区的方式与 BufferWithTolerance 相同:指定 tolerance = abs(distance) * .001 且 relative = false。
负的缓冲区将删除 geography 实例的给定距离的边界内的所有点。
STBuffer()
在某些情况下将返回 FullGlobe 实例;例如,当缓冲区距离大于从赤道到极地的距离时,STBuffer()
返回 FullGlobe 实例。 缓冲区不能超过完整的地球。
在缓冲区的距离超过下列限制的 FullGlobe 实例中,此方法将引发 ArgumentException:
0.999 * π * minorAxis * minorAxis / majorAxis(~0.999 * 1/2 地球的周长)
最大距离限制允许将缓冲区构造得尽可能灵活。
理论缓冲区与所计算的缓冲区之间的误差是 max(tolerance, extents * 1.E-7),其中 tolerance = distance * .001。 有关盘区的详细信息,请参阅 geography 数据类型方法引用。
示例
下面的示例创建 LineString``geography
实例。 然后,它使用 STBuffer()
返回该实例的 1 米内的区域。
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SELECT @g.STBuffer(1).ToString();