Compartilhar via


CurveToLineWithTolerance (tipo de dados geometry)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric

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 deve ser usado. Quando o relativo é definido como falso (0), um máximo absoluto é definido para o desvio que um aproximado linear poderá ter. Quando o relativo é definido como verdadeiro (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

Tipo de retorno do SQL Server: geometry

Tipo de retorno do CLR: SqlGeometry

Exceções

A configuração da tolerância <= 0 gera uma exceção ArgumentOutOfRange.

Comentários

Esse 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 instância de segmento único de arco circular unidimensional (CircularString, CompoundCurve) Instância de LineString
GeometryCollection com uma instância de segmento único 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 seguinte exemplo 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 relativo 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

CurveToLineWithTolerance (tipo de dados de geografia)
STCurveToLine (tipo de dados geometry)