BufferWithTolerance (tipo de dados geometry)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric
Retorna um objeto geométrico que representa a união de todos os valores de pontos cuja distância de uma instância de geometry é menor ou igual a um valor especificado, permitindo uma tolerância especificada.
Sintaxe
.BufferWithTolerance ( distance, tolerance, relative )
Argumentos
distance
É uma expressão float que especifica a distância da instância de geometry em torno da qual o buffer deve ser calculado.
tolerance
É uma expressão float que especifica a tolerância da distância do buffer.
Tolerância refere-se à variação máxima na distância ideal do buffer para a aproximação linear retornada.
Por exemplo, a distância ideal de buffer de um ponto é um círculo, mas deve ser aproximado por um polígono. Quanto menor a tolerância, mais pontos o polígono terá, o que aumenta a complexidade do resultado, mas diminui o erro.
relative
É um bit que especifica se o valor de tolerance é relativo ou absoluto. Se for 'TRUE' ou 1, a tolerância será relativa e será calculada como o produto entre o parâmetro tolerance e o diâmetro da caixa delimitadora da instância. Se for 'FALSE' ou 0, a tolerância será absoluta e o valor de tolerance será a variação máxima absoluta na distância ideal do buffer para a aproximação linear retornada.
Tipos de retorno
Tipo de retorno do SQL Server: geometry
Tipo de retorno do CLR: SqlGeometry
Exceções
O parâmetro tolerância precisa ser maior que zero. Se tolerância<= 0, uma System.ArgumentOutOfRangeException
será gerada.
Observação
Como tolerance é um tipo float uma System.Runtime.InteropServices.COMException
poderá ser gerada se o valor atribuído à tolerância for muito pequeno devido a problemas de arredondamento com tipos de ponto flutuante.
Comentários
Quando a distância for > 0, uma instância de Polígono ou Multipolígono será retornada.
Observação
Como a distância é um float, um valor extremamente pequeno poderá equivaler a zero nos cálculos. Quando isso ocorrer, uma cópia da instância de geometry de chamada será retornada. Confira flutuante e real (Transact-SQL).
Quando a distância for = 0, uma cópia da instância de geometry de chamada será retornada.
Quando distância< 0,
Uma instância de GeometryCollection vazia será retornada quando as dimensões da instância forem 0 ou 1.
Um buffer negativo é retornado quando as dimensões da instância são 2 ou mais.
Observação
Um buffer negativo também pode criar uma instância de GeometryCollection vazia.
Um buffer negativo remove todos os pontos dentro da distância determinada do limite da instância de geometry.
O erro entre o buffer teórico e o calculado é max(tolerance, extents * 1.E-7), em que a tolerância é o valor do parâmetro tolerance. Para obter mais informações sobre extensões, confira Referência de método do tipo de dados geometry.
Exemplos
O exemplo a seguir cria uma instância Point
e usa BufferWithTolerance()
para obter um buffer grosseiro à sua volta.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();
Consulte Também
STBuffer (tipo de dados geometry)
Métodos estendidos em instâncias geometry