Compartir a través de


STBuffer (tipo de datos geometry)

Se aplica a: Sql Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse en Microsoft Fabric

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

Sintaxis

  
.STBuffer ( distance )  

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 un valor de tipo float (double en .NET Framework) que especifica la distancia desde la instancia de geometry en torno a la cual se puede calcular el búfer.

Tipos de valor devuelto

Tipo de valor devuelto de SQL Server: geometry

Tipo de valor devuelto de CLR: SqlGeometry

Comentarios

STBuffer() calcula un búfer como BufferWithTolerance mediante la especificación de tolerance = distance * .001 y relative = false.

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

Nota:

Puesto que distance es de tipo float, un valor muy pequeño puede resultar igual 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 2 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 incluidos en la distancia dada del límite de la geometría.

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

Ejemplos

A. Llamar a STBuffer() con parameter_value < 0 en una instancia de geometría dimensional

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(-1).ToString();

B. Llamar a STBuffer() con parameter_value < 0 en una instancia de Polygon

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

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. Llamar a STBuffer() con parameter_value < 0 en una instancia de CurvePolygon

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

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

Nota:

Se devuelve una instancia de Polygon en lugar de una instancia de CurvePolygon. Para devolver una instancia de CurvePolygon, vea BufferWithCurves (tipo de datos Geometry).

D. Llamar a STBuffer() con un valor de parámetro negativo que devuelve una instancia vacía

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

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-2).ToString();

Esta instrucción SELECT devuelve GEOMETRYCOLLECTION EMPTY..

E. Llamar a STBuffer() con parameter_value = 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.STBuffer(0).ToString();

F. Llamar a STBuffer() con un valor de parámetro distinto de cero que es muy 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.STBuffer(@distance).ToString();

G. Llamar a STBuffer() con parameter_value > 0

En el ejemplo siguiente se devuelve una instancia de Polygon:

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(2).ToString();

H. Llamar a STBuffer() con un valor de parámetro de cadena

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('2').ToString();

En el siguiente ejemplo se producirá un error:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('a').ToString();

Nota:

En los dos ejemplos anteriores se pasó un literal de cadena a STBuffer(). 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.

I. Llamar a STBuffer() en una instancia de MultiPoint

En el siguiente ejemplo se devuelven dos instancias de MultiPolygon y una de Polygon:

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.STBuffer(1).ToString(); 
 SELECT @g.STBuffer(1.5).ToString(); 
 SELECT @g.STBuffer(1.6).ToString();

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

Consulte también

BufferWithTolerance (tipo de datos geometry)
Métodos de OGC en instancias de geometry