次の方法で共有


STCurveN (geometry データ型)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database

LineStringCircularStringCompoundCurve、または MultiLineString である geometry インスタンスから指定された曲線を返します。

構文

  
.STCurveN ( curve_index )  

引数

curve_index
1 から geometry インスタンス内の曲線の数までの int 式です。

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

例外

curve_index< 1 の場合、ArgumentOutOfRangeException がスローされます。

解説

次のいずれかの場合、NULL が返されます。

  • geometry インスタンスが宣言されているが、インスタンス化されていない

  • geometry インスタンスが空

  • curve_indexgeometry インスタンス内の曲線の数を超えている

  • geometry インスタンスが PointMultiPointPolygonCurvePolygon、または 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

参照

STNumCurves (geometry データ型)
Geometry インスタンスの OGC メソッド