Partilhar via


BufferWithTolerance (tipo de dados de geometria)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Retorna um objeto geométrico que representa a união de todos os valores de ponto cuja distância de uma ocorrência de geometria é menor ou igual a um valor especificado, permitindo uma tolerância especificada.

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

Arguments

Distância
É uma expressão float que especifica a distância da instância de geometria em torno da qual calcular o buffer.

tolerance
É uma expressão float que especifica a tolerância da distância do buffer.

A 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 de buffer ideal de um ponto é um círculo, mas isso 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 pouco especificando se o valor de tolerância é relativo ou absoluto. Se 'TRUE' ou 1, então a tolerância é relativa e é calculada como o produto do parâmetro de tolerância e o diâmetro da caixa delimitadora da instância. Se 'FALSE' ou 0, a tolerância é absoluta e o valor da tolerância é a variação máxima absoluta na distância ideal do buffer para a aproximação linear devolvida.

Tipos de devolução

Tipo de retorno do SQL Server: geometria

Tipo de retorno CLR: SqlGeometry

Exceptions

O parâmetro de tolerância deve ser superior a zero. Se tolerância< = 0, então um System.ArgumentOutOfRangeException é lançado.

Note

Como a tolerânciaé um tipo flutuante, um System.Runtime.InteropServices.COMException pode ser lançado se o valor dado para tolerância for muito pequeno devido aos problemas de arredondamento com tipos de ponto flutuante.

Remarks

Quando a distância> 0, uma instância de Polygon ou MultiPolygon é retornada.

Note

Como a distância é um flutuador, um valor extremamente pequeno pode equivaler a zero nos cálculos. Quando isso ocorre, uma cópia da instância de geometria de chamada é retornada. Veja float 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 GeometryCollection vazia é 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 dentro da distância dada do limite da instância de geometria .

O erro entre o buffer teórico e calculado é max(tolerância, extensões * 1.E-7), onde tolerância é o valor do parâmetro de tolerância . Para obter mais informações sobre extensões, consulte Referência do método de tipo de dados de geometria.

Examples

O exemplo a seguir cria uma Point instância e usa BufferWithTolerance() para obter um buffer aproximado em torno dela.

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

Ver também

STBuffer (tipo de dados de geometria)
Métodos estendidos em instâncias de geometria