STCurveN (geography データ型)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric SQL Database
LineString、CircularString、または CompoundCurve である geography インスタンスから指定された曲線を返します。
構文
.STCurveN( n )
引数
n
1 から geography インスタンス内の曲線の数までの int 式。
戻り値の型
SQL Server 戻り値の型: geography
CLR の戻り値の型: SqlGeography
例外
n < 1 のとき、ArgumentOutOfRangeException がスローされます。
解説
次の条件が発生するとき、NULL が返されます。
geography インスタンスが宣言されるが、インスタンス化されない
geography インスタンスが空である
n が geography インスタンスの曲線数を超える (「STNumCurves (geography データ型)」参照)
geography インスタンスのディメンションが等しくない (「STDimension (geography データ型)」参照)
例
A. CircularString に対して STCurveN() を使用する
次の例では、CircularString インスタンスで 2 番目の曲線を返します。
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 インスタンスで 2 番目の曲線を返します。
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. 3 つの CircularStrings を含む CompoundCurve に対して STCurveN() を使用する
次の例では、3 つの異なる CircularString インスタンスを前の例と同じ曲線シーケンスに結合した CompoundCurve インスタンスを使用します。
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()
では、使用する Well-Known Text (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