共用方式為


BufferWithTolerance (geography 資料類型)

適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體

傳回 geometric 物件,此物件表示與 geography 執行個體之間的距離小於或等於指定值 (允許有指定的容錯) 之所有點值的聯集。

這個 geography 資料類型方法可支援 FullGlobe 執行個體或大於半球的空間執行個體。

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

distance
這是指定與 geography 執行個體之間距離的 float 運算式,將會從此執行個體的周圍計算緩衝。

緩衝區最大距離不能超過 0.999 * π * minorAxis * minorAxis / majorAxis (~0.999 * 1/2 的地球圓周) 或完整地球。

tolerance
這是 float 運算式,用來指定緩衝距離的容錯。

tolerance 值是傳回之線性近似值的理想緩衝距離最大變異值。

例如,點的理想緩衝距離是圓形,但此距離必須由多邊形來模擬。 當 tolerance 越小時,多邊形就會有越多的點。 這樣會增加結果的複雜度,但可減少錯誤。

最小限制為 0.1% 的距離,而且小於該值的和任何容錯將會四捨五入至最小限制。

relative
這是 bit,用來指定 tolerance 值是相對的還是絕對的。 如果值為 'TRUE' 或 1,則 tolerance 為相對值。 此值為 tolerance 參數與角度範圍 * 橢圓體赤道半徑的乘積。 如果值為 'FALSE' 或 0,則 tolerance 為絕對值。 此 tolerance 值是傳回之線性近似值的理想緩衝距離絕對最大變異值。

傳回型別

SQL Server 傳回類型:geography

CLR 傳回類型:SqlGeography

備註

如果 distance 不是數字 (NAN),或如果 distance 是正或負的無限值,則這個方法會擲回 ArgumentException。 如果 tolerance 是零 (0) 而不是數字 (NaN) 或正的或負的無限值,則這個方法也會擲回 ArgumentException

在某些情況下,STBuffer() 會傳回 FullGlobe 執行個體,例如,當緩衝距離大於兩極至赤道距離時,STBuffer() 會在兩極傳回 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();  

另請參閱

STBuffer (geography 資料類型)
地理例項上擴充的方法