CurveToLineWithTolerance (tipo di dati geometry)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric
Restituisce un'approssimazione poligonale di un'istanza geometry contenente segmenti di arco circolare.
Sintassi
.CurveToLineWithTolerance ( tolerance, relative )
Argomenti
tolerance
Espressione double che definisce l'errore massimo tra il segmento di arco circolare originale e l'approssimazione lineare.
relative
Espressione bool che indica se usare un valore massimo relativo per la deviazione. Quando il parametro relative viene impostato su false (0), viene impostato un valore massimo assoluto per la deviazione che può presentare un'approssimazione lineare. Quando il parametro relative viene impostato su true (1), la tolleranza e viene calcolata come prodotto tra il parametro della tolleranza e il diametro del rettangolo di selezione per l'oggetto spaziale.
Tipi restituiti
Tipo SQL Server restituito: geometry
Tipo CLR restituito: SqlGeometry
Eccezioni
L'impostazione della tolleranza <= 0 genera un'eccezione ArgumentOutOfRange
.
Osservazioni:
Questo metodo può specificare la tolleranza di errore per l'istanza LineString risultante.
Nella tabella seguente viene illustrato il tipo di istanza restituito da CurveToLineWithTolerance()
per vari tipi.
Tipo di istanza di chiamata | Tipo spaziale restituito |
---|---|
Istanza di geometria vuota | Istanza GeometryCollection vuota |
Point e MultiPoint | Istanza Point |
MultiPoint | Istanza Point o MultiPoint |
CircularString, CompoundCurve o LineString | Istanza LineString |
MultiLineString | Istanza LineString o MultiLineString |
CurvePolygon e Polygon | Istanza Polygon |
MultiPolygon | Istanza Polygon o MultiPolygon |
GeometryCollection con una sola istanza che non contiene un segmento di arco circolare | L'istanza contenuta in GeometryCollection determina il tipo di istanza restituita. |
GeometryCollection con una singola istanza di segmento di arco circolare unidimensionale (CircularString, CompoundCurve) | Istanza LineString |
GeometryCollection con una singola istanza di segmento di arco circolare bidimensionale (CurvePolygon) | Istanza Polygon |
GeometryCollection con più istanze unidimensionali | Istanza MultiLineString |
GeometryCollection con più istanze bidimensionali | Istanza MultiPolygon |
GeometryCollection con più istanze di dimensioni diverse | Istanza GeometryCollection |
Esempi
R. Utilizzo di valori di tolleranza diversi in un'istanza CircularString
L'esempio seguente illustra l'impatto dell'impostazione della tolleranza sull'istanza LineString
restituita da un'istanza CircularString
:
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. Utilizzo del metodo in un'istanza MultiLineString che contiene un'istanza LineString
Nell'esempio seguente viene illustrato ciò che viene restituito da un'istanza MultiLineString
che contiene una sola istanza LineString
:
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
C. Utilizzo del metodo in un'istanza MultiLineString che contiene più istanze LineString
Nell'esempio seguente viene illustrato ciò che viene restituito da un'istanza MultiLineString
che contiene più di un'istanza LineString
:
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. Impostazione del parametro relative su true per un'istanza CurvePolygon di chiamata
Nell'esempio seguente viene usata un'istanza CurvePolygon
per chiamare CurveToLineWithTolerance()
con relative impostato su true:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.CurveToLineWithTolerance(.5,1).ToString();
E. Utilizzo del metodo in un'istanza GeometryCollection
Nell'esempio seguente viene chiamato CurveToLineWithTolerance()
on a GeometryCollection
che contiene un'istanza CurvePolygon
bidimensionale e un'istanza CircularString
unidimensionale. CurveToLineWithTolerance()
converte entrambi i tipi di segmento di arco circolare in tipi di segmento lineare e li restituisce in un tipo 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();
Vedi anche
CurveToLineWithTolerance (tipo di dati geography)
STCurveToLine (tipo di dati geometry)