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();