適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric SQL Database
geography インスタンスから各地点までの距離が指定した許容範囲内にある、すべての地点値の和集合を表すジオメトリック オブジェクトを返します。
この geography データ型メソッドは、半球より大きい FullGlobe インスタンスまたは空間インスタンスをサポートします。
構文
.BufferWithTolerance ( distance, tolerance, relative )
引数
distance
バッファー計算の対象となる geography インスタンスからの距離を指定する float 式です。
バッファーの最大距離は、0.999 * π * minorAxis * minorAxis / majorAxis (地球の円周の ~0.999 * 1/2) または全球を超えることはできません。
tolerance
バッファー距離の許容範囲を指定する float 式です。
理想的なバッファー距離と返される線形近似との差異の最大値が tolerance の値となります。
たとえば、ある地点の理想的なバッファー距離は円ですが、この距離は多角形で近似する必要があります。 許容範囲が小さくなるほど、多角形に含まれる点が多くなります。 この結果により結果がより複雑になりますが、誤差が最小になります。
最小値は距離の 0.1% で、それより小さい許容範囲はこの最小値に切り上げられます。
relative
tolerance の値が相対値か絶対値かを指定する bit です。 値が 'TRUE' または 1 の場合、許容範囲は相対値です。 この値は、tolerance パラメーターと、楕円の角度範囲 * の赤道半径の積です。 値が 'FALSE' または 0 の場合、許容範囲は絶対値です。 tolerance 値は、理想的なバッファー距離と返される線形近似との差異の絶対最大値になります。
戻り値の型
SQL Server 戻り値の型: geography
CLR の戻り値の型: SqlGeography
解説
distance が数値ではない (NAN) 場合、または distance が正か負の無限大の場合、このメソッドは ArgumentException をスローします。 tolerance が 0、数値ではない (NaN)、負、または正か負の無限大の場合も、このメソッドは ArgumentException をスローします。
STBuffer()
は、FullGlobe インスタンスを返すことがあります。たとえば、バッファーの距離が赤道から極地までの距離を超えている場合、STBuffer()
は 2 つの極地の FullGlobe インスタンスを返します。
このメソッドは、バッファーの距離が次の制限値を超えている場合、FullGlobe インスタンスで ArgumentException をスローします。
0.999 * π * minorAxis * minorAxis / majorAxis (~0.999 * 地球の円周の 1/2)
理論上のバッファーと計算されたバッファーの間の誤差は、max(tolerance, extents * 1.E-7) です。この tolerance は、tolerance パラメーターの値になります。 エクステントの詳細は、「geography データ型メソッド リファレンス」を参照してください。
このメソッドは正確ではありません。
例
Point
インスタンスを作成し、BufferWithTolerance()
を使用して、インスタンスの周りの大まかなバッファーを取得する例を次に示します。
DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();