Freigeben über


CurveToLineWithTolerance (geometry-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt eine polygonale Näherung einer Instanz von geometry mit Kreisbogensegmenten zurück.

Syntax

  
.CurveToLineWithTolerance ( tolerance, relative )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

tolerance
Ein double -Ausdruck, der die maximalen Fehler zwischen dem ursprünglichen Kreisbogensegment und der linearen Näherung definiert.

relative
Ein bool -Ausdruck, der angibt, ob ein relatives Maximum für die Abweichung verwendet werden soll. Wenn der relativer Wert auf false (0) festgelegt wird, wird ein absolutes Maximum für die Abweichung verwendet, die eine lineare Näherung aufweisen kann. Wenn der relative Wert auf true (1) festgelegt wird, wird die Toleranz als Produkt des tolerance-Parameters und des Durchmessers des Begrenzungsrahmens für das räumliche Objekt berechnet.

Rückgabetypen

SQL Server-Rückgabetyp: geometry

CLR-Rückgabetyp: SqlGeometry

Ausnahmen

Wenn Sie die Toleranz auf <= 0 festlegen, wird eine ArgumentOutOfRange-Ausnahme ausgelöst.

Bemerkungen

Mit dieser Methode kann ein Umfang für die Fehlertoleranz in der resultierenden LineStringangegeben werden.

In der folgenden Tabelle wird der von CurveToLineWithTolerance()zurückgegebene Instanzentyp für verschiedene Typen angezeigt.

Aufgerufener Instanzentyp Räumlicher Rückgabetyp
Leere geometry-Instanz Leere Instanz von GeometryCollection
Point und MultiPoint Point -Instanz
MultiPoint Instanz vonPoint oder MultiPoint
CircularString, CompoundCurveoder LineString LineString -Instanz
MultiLineString Instanz vonLineString oder MultiLineString
CurvePolygon und Polygon Polygon -Instanz
MultiPolygon Instanz vonPolygon oder MultiPolygon
GeometryCollection mit einer einzelnen Instanz, die kein Kreisbogensegment enthält Die Instanz, die im GeometryCollection enthalten ist, bestimmt den Typ der Instanz, die zurückgegeben wird.
GeometryCollection mit einer einzelnen eindimensionalen Instanz eines Kreisbogensegments (CircularString, CompoundCurve) LineString -Instanz
GeometryCollection mit einer einzelnen zweidimensionalen Instanz eines Kreisbogensegments (CurvePolygon) Polygon -Instanz
GeometryCollection mit mehreren eindimensionalen Instanzen MultiLineString -Instanz
GeometryCollection mit mehreren zweidimensionalen Instanzen MultiPolygon -Instanz
GeometryCollection mit mehreren Instanzen verschiedener Dimensionen GeometryCollection -Instanz

Beispiele

A. Verwenden verschiedener Toleranzwerte in einer CircularString-Instanz

Im folgenden Beispiel wird gezeigt, wie sich das Festlegen der Toleranz auf eine Instanz von LineStringauswirkt, die von einer Instanz von CircularString zurückgegeben wird:

 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. Verwenden der Methode in einer MultiLineString-Instanz mit einem LineString

Im folgenden Beispiel wird die Rückgabe einer Instanz von MultiLineString gezeigt, die nur eine LineString -Instanz enthält:

 DECLARE @g geometry; 
 SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

C. Verwenden der Methode in einer MultiLineString-Instanz mit mehreren LineStrings

Im folgenden Beispiel wird die Rückgabe einer Instanz von MultiLineString gezeigt, die mehrere LineString -Instanzen enthält:

 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: Festlegen des relativen Werts für eine aufrufende CurvePolygon-Instanz auf true

Im folgenden Beispiel wird eine Instanz von CurvePolygon verwendet, um CurveToLineWithTolerance() mit relative und dem Wert true aufzurufen:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

E. Verwenden der Methode in einer GeometryCollection-Instanz

Im folgenden Beispiel wird CurveToLineWithTolerance() in einer GeometryCollection mit einer zweidimensionalen Instanz von CurvePolygon und einer eindimensionalen Instanz von CircularString aufgerufen. CurveToLineWithTolerance() wandelt die beiden Kreisbogensegmenttypen in Liniensegmenttypen um und gibt diese in einem GeometryCollection-Typ zurück.

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

Weitere Informationen

CurveToLineWithTolerance (geography-Datentyp)
STCurveToLine (geometry-Datentyp)