Partilhar via


BufferWithTolerance (tipo de dados geometry)

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 seja menor ou igual a um valor especificado, o que permite uma tolerância especificada.

Sintaxe

.BufferWithTolerance ( distance, tolerance, relative )

Argumentos

  • distance
    É uma expressão float que especifica a distância de uma instância de geometry ao redor da qual o buffer 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 for 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 tolerance é relativo ou absoluto. Se for 'TRUE' ou 1, a tolerância será relativa e será calculada como o produto do parâmetro de 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 do buffer ideal para a aproximação linear retornada.

Tipos de retorno

SQL Server tipo de retorno: geometry

Tipo de retorno CLR: SqlGeometry

Exceções

O parâmetro tolerance deve ser maior que zero. Se tolerance <= 0, então System.ArgumentOutOfRangeException é lançada.

ObservaçãoObservação

Como tolerance é um tipo float, uma System.Runtime.InteropServices.COMException poderá ser lançada se o valor atribuído à tolerância for muito pequeno devido a problemas de arredondamento com tipos de ponto flutuantes.

Comentários

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

ObservaçãoObservação

Como a distância é um float, um valor extremamente pequeno pode equivaler a zero nos cálculos. Quando isso ocorre, uma cópia da instância geometry de chamada é retornada. Consulte flutuante e real (Transact-SQL).

Quando distance = 0, uma cópia da instância de geometry de chamada é retornada.

Quando distance < 0 então

  • Uma instância de 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.

    ObservaçãoObservaçã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 do limite fornecido da instância de geometry.

O erro entre o buffer teórico e o computado é max(tolerance, extents * 1.E-7) onde tolerance é o valor do parâmetro tolerance. Para obter mais informações sobre extents, consulte Referência de método de 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

Referência

STBuffer (tipo de dados geometry)

Outros recursos

Métodos estendidos em instâncias geometry