CurveToLineWithTolerance (geometry 資料類型)
適用於:SQL Server
Azure SQL 資料庫 Azure SQL 受控執行個體
傳回包含圓弧線段之 geometry 執行個體的多邊形近似值。
Syntax
.CurveToLineWithTolerance ( tolerance, relative )
注意
若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
tolerance
這是 double 運算式,用來定義原始圓弧線段與其線性近似值之間的最大誤差。
relative
這是一個 bool 運算式,用來指出是否要使用偏差的相對最大值。 如果 relative 設為 false (0),則會設定線性近似值的偏差絕對最大值。 如果 relative 設為 true (1),則會以容錯參數與空間物件週框方塊之直徑的乘積來計算容錯。
傳回型別
SQL Server 傳回類型:geometry
CLR 傳回類型:SqlGeometry
例外狀況
若容錯設定為 ArgumentOutOfRange
=0,將會擲回 < 例外狀況。
備註
此方法可以指定結果 LineString 的誤差容許範圍。
下表顯示 CurveToLineWithTolerance()
為各種不同類型所傳回的執行個體類型。
叫用執行個體類型 | 傳回的空間類型 |
---|---|
空白 geometry 執行個體 | 空的 GeometryCollection 執行個體 |
Point 和 MultiPoint | Point 執行個體 |
MultiPoint | Point 或 MultiPoint 執行個體 |
CircularStringCompoundCurve 或 LineString | LineString 執行個體 |
MultiLineString | LineString 或 MultiLineString 執行個體 |
CurvePolygon 和 Polygon | Polygon 執行個體 |
MultiPolygon | Polygon 或 MultiPolygon 執行個體 |
具有不含圓弧線段之單一執行個體的 GeometryCollection | GeometryCollection 中包含的執行個體會決定所傳回的執行個體類型。 |
具有單一一維圓弧線段執行個體 (CircularString、CompoundCurve) 的 GeometryCollection | LineString 執行個體 |
具有單一二維圓弧線段執行個體 (CurvePolygon) 的 GeometryCollection | Polygon 執行個體 |
具有多個一維執行個體的 GeometryCollection | MultiLineString 執行個體 |
具有多個二維執行個體的 GeometryCollection | MultiPolygon 執行個體 |
具有多個不同維度之執行個體的 GeometryCollection | GeometryCollection 執行個體 |
範例
A. 在 CircularString 執行個體上使用不同的容錯值
下列範例示範設定容錯如何影響從 CircularString
執行個體傳回的 LineString
執行個體:
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)');
SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();
B. 在包含一個 LineString 的 MultiLineString 執行個體上使用此方法
下列範例示範從只包含一個 MultiLineString
執行個體的 LineString
執行個體傳回的資料:
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
C. 在包含多個 LineString 的 MultiLineString 執行個體上使用此方法
下列範例示範從包含多個 MultiLineString
執行個體的 LineString
執行個體傳回的資料:
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9),(4 4, 9 18))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
D. 為叫用 CurvePolygon 執行個體,將 relative 設為 true
下列範例使用 CurvePolygon
執行個體,在 relative 設為 true 時呼叫 CurveToLineWithTolerance()
:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.CurveToLineWithTolerance(.5,1).ToString();
E. 在 GeometryCollection 執行個體上使用此方法
下列範例會在包含二維 CurveToLineWithTolerance()
執行個體和一維 GeometryCollection
執行個體的 CurvePolygon
上呼叫 CircularString
。 CurveToLineWithTolerance()
會將這兩種圓弧線段類型轉換成線段類型,並以 GeometryCollection
類型傳回它們。
DECLARE @g geometry;
SET @g = geometry::Parse('GEOMETRYCOLLECTION(CURVEPOLYGON( COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), (4 2, 0 2))), CIRCULARSTRING(4 4, 8 6, 9 5))');
SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.1, 0).ToString();
另請參閱
CurveToLineWithTolerance (geography 資料類型)
STCurveToLine (geometry 資料類型)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應