CurveToLineWithTolerance (geometry データ型)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

円弧を含む geometry インスタンスの多角形近似を返します。

Syntax

  
.CurveToLineWithTolerance ( tolerance, relative )  

Arguments

tolerance
元の円弧とその線形近似の間の最大誤差を定義する double 式です。

relative
偏差に相対最大値を使用するかどうかを示す bool 式です。 relative を false (0) に設定すると、線形近似で許容される偏差に絶対最大値が設定されます。 relative を true (1) に設定すると、tolerance は tolerance パラメーターと空間オブジェクトに外接する四角形の直径の積として計算されます。

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

Exceptions

tolerance <= 0 に設定すると、ArgumentOutOfRange 例外がスローされます。

Remarks

このメソッドを使用すると、結果として得られる LineString の許容誤差量を指定できます。

次の表には、さまざまな種類の CurveToLineWithTolerance() によって返されるインスタンスの種類を示しています。

呼び出し元のインスタンスの種類 返される空間の種類
空の geometry インスタンス 空の GeometryCollection インスタンス
Point と MultiPoint 点 インスタンス
MultiPoint Point または MultiPoint インスタンス
CircularString、CompoundCurve、または LineString LineString インスタンス
MultiLineString LineString または MultiLineString インスタンス
CurvePolygon と Polygon ポリゴン インスタンス
MultiPolygon Polygon または MultiPolygon インスタンス
円弧を含まないインスタンスを 1 つ持つ GeometryCollection GeometryCollection に含まれているインスタンスによって、返されるインスタンスの型が決まります。
1 次元の円弧セグメント インスタンス (CircularString、CompoundCurve) を 1 つ持つ GeometryCollection LineString インスタンス
2 次元の円弧セグメント インスタンス (CurvePolygon) を 1 つ持つ GeometryCollection ポリゴン インスタンス
1 次元インスタンスを複数持つ GeometryCollection MultiLineString インスタンス
2 次元のインスタンスを複数持つ GeometryCollection マルチポリゴン インスタンス
次元の異なるインスタンスを複数持つ GeometryCollection GeometryCollection インスタンス

Examples

A. CircularString インスタンスに対して異なる tolerance 値を使用する

次の例は、許容値の設定が、LineString インスタンスから返されるCircularString インスタンスに与える影響を示しています。

 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. 1 つの LineString を含む MultiLineString インスタンスに対してこのメソッドを使用する

次の例では、MultiLineString インスタンスを 1 つだけ含む 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 インスタンスを使用し、CurveToLineWithTolerance() を true に設定して を呼び出します。

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

E. GeometryCollection インスタンスに対してメソッドを使用する

次の例では、2 次元の CurveToLineWithTolerance() インスタンスと 1 次元の 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();