STCurveToLine(geometry 数据类型)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

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

语法

  
.STCurveToLine ( )  

注意

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

返回类型

SQL Server 返回类型:geometry

CLR 返回类型:SqlGeometry

备注

为空的 geometry 实例变量返回空的 GeometryCollection 实例,为未初始化的 geometry 变量返回 NULL

该方法返回的多边形近似值取决于用于调用该方法的 geometry 实例:

  • 为 CircularString 或 CompoundCurve 实例返回 LineString 实例

  • 为 CurvePolygon 实例返回 Polygon 实例

  • 如果 geometry 实例不是 CircularString、CompoundCurve 或 CurvePolygon 实例,则返回该实例的副本。 例如,STCurveToLine 方法为属于 Point 实例的 geometry 实例返回 Point 实例。

与 SQL/MM 规范不同,STCurveToLine 方法不使用 Z 坐标值来计算多边形近似值。 该方法忽略执行调用的 geometry 实例中存在的任何 Z 坐标值。

示例

A. 使用未初始化的 Geometry 变量和空实例

在以下示例中,第一个 SELECT 语句使用未初始化的 geometry 实例调用 STCurveToLine 方法,第二个 SELECT 语句使用空的 geometry 实例。 因此,该方法为第一个语句返回 NULL,为第二个语句返回 GeometryCollection 集合。

 DECLARE @g geometry; 
 SET @g = @g.STCurveToLine(); 
 SELECT @g.STGeometryType(); 
 SET @g = geometry::Parse('LINESTRING EMPTY'); 
 SELECT @g.STGeometryType();

B. 使用 LineString 实例

以下示例中的 SELECT 语句使用 LineString 实例调用 STCurveToLine 方法。 因此,该方法返回 LineString 实例。

 DECLARE @g geometry; 
 SET @g = geometry::Parse('LINESTRING(1 3, 5 5, 4 3, 1 3)'); 
 SET @g = @g.STCurveToLine(); 
 SELECT @g.STGeometryType();

C. 使用 CircularString 实例

以下示例中的第一个 SELECT 语句使用 CircularString 实例调用 STCurveToLine 方法。 因此,该方法返回 LineString 实例。 该 SELECT 语句还比较两个实例的长度,它们大致相同。 最后,第二个 SELECT 语句返回每个实例的点数。 它仅为 CircularString 实例返回 5 个点,而为 LineString 实例返回 65 个点。

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CIRCULARSTRING(10 0, 0 10, -10 0, 0 -10, 10 0)'); 
 SET @g2 = @g1.STCurveToLine(); 
 SELECT @g1.STGeometryType() AS [G1 Type], @g2.STGeometryType() AS [G2 Type], @g1.STLength() AS [G1 Perimeter], @g2.STLength() AS [G2 Perimeter], @g2.ToString() AS [G2 Def]; 
 SELECT @g1.STNumPoints(), @g2.STNumPoints();

D. 使用 CurvePolygon 实例

以下示例中的 SELECT 语句使用 CurvePolygon 实例调用 STCurveToLine 方法。 因此,该方法返回 Polygon 实例。

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(10 0, 0 10, -10 0, 0 -10, 10 0))'); 
 SET @g2 = @g1.STCurveToLine(); 
 SELECT @g1.STGeometryType() AS [G1 Type], @g2.STGeometryType() AS [G2 Type];

另请参阅

空间数据类型概述
STLength(geometry 数据类型)
STNumPoints(geometry 数据类型)
STGeometryType(geometry 数据类型)