次の方法で共有


BufferWithCurves (geometry データ型)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

構文

.BufferWithCurves ( distance )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

例外

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

  • パラメーター (@g.BufferWithCurves() など) は、このメソッドに渡されません。

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

  • @g.BufferWithCurves(NULL) のように、NULL がメソッドに渡された。

注釈

次の図には、このメソッドによって返される geometry インスタンスの例を示しています。

Diagram showing an example of a geometry instance returned by this method.

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

distance 値 型ディメンション 返される空間の種類
distance < 0 0 または 1 空の GeometryCollection インスタンス
distance < 0 2 以上 負のバッファーを持つ CurvePolygon または GeometryCollection インスタンス 注: 負の値のバッファーでは、空の GeometryCollection が作成されることがあります
distance = 0 すべてのディメンション 呼び出し元の geography インスタンスのコピー
distance > 0 すべてのディメンション CurvePolygon または GeometryCollection インスタンス

Note

distancefloat であるため、非常に小さな値は計算においてゼロと同一視されることがあります。 その場合、呼び出し元のコピー geometry インスタンスが返されます。 「float 型と real 型 (Transact-SQL)」を参照してください。

バッファーに負の値を指定すると、geometry インスタンスの境界から、指定された距離の範囲内にある地点がすべて削除されます。 次の図には、負の値のバッファーを薄い網掛けがある円の領域として示しています。 点線は元の多角形の境界を示しており、実線は結果として得られる多角形の境界を示しています。

string パラメーターをこのメソッドに渡すと、float に変換されるか、ArgumentException がスローされます。

A. 1 次元の geometry インスタンスに対して、パラメーターに 0 を下回る値を指定して、BufferWithCurves() を呼び出す

次の例では、空の GeometryCollection インスタンスが返されます。

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(-1).ToString(); 

B. 2 次元の geometry インスタンスに対して、パラメーターに 0 を下回る値を指定して、BufferWithCurves() を呼び出す

次の例では、バッファーが負の値の CurvePolygon インスタンスが返されます。

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.BufferWithCurves(-1).ToString()

C. パラメーターに 0 を下回る値を指定して、BufferWithCurves() を呼び出し、空の GeometryCollection を返す

次の例では、distance パラメーターが -2 の場合にどうなるかを示します。

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.BufferWithCurves(-2).ToString();

この SELECT ステートメントからは GEOMETRYCOLLECTION EMPTY が返されます。

D. パラメーター値に 0 を指定して、BufferWithCurves() を呼び出す

次の例では、呼び出し元の geometry インスタンスのコピーが返されます。

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(0).ToString();

E. パラメーターに 0 以外の非常に小さい値を指定して、BufferWithCurves() を呼び出す

次の例では、呼び出し元の geometry インスタンスのコピーも返されます。

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 DECLARE @distance float = 1e-20; 
 SELECT @g.BufferWithCurves(@distance).ToString();

F. パラメーターに 0 を上回る値を指定して、BufferWithCurves() を呼び出す

次の例では、CurvePolygon インスタンスが返されます。

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(2).ToString();

G. 有効な文字列パラメーターを渡す

次の例では、前と同じように CurvePolygon インスタンスが返されますが、文字列パラメーターをメソッドに渡します。

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves('2').ToString();

H. 無効な文字列パラメーターを渡す

次の例では、エラーがスローされます。

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)' 
 SELECT @g.BufferWithCurves('a').ToString();

前の 2 つの例では、文字列リテラルを BufferWithCurves() メソッドに渡しています。 最初の方の例は、文字列リテラルを数値に変換できるので機能します。 一方、2 番目の例では ArgumentException がスローされます。

I. MultiPoint インスタンスに対して BufferWithCurves() を呼び出す

次の例では、2 つの GeometryCollection インスタンスと 1 つの CurvePolygon インスタンスが返されます。

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.BufferWithCurves(1).ToString(); 
 SELECT @g.BufferWithCurves(1.5).ToString(); 
 SELECT @g.BufferWithCurves(1.6).ToString();

最初の 2 つの SELECT ステートメントでは、distance が (1 1) と (1 4) の 2 つの地点の距離の 1/2 以下であるため、GeometryCollection インスタンスが返されます。 3 番目の SELECT ステートメントでは、(1 1) と (1 4) の 2 つの地点のバッファーに格納されたインスタンスが重なるため、CurvePolygon インスタンスが返されます。

参照

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