CurveToLineWithTolerance(geography 数据类型)

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

返回包含圆弧线段的 geography 实例的多边形近似值

语法

  
.CurveToLineWithTolerance( tolerance, relative )  

注意

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

参数

tolerance
一个 double 表达式,它定义原始圆弧线段与其线性近似值之间的最大误差

relative
一个 bool 表达式,它指示是否使用偏差的相对最大值。 如果 relative 设置为 false (0),则为可能具有线性近似的偏差设置绝对最大值。 如果 relative 设置为 true (1),则按 tolerance 参数与空间对象边界框直径的乘积来计算容差。

返回类型

SQL Server 返回类型:geography

CLR 返回类型:SqlGeography

例外

将 tolerance 设置为 <= 0 会引发 ArgumentOutOfRange 异常。

备注

此方法允许为生成的 LineString 指定公差大小。

CurveToLineWithTolerance 方法将为 CircularString 或 CompoundCurve 实例返回 LineString 实例,为 CurvePolygon 实例返回 Polygon 实例

示例

A. 在 CircularString 实例上使用不同的公差值

以下示例说明设置容差如何影响从 CircularString 实例返回的 LineString 实例:

DECLARE @g geography;  
SET @g = geography::Parse('CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)');  
SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();

B. 在包含一个 LineString 的 MultiLineString 实例上使用该方法

以下示例显示从仅包含一个 MultiLineString 实例的 LineString 实例中返回的内容:

DECLARE @g geography;  
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649))');  
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

C. 在包含多个 LineString 的 MultiLineString 实例上使用该方法

以下示例显示从包含多个 MultiLineString 实例的 LineString 实例中返回的内容:

DECLARE @g geography;  
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649),(-123.358 47.653, -123.348 47.649))');  
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

D. 对于调用 CurvePolygon 实例,将 relative 设置为 true

以下示例使用 CurvePolygon 实例调用 CurveToLineWithTolerance() 并将 relative 设置为 true

DECLARE @g geography = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658), (-122.348 47.658, -122.358 47.658, -122.358 47.653)))';  
SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

另请参阅

地理实例上的扩展方法