STCurveN(geography 数据类型)

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

返回从 geography 实例中指定的曲线,该实例的数据类型为 LineString、CircularString 或 CompoundCurve

语法

  
.STCurveN( n )  

注意

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

自变量

n
一个 int 表达式,其值介于 1 与 geography 实例中的曲线数之间

返回类型

SQL Server 返回类型:geography

CLR 返回类型:SqlGeography

例外

如果 n < 1,则会引发 ArgumentOutOfRangeException。

备注

如果满足以下条件,则会返回 NULL

示例

A. 在 CircularString 上使用 STCurveN()

以下示例返回 CircularString 实例中的第二条曲线

 DECLARE @g geography = 'CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
 SELECT @g.STCurveN(2).ToString();

该示例返回:

CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)

B. 在 CompoundCurve 上使用 STCurveN()

以下示例返回 CompoundCurve 实例中的第二条曲线

 DECLARE @g geography = 'COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
 SELECT @g.STCurveN(2).ToString();

该示例返回:

CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)

C. 在包含三个 CircularString 的 CompoundCurve 实例上使用 STCurveN()

以下示例使用 CompoundCurve 实例,该实例将三个单独的 CircularString 实例合并为与上一示例相同的曲线序列

 DECLARE @g geography = 'COMPOUNDCURVE (CIRCULARSTRING (-122.358 47.653, -122.348 47.649, -122.348 47.658), CIRCULARSTRING(-122.348 47.658, -122.358 47.658, -122.358 47.653))';  
 SELECT @g.STCurveN(2).ToString();

该示例返回:

CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)

STCurveN() 返回相同的结果,而无论使用的是哪种熟知文本 (WKT) 格式。

D. 在调用 STCurve() 之前测试有效性

以下示例说明如何在调用 STCurveN() 方法之前确保 n 有效

 DECLARE @g geography;  
 DECLARE @n int;  
 SET @n = 2;  
 SET @g = geography::Parse('LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)');  
 IF @n >= 1 AND @n <= @g.STNumCurves()  
 BEGIN  
 SELECT @g.STCurveN(@n).ToString();  
 END

另请参阅

Geography 实例上的 OGC 方法