CurveToLineWithTolerance (geography データ型)

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

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

構文

  
.CurveToLineWithTolerance( tolerance, relative )  

引数

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

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

戻り値の型

SQL Server 戻り値の型: geography

CLR の戻り値の型: SqlGeography

例外

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

解説

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

CurveToLineWithTolerance メソッドでは、CircularString または CompoundCurve インスタンスに LineString インスタンスが返され、CurvePolygon インスタンスに Polygon インスタンスが返されます。

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

次の例では、許容値の設定によって、CircularString から返される LineString インスタンスが変化するしくみを確認できます。

DECLARE @g geography;  
SET @g = geography::Parse('CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)');  
SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();

B. 1 つの LineString を含む MultiLineString インスタンスに対してこのメソッドを使用する

次の例では、MultiLineString インスタンスを 1 つだけ含む LineString インスタンスから返される結果を示します。

DECLARE @g geography;  
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649))');  
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

C. 複数の LineString を含む MultiLineString インスタンスに対してこのメソッドを使用する

次の例では、複数の MultiLineString インスタンスを含む LineString インスタンスから返される結果を示します。

DECLARE @g geography;  
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649),(-123.358 47.653, -123.348 47.649))');  
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

D. 呼び出し元の CurvePolygon インスタンスに対して relative を true に設定する

次の例では、CurvePolygon インスタンスを使用し、relative を true に設定して CurveToLineWithTolerance() を呼び出します。

DECLARE @g geography = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658), (-122.348 47.658, -122.358 47.658, -122.358 47.653)))';  
SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

参照

Geography インスタンスの拡張メソッド