Compartir a través de


BufferWithTolerance (tipo de datos geometry)

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, posibilitando así una tolerancia especificada.

Sintaxis

.BufferWithTolerance (distance,tolerance,relative)

Argumentos

  • distance
    Es una expresión float que especifica la distancia desde la instancia de geometry alrededor de la cual se puede calcular el búfer.

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

    Tolerancia 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 de búfer ideal para la aproximación lineal devuelta.

Tipos de valores devueltos

SQL Server Tipo de valor devuelto de SQL Server: geometry

Tipo de valor devuelto de CLR: SqlGeometry

Comentarios

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 calculado y el teórico es max(tolerance, extents * 1.E-7) donde tolerance es el valor del parámetro tolerance. Para obtener más información sobre el método extents, vea Referencia de los métodos 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();