Reduce(geography 数据类型)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例

返回给定 geography 实例的近似值,该值通过对实例运行具有给定公差的 Douglas-Peucker 算法来生成 。

这种 geography 数据类型方法支持大于半球的 FullGlobe 实例或空间实例 。

语法

  
.Reduce ( tolerance )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

术语 定义
tolerance 类型为 float 的值 。 tolerance 是输入到 Douglas-Peucker 算法的公差 。 tolerance 必须为正数 。

返回类型

SQL Server 返回类型:geography

CLR 返回类型:SqlGeography

备注

对于集合类型,此算法单独作用于包含在该实例中的每个 tolerance 。 此算法不修改 Point 实例 。

此方法将尝试保留 LineString 实例的终结,但是可能为了保留有效结果而无法实现此目的 。

如果使用负值调用 Reduce(),此方法将产生 ArgumentException 。 在 Reduce() 中使用的公差必须为正数。

通过删除除起点和终点之外的所有点,Douglas-Peucker 算法可用于 geography 实例中的每个曲线或圆环 。 然后,它再将已删除的点添加回去,从偏离中心最远的点开始,直到所有点与结果的距离都在 tolerance 范围之内 。 然后,如果必要,使结果变得有效,因为必须保证有一个有效的结果。

在 SQL Server 2012 (11.x) 中,此方法已扩展到 FullGlobe 实例 。

此方法不精确。

示例

以下示例创建一个 LineString 实例,并使用 Reduce() 简化该实例。

DECLARE @g geography = 'LineString(120 45, 120.1 45.1, 199.9 45.2, 120 46)'  
SELECT @g.Reduce(10000).ToString()  

另请参阅

地理实例上的扩展方法