Compartir a través de


CurveToLineWithTolerance (tipo de datos Geometry)

Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada

Devuelve una aproximación poligonal de una instancia de geometry que contiene segmentos de arco circulares.

Sintaxis

  
.CurveToLineWithTolerance ( tolerance, relative )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

tolerance
Expresión double que define el error máximo entre el segmento del arco circular original y su aproximación lineal.

relative
Expresión bool que indica si se va a usar un máximo relativo para la desviación. Cuando relative está establecido en falso (0), se establece un máximo absoluto para la desviación que puede tener una aproximación lineal. Cuando relative está establecido en true (1), la tolerancia se calcula como un producto del parámetro de tolerancia y el diámetro del cuadro de límite para el objeto espacial.

Tipos de valor devuelto

Tipo de valor devuelto de SQL Server: geometry

Tipo de valor devuelto de CLR: SqlGeometry

Excepciones

Al establecer la tolerancia <= 0 se produce una excepción ArgumentOutOfRange.

Comentarios

Este método puede especificar una cantidad de tolerancia a errores para el resultado LineString que se obtiene.

En la siguiente tabla se muestra el tipo de instancia que CurveToLineWithTolerance() devuelve para varios tipos.

Tipo de la instancia que hace la llamada Tipo espacial devuelto
Instancia de geometría vacía Instancia de GeometryCollection vacía
Point y MultiPoint Instancia de Point
MultiPoint Instancia de Point o de MultiPoint
CircularString, CompoundCurve o LineString Instancia de LineString
MultiLineString Instancia de LineString o MultiLineString
CurvePolygon y Polygon Instancia de Polygon
MultiPolígono Instancia de Polygon o MultiPolygon
GeometryCollection con una instancia única que no contiene un segmento de arco circular La instancia que se encuentra en GeometryCollection determina el tipo de instancia que se devuelve.
GeometryCollection con una sola instancia de arco de segmento circular unidimensional (CircularString, CompoundCurve) Instancia de LineString
GeometryCollection con una sola instancia de arco de segmento circular bidimensional (CurvePolygon) Instancia de Polygon
GeometryCollection con varias instancias unidimensionales Instancia de MultiLineString
GeometryCollection con varias instancias bidimensionales Instancia de MultiPolygon
GeometryCollection con varias instancias de distintas dimensiones Instancia de GeometryCollection

Ejemplos

A. Utilizar valores de tolerancia diferentes en una instancia de CircularString

En el siguiente ejemplo se muestra cómo establecer la tolerancia afecta a la instancia de LineString devuelta desde una instancia 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. Utilizar el método en una instancia de MultiLineString que contiene un LineString

En el siguiente ejemplo se muestra lo que se devuelve de una instancia de MultiLineString que solo contiene una instancia de LineString:

 DECLARE @g geometry; 
 SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))'); 
 SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

C. Utilizar el método en una instancia de MultiLineString que contiene varios LineString

En el siguiente ejemplo se muestra lo que se devuelve de una instancia de MultiLineString que contiene más de una instancia de 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. Establecer relative en true para invocar una instancia de CurvePolygon

En el siguiente ejemplo se usa una instancia de CurvePolygon para llamar a CurveToLineWithTolerance() con relative establecido en true:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

E. Usar el método en una instancia de GeometryCollection

En el ejemplo siguiente se llama a CurveToLineWithTolerance() en un elemento GeometryCollection que contiene una instancia de CurvePolygon bidimensional y una instancia de CircularString unidimensional. CurveToLineWithTolerance() convierte los dos tipos de segmento de arco circular en tipos de segmento de línea y los devuelve en 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();

Vea también

CurveToLineWithTolerance (tipo de datos Geography)
STCurveToLine (tipo de datos de geometría)