STCurveN (geometry データ型)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database
LineString、CircularString、CompoundCurve、または MultiLineString である geometry インスタンスから指定された曲線を返します。
構文
.STCurveN ( curve_index )
引数
curve_index
1 から geometry インスタンス内の曲線の数までの int 式です。
戻り値の型
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
インスタンスの 2 番目の曲線が返されます。
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. 1 つの CircularString インスタンスを持つ CompoundCurve インスタンスに対して STCurveN() を使用する
次の例では、CompoundCurve
インスタンスの 2 番目の曲線が返されます。
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. 3 つの CircularString インスタンスを持つ CompoundCurve インスタンスに対して STCurveN() を使用する
次の例では、3 つの異なる 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)
前の 3 つの例の結果が同じであることに注意してください。 同じ曲線シーケンスの入力にどの WKT (Well-known Text) 形式を使用しても、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