次の方法で共有


BufferWithCurves (geography データ型)

呼び出し元の geography インスタンスからの距離が distance パラメーターの値以下となる、すべての地点のセットを表す geography インスタンスを返します。

構文

.BufferWithCurves ( distance )

引数

  • distance
    バッファーを形成するポイントの、geography インスタンスからの最大距離を示す float を指定します。

戻り値の型

SQL Server の戻り値の型:geography

CLR の戻り値の型: SqlGeography

例外

次の条件を満たす場合、ArgumentException がスローされます。

  • パラメーター (@g.BufferWithCurves() など) がこのメソッドに渡されない。

  • 数値以外のパラメーター (@g.BufferWithCurves('a') など) がこのメソッドに渡された。

  • NULL ( など) がこのメソッドに渡された。@g.BufferWithCurves(NULL)

説明

次の表に、さまざまな distance 値に対して返される結果を示します。

distance 値

ディメンションの種類

返される空間の種類

distance < 0

0 または 1

空の GeometryCollection インスタンス

distance < 0

2 以上

バッファーが負の値の CurvePolygon インスタンスまたは GeometryCollection インスタンス

注意

バッファーが負の値であると、空の GeometryCollection が作成される可能性があります。

distance = 0

すべてのディメンション

呼び出し元の geography インスタンスのコピー

distance > 0

すべてのディメンション

CurvePolygon インスタンスまたは GeometryCollection インスタンス

注意

distance は float であるため、非常に小さい値は計算時に 0 と見なされることがあります。 その場合、呼び出し元の 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 を下回る (< 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 を上回る (> 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 がスローされます。

関連項目

参照

BufferWithCurves (geometry データ型)

その他の技術情報

geography インスタンスの拡張メソッド