STCurveN(geometry 数据类型)
适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric SQL 数据库
返回从 geometry 实例中指定的曲线,该实例的数据类型为 LineString、CircularString、CompoundCurve 或 MultiLineString。
语法
.STCurveN ( curve_index )
参数
curve_index
一个 int 表达式,其值介于 1 和 geometry 实例中的曲线数之间。
返回类型
SQL Server 返回类型:geometry
CLR 返回类型:SqlGeometry
例外
如果 curve_index < 1,则引发 ArgumentOutOfRangeException
。
备注
如果出现以下任何情况,则会返回 NULL:
声明 geometry 实例,但未将其实例化
geometry 实例为空
curve_index 超过 geometry 实例中的曲线数
geometry 实例为 Point、MultiPoint、Polygon、CurvePolygon 或 MultiPolygon
示例
A. 在 CircularString 实例上使用 STCurveN()
以下示例返回 CircularString
实例中的第二条曲线:
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
SELECT @g.STCurveN(2).ToString();
本主题前面的示例返回:
CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)
B. 在具有一个 CircularString 实例的 CompoundCurve 实例上使用 STCurveN()
以下示例返回 CompoundCurve
实例中的第二条曲线:
DECLARE @g geometry = 'COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0))';
SELECT @g.STCurveN(2).ToString();
本主题前面的示例返回:
CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)
C. 在具有三个 CircularString 实例的 CompoundCurve 实例上使用 STCurveN()
以下示例使用 CompoundCurve
实例,该实例将三个单独的 CircularString
实例合并为与上一示例相同的曲线序列:
DECLARE @g geometry = 'COMPOUNDCURVE (CIRCULARSTRING (0 0, 1 2.1082, 3 6.3246), CIRCULARSTRING(3 6.3246, 0 7, -3 6.3246), CIRCULARSTRING(-3 6.3246, -1 2.1082, 0 0))';
SELECT @g.STCurveN(2).ToString();
本主题前面的示例返回:
CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)
请注意,前面的三个示例的结果是相同的。 无论使用哪种 WKT(熟知文本)格式输入相同的曲线序列,在使用 STCurveN()
实例时,CompoundCurve
返回的结果都是相同的。
D. 在调用 STCurveN() 之前验证参数
以下示例说明如何在调用 STCurveN()
方法之前确保 @n
有效:
DECLARE @g geometry;
DECLARE @n int;
SET @n = 3;
SET @g = geometry::Parse('CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)');
IF @n >= 1 AND @n <= @g.STNumCurves()
BEGIN
SELECT @g.STCurveN(@n).ToString();
END