Partilhar via


CurveToLineWithTolerance (tipo de dados geometry)

Retorna uma aproximação poligonal de uma instância de geometry que contém segmentos de arco circulares.

Sintaxe

.CurveToLineWithTolerance ( tolerance, relative )

Argumentos

  • tolerance
    É uma expressão double que define o erro máximo entre o segmento de arco circular original e sua aproximação linear.

  • relative
    É uma expressão bool que indica se um máximo relativo para o desvio deverá ser usado ou não. Quando o relativo é definido como false (0), um máximo absoluto é definido para o desvio que um aproximado linear poderá ter. Quando o relativo é definido como true (1), a tolerância é calculada como um produto do parâmetro de tolerância e do diâmetro da caixa delimitadora do objeto espacial.

Tipos de retorno

SQL Server tipo de retorno: geometry

Tipo de retorno CLR: SqlGeometry

Exceções

A definição da tolerância <= 0 lança uma exceção ArgumentOutOfRange.

Comentários

Este método pode especificar uma quantidade de tolerância de erro para a LineString resultante.

A tabela a seguir mostra o tipo de instância retornado por CurveToLineWithTolerance()para vários tipos.

Invocando tipo de instância

Tipo espacial retornado

instância de geometry vazia

Instância de GeometryCollection vazia

Point e MultiPoint

Instância de Point

MultiPoint

Instância de Point ou MultiPoint

CircularString, CompoundCurve ou LineString

Instância de LineString

MultiLineString

Instância de LineString ou MultiLineString

CurvePolygon e Polygon

Instância de Polygon

MultiPolygon

Instância de Polygon ou MultiPolygon

GeometryCollection com uma única instância que não contém um segmento de arco circular

A instância contida na GeometryCollection determina o tipo de instância retornada.

GeometryCollection com uma única instância de segmento de arco circular unidimensional (CircularString, CompoundCurve)

Instância de LineString

GeometryCollection com uma única instância de segmento de arco circular bidimensional (CurvePolygon)

Instância de Polygon

GeometryCollection com várias instâncias unidimensionais

instância de MultiLineString

GeometryCollection com várias instâncias bidimensionais

instância de MultiPolygon

GeometryCollection com várias instâncias de dimensões diferentes

Instância de GeometryCollection

Exemplos

A.Usando valores de tolerância diferentes em uma instância de CircularString

O exemplo a seguir mostra como a definição da tolerância afeta a instância de LineString retornada de uma instância de 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.Usando o método em uma instância de MultiLineString que contém uma LineString

O exemplo a seguir mostra o que é retornado de uma instância de MultiLineString que só contém uma instância de LineString:

DECLARE @g geometry;

SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))');

SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

C.Usando o método em uma instância de MultiLineString que contém várias LineStrings

O exemplo a seguir mostra o que é retornado de uma instância de MultiLineString que contém mais de uma instância 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.Definindo o relativo como true para uma instância de CurvePolygon de invocação

O exemplo a seguir usa uma instância de CurvePolygon para chamar CurveToLineWithTolerance() com relative definido como true:

DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

E.Usando o método em uma instância de GeometryCollection

O exemplo a seguir chama CurveToLineWithTolerance() em um GeometryCollection que contém uma instância de CurvePolygon bidimensional e uma instância de CircularString unidimensional. CurveToLineWithTolerance() converte os dois tipos de segmento de arco circular para revestir tipos de segmento e os retorna em um 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();

Consulte também

Referência

CurveToLineWithTolerance (tipo de dados de geografia)

STCurveToLine (tipo de dados geometry)