円弧を含む geometry インスタンスの多角形近似を返します。
構文
.CurveToLineWithTolerance ( tolerance, relative )
引数
tolerance
元の円弧とその線形近似の間の最大誤差を定義する double 式です。relative
偏差に相対最大値を使用するかどうかを示す bool 式です。 relative を false (0) に設定すると、線形近似で許容される偏差に絶対最大値が設定されます。 relative を true (1) に設定すると、tolerance は tolerance パラメーターと空間オブジェクトに外接する四角形の直径の積として計算されます。
戻り値の型
SQL Server の戻り値の型: geometry
CLR の戻り値の型: SqlGeometry
例外
tolerance <= 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 インスタンス |
円弧を含まないインスタンスを 1 つ持つ GeometryCollection |
GeometryCollection に含まれているインスタンスによって、返されるインスタンスの型が決まります。 |
1 次元の円弧インスタンス (CircularString、CompoundCurve) を 1 つ持つ GeometryCollection |
LineString インスタンス |
2 次元の円弧インスタンス (CurvePolygon) を 1 つ持つ GeometryCollection |
Polygon インスタンス |
1 次元のインスタンスを複数持つ GeometryCollection |
MultiLineString インスタンス |
2 次元のインスタンスを複数持つ GeometryCollection |
MultiPolygon インスタンス |
次元の異なるインスタンスを複数持つ GeometryCollection |
GeometryCollection インスタンス |
使用例
A. CircularString インスタンスに対して異なる tolerance 値を使用する
次の例では、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 インスタンスに対してこのメソッドを使用する
次の例では、LineString インスタンスを 1 つだけ含む 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 インスタンスに対してメソッドを使用する
次の例では、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();