傳回包含圓弧線段之 geometry 執行個體的多邊形近似值。
語法
.CurveToLineWithTolerance ( tolerance, relative )
引數
tolerance
這是 double 運算式,定義介於原始圓弧線段及其線性近似值之間的最大錯誤。relative
這是 bool 運算式,指出是否要使用偏差的相對最大值。 如果 relative 設為 false (0),則會設定線性近似值的偏差絕對最大值。 如果 relative 設為 true (1),則會以容錯參數與空間物件週框方塊之直徑的乘積來計算容錯。
傳回類型
SQL Server 傳回類型:geometry
CLR 傳回類型:SqlGeometry
例外狀況
如果容錯設為 <= 0,則會擲回 ArgumentOutOfRange 例外狀況。
備註
這個方法可以指定結果 LineString 的容錯量。
下表顯示 CurveToLineWithTolerance() 為各種不同類型所傳回的執行個體類型。
叫用執行個體類型 |
傳回的空間類型 |
|---|---|
空白 geometry 執行個體 |
空的 GeometryCollection 執行個體 |
Point 及MultiPoint |
Point 執行個體 |
MultiPoint |
Point 或 MultiPoint 執行個體 |
CircularString、CompoundCurve 或 LineString |
LineString 執行個體 |
MultiLineString |
LineString 或 MultiLineString 執行個體 |
CurvePolygon 及Polygon |
Polygon 執行個體 |
MultiPolygon |
Polygon 或 MultiPolygon 執行個體 |
GeometryCollection,具有一個未包含圓弧線段的執行個體 |
GeometryCollection 中包含的執行個體決定傳回的執行個體類型。 |
GeometryCollection,具有一個一維圓弧線段執行個體 (CircularString、CompoundCurve) |
LineString 執行個體 |
GeometryCollection,具有一個二維圓弧線段執行個體 (CurvePolygon) |
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 執行個體上使用此方法
下列範例示範從只包含一個 LineString 執行個體的 MultiLineString 執行個體傳回的資料:
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
C.在包含多個 LineString 的 MultiLineString 執行個體上使用此方法
下列範例示範從包含多個 LineString 執行個體的 MultiLineString 執行個體傳回的資料:
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 執行個體上使用此方法
下列範例會在包含二維 CurvePolygon 執行個體和一維 CircularString 執行個體的 GeometryCollection 上呼叫 CurveToLineWithTolerance()。 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();