共用方式為


BufferWithTolerance (geometry 資料類型)

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

語法

.BufferWithTolerance ( distance, tolerance, relative )

引數

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

  • tolerance
    這是 float 運算式,它會指定緩衝距離的容錯。

    「容錯」(Tolerance) 指的是傳回之線性近似值之理想緩衝距離的最大變異。

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

  • relative
    這是指定 tolerance 值為相對或絕對的 bit。 如果為 'TRUE' 或 1,則容錯為相對值,而且會計算為 tolerance 參數與執行個體週框方塊之直徑的乘積。 如果為 'FALSE' 或 0,則容錯為絕對值,而且 tolerance 值是傳回之線性近似值之理想緩衝距離的最大絕對變異值。

傳回類型

SQL Server 傳回類型:geometry

CLR 傳回類型: SqlGeometry

例外狀況

tolerance 參數必須大於零。 如果 tolerance <= 0,則會擲回 System.ArgumentOutOfRangeException。

[!附註]

因為 tolerance 是 float 類型,如果指定非常小的容錯值,由於浮點類型的捨入問題,可能會擲回 System.Runtime.InteropServices.COMException。

備註

如果 distance > 0,則傳回 Polygon 或 MultiPolygon 執行個體。

[!附註]

因為 distance 是 float,所以極小的值在計算中可等同於零。 發生這種狀況時,會傳回呼叫 geometry 執行個體的副本。 請參閱<float 和 real (Transact-SQL)>。

如果 distance = 0,則會傳回呼叫 geometry 執行個體的副本。

如果 distance < 0,則

  • 當執行個體的維度是 0 或 1,則傳回空的 GeometryCollection 執行個體。

  • 當執行個體的維度是 2 或以上,則傳回負數緩衝。

    [!附註]

    負數緩衝也可能會建立空的 GeometryCollection 執行個體。

負數緩衝會移除 geometry 執行個體界限之給定距離內的所有點。

理論上和計算的緩衝之間的誤差為 max(tolerance, extents * 1.E-7),其中 tolerance 是 tolerance 參數的值。 如需有關 extents 的詳細資訊,請參閱<geometry 資料類型方法參考>。

範例

下列範例會建立 Point 執行個體,並使用 BufferWithTolerance() 來取得其周圍的約略緩衝。

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();

請參閱

參考

STBuffer (geometry 資料類型)

其他資源

幾何例項上擴充的方法