Compartir a través de


BufferWithCurves (tipo de datos Geometry)

Devuelve una instancia de geometry que representa el conjunto de todos los puntos cuya distancia desde la instancia de geometry que realiza la llamada es menor o igual que el parámetro distance.

Sintaxis

.BufferWithCurves ( distance )

Argumentos

  • distance
    Es un valor float que indica la distancia máxima a la que pueden estar los puntos que forman el búfer de la instancia de geometry.

Tipos de valor devueltos

SQL Server tipo de valor devuelto: geometry

Tipo de valor devuelto de CLR: SqlGeometry

Excepciones

Los siguientes criterios producirán una ArgumentException.

  • No se pasa ningún parámetro al método, como @g.BufferWithCurves()

  • Se pasa al método un parámetro no numérico, como @g.BufferWithCurves('a')

  • NULL se pasa al método, como @g.BufferWithCurves(NULL)

Comentarios

En la siguiente ilustración se muestra un ejemplo de una instancia de geometría devuelta por este método.

BufferedCurve

En la siguiente tabla se muestran los resultados devueltos para distintos valores de distancia.

Valor de distancia

Dimensiones de tipo

Tipo espacial devuelto

distancia < 0

Cero o uno

Instancia de GeometryCollection vacía

distancia < 0

Dos o más

Instancia de CurvePolygon o instancia de GeometryCollection con un búfer negativo

[!NOTA]

Un búfer negativo puede crear una instancia de GeometryCollection vacía

distancia = 0

Todas las dimensiones

Copia de la instancia de geometry que hace la llamada

distancia > 0

Todas las dimensiones

instancia de CurvePolygon o GeometryCollection

[!NOTA]

Como distance es un valor float, un valor muy pequeño puede ser igual a cero en los cálculos. Si sucede esto, se devuelve una copia de la instancia de geometry que hace la llamada. Vea float y real (Transact-SQL).

Un búfer negativo quita todos los puntos que se encuentran dentro de la distancia especificada del límite de la geometría. En la siguiente ilustración se muestra un búfer negativo como el área del círculo sombreada en claro. La línea de puntos es el límite del polígono original y la línea continua es el límite del polígono resultante.

Si se pasa al método un parámetro string , se convertirá en un valor float o producirá una ArgumentException.

Ejemplos

A.Llamada a BufferWithCurves() con un valor de parámetro < 0 en una instancia de geometría de una dimensión

En el siguiente ejemplo se devuelve una instancia de GeometryCollection vacía:

DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves(-1).ToString();

B.Llamada a BufferWithCurves() con un valor de parámetro < 0 en una instancia de geometría de dos dimensiones

En el siguiente ejemplo se devuelve una instancia de CurvePolygon con un búfer negativo:

DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

SELECT @g.BufferWithCurves(-1).ToString()

C.Llamada a BufferWithCurves() con un valor de parámetro < 0 que devuelve una instancia de GeometryCollection vacía

En el siguiente ejemplo se muestra lo que sucede cuando el parámetro distance es igual a -2:

DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

SELECT @g.BufferWithCurves(-2).ToString();

Esta instrucción SELECT devuelve GEOMETRYCOLLECTION EMPTY

D.Llamada a BufferWithCurves() con un valor de parámetro = 0

En el siguiente ejemplo se devuelve una copia de la instancia de geometry que realiza la llamada:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves(0).ToString();

E.Llamada a BufferWithCurves() con un valor de parámetro distinto de cero que es sumamente pequeño

En el siguiente ejemplo también se devuelve una copia de la instancia de geometry que realiza la llamada:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';

DECLARE @distance float = 1e-20;

SELECT @g.BufferWithCurves(@distance).ToString();

F.Llamada a BufferWithCurves() con un valor de parámetro > 0

En el ejemplo siguiente se devuelve una instancia de CurvePolygon:

DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves(2).ToString();

G.Se pasa un parámetro de cadena válido

En el siguiente ejemplo se devuelve la misma instancia de CurvePolygon mencionada anteriormente, pero se pasa al método un parámetro de cadena:

DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves('2').ToString();

H.Se pasa un parámetro de cadena no válido

En el siguiente ejemplo se producirá un error:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'

SELECT @g.BufferWithCurves('a').ToString();

Observe que en los dos ejemplos anteriores se pasa un literal de cadena al método BufferWithCurves(). El primer ejemplo funciona porque el literal de cadena se puede convertir en un valor numérico. Sin embargo, el segundo ejemplo produce una ArgumentException.

I.Llamada a BufferWithCurves() en una instancia de tipo MultiPoint

En el siguiente ejemplo se devuelven dos instancias de GeometryCollection y una de CurvePolygon:

DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))';

SELECT @g.BufferWithCurves(1).ToString();

SELECT @g.BufferWithCurves(1.5).ToString();

SELECT @g.BufferWithCurves(1.6).ToString();

Las primeras dos instrucciones SELECT devuelven una instancia de GeometryCollection porque el parámetro distance es menor o igual que la mitad de la distancia entre los dos puntos (1 1) y (1 4). La tercera instrucción SELECT devuelve una instancia de CurvePolygon porque las instancias almacenadas en búfer de los dos puntos (1 1) y (1 4) se superponen.

Vea también

Otros recursos

Métodos extendidos en instancias de geometry