Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Retorna um objeto geométrico que representa a união de todos os pontos cuja distância de uma ocorrência de geometria é menor ou igual a um valor especificado.
Syntax
.STBuffer ( distance )
Arguments
Distância
É um valor do tipo float (double no .NET Framework) que especifica a distância da instância de geometria em torno da qual calcular o buffer.
Tipos de devolução
Tipo de retorno do SQL Server: geometria
Tipo de retorno CLR: SqlGeometry
Remarks
STBuffer()calcula um buffer como BufferWithTolerance, especificando tolerância = distância * .001 e false relativo = .
Quando a distância> 0, uma instância de Polygon ou MultiPolygon é retornada.
Note
Como a distância é um flutuador, um valor muito pequeno pode equivaler a zero nos cálculos. Quando isso ocorre, uma cópia da instância de geometria de chamada é retornada. Ver flutuador e real (Transact-SQL)
Quando distância = 0, uma cópia da instância de geometria de chamada é retornada.
Quando a distância< 0, então
uma instância vazia de GeometryCollection é retornada quando as dimensões da instância são 0 ou 1.
Um buffer negativo é retornado quando as dimensões da instância são 2 ou mais.
Note
Um buffer negativo também pode criar uma instância GeometryCollection vazia.
Um buffer negativo remove todos os pontos fechados em determinada distância do limite da geometria.
O erro entre o buffer teórico e calculado é max(tolerância, extensões * 1.E-7) onde tolerância = distância * .001. Para obter mais informações sobre extensões, consulte Referência do método de tipo de dados de geometria.
Examples
A. Chamando STBuffer() com parameter_value < 0 em uma instância de geometria dimensional
O exemplo a seguir retorna uma instância vazia GeometryCollection :
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(-1).ToString();
B. Chamando STBuffer() com parameter_value < 0 em uma instância do Polygon
O exemplo a seguir retorna uma Polygon instância com um buffer negativo:
DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))';
SELECT @g.STBuffer(-1).ToString();
C. Chamando STBuffer() com parameter_value < 0 em uma ocorrência de CurvePolygon
O exemplo a seguir retorna uma Polygon instância com um buffer negativo de uma CurvePolygon instância:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-1).ToString();
Note
Uma Polygon instância é retornada em vez de uma CurvePolygon instância. Para retornar uma CurvePolygon instância, consulte BufferWithCurves (tipo de dados de geometria)
D. Chamando STBuffer() com um valor de parâmetro negativo que retorna uma instância vazia
O exemplo a seguir mostra o que ocorre quando o parâmetro distance é igual a -2 para o exemplo anterior.
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-2).ToString();
Esta instrução SELECT retorna um GEOMETRYCOLLECTION EMPTY.
E. Chamando STBuffer() com parameter_value = 0
O exemplo a seguir retorna uma cópia da instância de chamada geometry :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(0).ToString();
F. Chamando STBuffer() com um valor de parâmetro diferente de zero que é extremamente pequeno
O exemplo a seguir também retorna uma cópia da instância de chamada geometry :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.STBuffer(@distance).ToString();
G. Chamando STBuffer() com parameter_value > 0
O exemplo a seguir retorna uma Polygon instância:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(2).ToString();
H. Chamando STBuffer() com um valor de parâmetro string
O exemplo a seguir retorna a mesma Polygon instância mencionada anteriormente, mas um parâmetro string é passado para o método:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('2').ToString();
O exemplo a seguir gerará um erro:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('a').ToString();
Note
Os dois exemplos anteriores passaram uma cadeia de caracteres literal para o STBuffer(). O primeiro exemplo funciona porque o literal da cadeia de caracteres pode ser convertido em um valor numérico. No entanto, o segundo exemplo lança um ArgumentException.
I. Chamando STBuffer() em uma instância do MultiPoint
O exemplo a seguir retorna duas MultiPolygon instâncias e uma Polygon instância:
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();
As duas primeiras instruções SELECT retornam uma MultiPolygon instância porque a distância do parâmetro é menor ou igual a 1/2 da distância entre os dois pontos (1, 1) e (1, 4). A terceira instrução SELECT retorna uma Polygon instância porque as instâncias em buffer dos dois pontos (1, 1) e (1, 4) se sobrepõem.
Ver também
BufferWithTolerance (tipo de dados de geometria)
Métodos OGC em instâncias de geometria