STCurveN(geography 数据类型)
适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric SQL 数据库
返回从 geography 实例中指定的曲线,该实例的数据类型为 LineString、CircularString 或 CompoundCurve。
语法
.STCurveN( n )
参数
n
一个 int 表达式,其值介于 1 与 geography 实例中的曲线数之间。
返回类型
SQL Server 返回类型:geography
CLR 返回类型:SqlGeography
例外
如果 n < 1,则会引发 ArgumentOutOfRangeException。
备注
如果满足以下条件,则会返回 NULL。
已声明 geography 实例,但未将其实例化
geography 实例为空
n 超过 geography 实例中的曲线数目(请参阅 STNumCurves(geography 数据类型))
geography 实例的维度不相等(请参阅 STDimension(geography 数据类型))
示例
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