BufferWithCurves (geography 資料類型)

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure SQL 受控執行個體

傳回 geography 執行個體,表示與呼叫 geography 執行個體相距的距離小於或等於 distance 參數的所有點的集合。

Syntax

  
.BufferWithCurves ( distance )  

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

distance
這是 float,指出形成緩衝之點與 geography 執行個體相距的最大可能距離。

傳回型別

SQL Server傳回類型:geography

CLR 傳回類型:SqlGeography

例外狀況

下列準則會擲回 ArgumentException

  • 沒有參數傳遞至此方法,例如 @g.BufferWithCurves()

  • 非數值參數傳遞至此方法,例如 @g.BufferWithCurves('a')

  • NULL 傳遞至此方法,例如 @g.BufferWithCurves(NULL)

備註

下表顯示針對不同距離值所傳回的結果。

distance 值 維度類型 傳回的空間類型
distance < 0 零或一維 空的 GeometryCollection 執行個體
distance < 0 二維或以上 具有負數緩衝的 CurvePolygonGeometryCollection 執行個體。

注意:負數緩衝可能會建立空白 GeometryCollection
distance = 0 所有維度 叫用 geography 執行個體的副本
distance > 0 所有維度 CurvePolygonGeometryCollection 執行個體

注意

因為 distancefloat,所以非常小的值在計算中可等同於零。 發生這種狀況時,會傳回呼叫 geography 執行個體的副本。

如果將 string 參數傳遞給此方法,它就會轉換成 float 或擲回 ArgumentException

範例

A. 在一維 geography 實例上使用參數值 < 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. 在二維 geography 實例上使用參數值 < 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. 使用傳回空 GeometryCollection 的參數值 < 0 呼叫 BufferWithCurves ()

下列範例示範當 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. 以極小的非零參數值呼叫 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 呼叫 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();

請注意,上述兩個範例傳遞字串常值至 BufferWithCurves() 方法。 第一個範例可行,因為字串常值可轉換為數值。 但是,第二個範例會擲回 ArgumentException

另請參閱

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