Compartir por


BufferWithTolerance (tipo de datos geometry)

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

Devuelve un objeto geométrico que representa la unión de todos los valores de puntos cuya distancia desde una instancia de geometry es menor o igual que un valor especificado, lo que posibilita una tolerancia especificada.

Sintaxis

  
.BufferWithTolerance ( distance, 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

distance
Es una expresión float que especifica la distancia desde la instancia de geometry en torno a la que se va a calcular el búfer.

tolerance
Es una expresión float que especifica la tolerancia de la distancia del búfer.

Tolerance hace referencia a la variación máxima en la distancia de búfer ideal para la aproximación lineal devuelta.

Por ejemplo, la distancia de búfer ideal de un punto es un círculo, pero un círculo debe conseguirse de forma aproximada mediante un polígono. Cuanto más pequeña sea la tolerancia, más puntos tendrá el polígono, lo que aumenta la complejidad del resultado, pero disminuye el error.

relative
Es un valor bit que especifica si el valor tolerance es relativo o absoluto. Si es TRUE o 1, la tolerancia es relativa y se calcula como el producto del parámetro tolerance por el diámetro del cuadro de límite de la instancia. Si es FALSE o 0, la tolerancia es absoluta y el valor tolerance es la variación máxima absoluta en la distancia del búfer ideal para la aproximación lineal devuelta.

Tipos de valor devuelto

Tipo de valor devuelto de SQL Server: geometry

Tipo de valor devuelto de CLR: SqlGeometry

Excepciones

El parámetro tolerance debe ser mayor que cero. Si tolerance<= 0, se produce una excepción System.ArgumentOutOfRangeException.

Nota

Puesto que tolerance es un tipo float, se puede generar una excepción System.Runtime.InteropServices.COMException si el valor dado para la tolerancia es muy pequeño, debido a problemas de redondeo con los tipos de punto flotante.

Observaciones

Cuando distance> 0, se devuelve una instancia de Polygon o MultiPolygon.

Nota

Dado que la distancia es float, un valor sumamente pequeño puede igualarse a cero en los cálculos. Cuando ocurre esto, se devuelve una copia de la instancia de geometry que llama. Consulte float y real (Transact-SQL).

Cuando distance = 0, se devuelve una copia de la instancia de geometry que llama.

Cuando distance< 0:

  • Se devuelve una instancia de GeometryCollection vacía si las dimensiones de la instancia son 0 o 1.

  • Se devuelve un búfer negativo si las dimensiones de la instancia son dos o más.

    Nota:

    Un búfer negativo también puede crear una instancia de GeometryCollection vacía.

Un búfer negativo quita todos los puntos que se encuentran dentro de la distancia especificada del límite de la instancia de geometry.

El error entre el búfer teórico y el calculado es max(tolerance, extents * 1.E-7), donde tolerance es el valor del parámetro tolerance. Para más información sobre las extensiones, vea la referencia del método del tipo de datos geometry.

Ejemplos

En el ejemplo siguiente se crea una instancia de Point y se usa BufferWithTolerance() para obtener un búfer aproximado a su alrededor.

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

Vea también

STBuffer (tipo de datos geometry)
Métodos extendidos en instancias de geometry