CurveToLineWithTolerance(geometry 数据类型)

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

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

语法

  
.CurveToLineWithTolerance ( tolerance, relative )  

注意

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

参数

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

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

返回类型

SQL Server 返回类型:geometry

CLR 返回类型:SqlGeometry

例外

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

备注

此方法可以指定结果 LineString 的容错大小

下表显示了 CurveToLineWithTolerance() 为各种类型返回的实例类型。

调用实例类型 返回的空间类型
空 geometry 实例 空的 GeometryCollection 实例
Point 和 MultiPoint Point 实例
MultiPoint Point 或 MultiPoint 实例
CircularString、CompoundCurve 或 LineString LineString 实例
MultiLineString LineString 或 MultiLineString 实例
CurvePolygon 和 Polygon Polygon 实例
MultiPolygon Polygon 或 MultiPolygon 实例
具有一个不包含圆弧线段的实例的 GeometryCollection GeometryCollection 中包含的实例决定了返回的实例类型
具有一个一维圆弧线段实例(CircularString、CompoundCurve)的 GeometryCollection LineString 实例
具有一个二维圆弧线段实例 (CurvePolygon) 的 GeometryCollection Polygon 实例
具有多个一维实例的 GeometryCollection MultiLineString 实例
具有多个二维实例的 GeometryCollection MultiPolygon 实例
具有多个不同维度的实例的 GeometryCollection GeometryCollection 实例

示例

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

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

 DECLARE @g geometry; 
 SET @g = geometry::Parse('CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();

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

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

 DECLARE @g geometry; 
 SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

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

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

 DECLARE @g geometry; 
 SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9),(4 4, 9 18))'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

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

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

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

E. 在 GeometryCollection 实例上使用该方法

以下示例在包含一个二维 CurveToLineWithTolerance() 实例和一个一维 GeometryCollection 实例的 CurvePolygon 上调用 CircularStringCurveToLineWithTolerance() 将这两种圆弧线段类型转换为直线段类型,并以 GeometryCollection 类型返回它们。

 DECLARE @g geometry; 
 SET @g = geometry::Parse('GEOMETRYCOLLECTION(CURVEPOLYGON( COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), (4 2, 0 2))), CIRCULARSTRING(4 4, 8 6, 9 5))'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.1, 0).ToString();

另请参阅

CurveToLineWithTolerance(geography 数据类型)
STCurveToLine(geometry 数据类型)