適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
円弧を含む geography インスタンスの多角形近似を返します。
Syntax
.CurveToLineWithTolerance( tolerance, relative )
Arguments
tolerance
元の円弧とその線形近似の間の最大誤差を定義する double 式です。
relative
偏差に相対最大値を使用するかどうかを示す bool 式です。 relative が false (0) の場合、線形近似で許容される偏差に絶対最大値が設定されます。 relative が true (1) の場合、tolerance は tolerance パラメーターと空間オブジェクトに外接する四角形の直径の積として計算されます。
戻り値の型
SQL Server 戻り値の型: geography
CLR の戻り値の型: SqlGeography
Exceptions
tolerance <= 0 を設定すると、< 例外がスローされます。
Remarks
このメソッドでは、結果として得られる LineString に許容誤差量を指定できます。
CurveToLineWithTolerance メソッドでは、CircularString または CompoundCurve インスタンスに LineString インスタンスが返され、CurvePolygon インスタンスに Polygon インスタンスが返されます。
Examples
A. CircularString インスタンスに対して異なる tolerance 値を使用する
次の例は、許容値の設定が、LineString インスタンスから返されるCircularString インスタンスに与える影響を示しています。
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 インスタンスを使用し、CurveToLineWithTolerance() を true に設定して を呼び出します。
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();