Compartir a través de


BufferWithCurves (tipo de datos de geografía)

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

Sintaxis

.BufferWithCurves ( distance )

Argumentos

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

Tipos de valor devueltos

SQL Server tipo de valor devuelto: geography

Tipo de valor devuelto de CLR: SqlGeography

Excepciones

En los siguientes casos, se producirá una excepción ArgumentException.

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

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

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

Comentarios

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 geography que hace la llamada

distancia > 0

Todas las dimensiones

instancia de CurvePolygon o GeometryCollection

[!NOTA]

Como distance es un valor de tipo float, un valor muy pequeño puede equivaler a cero en los cálculos. Si sucede esto, se devuelve una copia de la instancia de geography que hace la llamada.

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

Ejemplos

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

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

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';

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

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

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

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';

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 geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';

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 geography que realiza la llamada:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';

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 geography que realiza la llamada:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';

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 geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';

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 geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';

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 geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'

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 inicia una excepción ArgumentException.

Vea también

Referencia

BufferWithCurves (tipo de datos Geometry)

Otros recursos

Métodos extendidos en instancias de geography