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();