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)