次の方法で共有


CurveToLineWithTolerance (geometry データ型)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

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

構文

  
.CurveToLineWithTolerance ( tolerance, relative )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

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

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

例外

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

解説

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

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

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

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

次の例では、許容値の設定によって、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. 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 インスタンスを使用し、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 インスタンスに対してメソッドを使用する

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

参照

CurveToLineWithTolerance (geography データ型)
STCurveToLine (geometry データ型)