返回给定 geography 实例的近似值,该值是通过对实例运行具有给定公差的 Douglas-Peucker 算法生成的。
这种 geography 数据类型方法支持 FullGlobe 实例或大于半球的空间实例。
语法
.Reduce ( tolerance )
参数
项 |
定义 |
tolerance |
类型为 float 的值。 tolerance 是输入到 Douglas-Peucker 算法的公差。 tolerance 必须为正数。 |
返回类型
SQL Server 返回类型:geography
CLR 返回类型:SqlGeography
注释
对于集合类型,此算法单独作用于包含在该实例中的每个 geography。 此算法不修改 Point 实例。
此方法将尝试保留 LineString 实例的端点,但是可能为了保留有效结果而无法实现此目的。
如果使用负值调用 Reduce(),此方法将产生一个 ArgumentException。 在 Reduce() 中使用的公差必须为正数。
通过删除除起点和终点之外的所有点,Douglas-Peucker 算法可用于 geography 实例中的每个曲线或圆环。 然后,它再将已删除的点添加回去,从偏离中心最远的点开始,直到所有点与结果的距离都在 tolerance 范围之内。 然后,如果必要,使结果变得有效,因为必须保证有一个有效的结果。
在 SQL Server 2012 中,此方法已扩展到 FullGlobe 实例。
此方法不是精确方法。
示例
以下示例创建一个 LineString 实例,并使用 Reduce() 简化该实例。
DECLARE @g geography = 'LineString(120 45, 120.1 45.1, 199.9 45.2, 120 46)'
SELECT @g.Reduce(10000).ToString()