Compartilhar via


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