Condividi tramite


CurveToLineWithTolerance (tipo di dati geometry)

Restituisce un'approssimazione poligonale di un'istanza geometry che contiene 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 utilizzare 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

SQL Server tipo 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 sola istanza di segmento di arco circolare unidimensionale (CircularString, CompoundCurve)

Istanza LineString

GeometryCollection con una sola 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

A.Utilizzo di valori di tolleranza diversi in un'istanza CircularString

Nell'esempio seguente viene illustrato 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 utilizzata 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();

Vedere anche

Riferimento

CurveToLineWithTolerance (tipo di dati geography)

STCurveToLine (tipo di dati geometry)