BufferWithCurves (geography 資料類型)
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體
傳回 geography 執行個體,表示與呼叫 geography 執行個體相距的距離小於或等於 distance 參數的所有點的集合。
Syntax
.BufferWithCurves ( distance )
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 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 | 二維或以上 | 具有負數緩衝的 CurvePolygon 或 GeometryCollection 執行個體。 注意:負數緩衝可能會建立空白 GeometryCollection |
distance = 0 | 所有維度 | 叫用 geography 執行個體的副本 |
distance > 0 | 所有維度 | CurvePolygon 或 GeometryCollection 執行個體 |
注意
因為 distance 是 float,所以非常小的值在計算中可等同於零。 發生這種狀況時,會傳回呼叫 geography 執行個體的副本。
如果將 string 參數傳遞給此方法,它就會轉換成 float 或擲回 ArgumentException
。
範例
A. 在一維地理位置執行個體上,以參數值 < 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. 在二維地理位置執行個體上,以參數值 < 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. 呼叫 BufferWithCurves() 時,使用參數值 < 0,會傳回空的 GeometryCollection
下列範例示範當 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. 呼叫 BufferWithCurves() 時,使用參數值 > 0
下列範例會傳回 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
。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應