BufferWithCurves (geography データ型)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database
呼び出し元の geography インスタンスからの距離が distance パラメーターの値以下となる、すべての地点のセットを表す geography インスタンスを返します。
構文
.BufferWithCurves ( distance )
引数
distance
バッファーを形成するポイントの、geography インスタンスからの最大距離を示す float を指定します。
戻り値の型
SQL Server 戻り値の型: geography
CLR の戻り値の型: SqlGeography
例外
次の条件を満たす場合、ArgumentException がスローされます。
パラメーター (
@g.BufferWithCurves()
など) がこのメソッドに渡されない。@g.BufferWithCurves('a')
のように、数値以外のパラメーターがメソッドに渡された。@g.BufferWithCurves(NULL)
のように、NULL がメソッドに渡された。
注釈
次の表に、さまざまな distance 値に対して返される結果を示します。
distance 値 | 型ディメンション | 返される空間の種類 |
---|---|---|
distance < 0 | 0 または 1 | 空の GeometryCollection インスタンス |
distance < 0 | 2 以上 | 負のバッファーを持つ CurvePolygon または GeometryCollection インスタンス 注: 負の値のバッファーでは、空の GeometryCollection が作成されることがあります。 |
distance = 0 | すべてのディメンション | 呼び出し元の geography インスタンスのコピー |
distance > 0 | すべてのディメンション | CurvePolygon または GeometryCollection インスタンス |
Note
distance は float であるため、非常に小さな値は計算においてゼロと同一視されることがあります。 その場合、呼び出し元の geography インスタンスのコピーが返されます。
string パラメーターをこのメソッドに渡すと、float に変換されるか、ArgumentException
がスローされます。
例
A. 1 次元の geography インスタンスに対して、パラメーターに 0 を下回る (< 0) 値を指定して、BufferWithCurves() を呼び出す
次の例では、空の GeometryCollection
インスタンスが返されます。
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(-1).ToString();
B. 2 次元の geography インスタンスに対して、パラメーターに 0 を下回る (< 0) 値を指定して、BufferWithCurves() を呼び出す
次の例では、バッファーが負の値の CurvePolygon
インスタンスが返されます。
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.BufferWithCurves(-1).ToString()
C. パラメーターに 0 を下回る値を指定して、BufferWithCurves() を呼び出し、空の GeometryCollection を返す
次の例では、distance パラメーターが -2 の場合にどうなるかを示します。
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.BufferWithCurves(-2).ToString();
この SELECT ステートメントからは GEOMETRYCOLLECTION EMPTY
が返されます。
D. パラメーター値に 0 を指定して、BufferWithCurves() を呼び出す
次の例では、呼び出し元の geography インスタンスのコピーが返されます。
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(0).ToString();
E. パラメーターに 0 以外の非常に小さい値を指定して、BufferWithCurves() を呼び出す
次の例では、呼び出し元の geography インスタンスのコピーも返されます。
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
DECLARE @distance float = 1e-20;
SELECT @g.BufferWithCurves(@distance).ToString();
F. パラメーターに 0 を上回る値を指定して、BufferWithCurves() を呼び出す
次の例では、CurvePolygon
インスタンスが返されます。
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(2).ToString();
G. 有効な文字列パラメーターを渡す
次の例では、前と同じように CurvePolygon
インスタンスが返されますが、文字列パラメーターをメソッドに渡します。
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves('2').ToString();
H. 無効な文字列パラメーターを渡す
次の例では、エラーがスローされます。
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'
SELECT @g.BufferWithCurves('a').ToString();
前の 2 つの例では、文字列リテラルを BufferWithCurves()
メソッドに渡しています。 最初の方の例は、文字列リテラルを数値に変換できるので機能します。 一方、2 番目の例では ArgumentException
がスローされます。