次の方法で共有


CurveToLineWithTolerance (geometry データ型)

円弧を含む 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();

関連項目

参照

CurveToLineWithTolerance (geography データ型)

STCurveToLine (geometry データ型)