Partilhar via


BufferWithTolerance (tipo de dados geográficos)

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 geográfica é menor ou igual a um valor especificado, permitindo uma tolerância especificada.

Esse método de tipo de dados geográficos oferece suporte a instâncias FullGlobe ou instâncias espaciais maiores que um hemisfério.

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

Arguments

Distância
É uma expressão float que especifica a distância da ocorrência geográfica em torno da qual calcular o buffer.

A distância máxima do buffer não pode exceder 0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 circunferência da Terra) ou o globo completo.

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

A variação máxima na distância de buffer ideal para a aproximação linear retornada é o valor de tolerância .

Por exemplo, a distância de buffer ideal de um ponto é um círculo, mas essa distância deve ser aproximada por um polígono. Quanto menor a tolerância, mais pontos o polígono terá. Este resultado aumenta a complexidade do resultado, mas minimiza o erro.

O limite mínimo é de 0,1% da distância, e qualquer tolerância inferior a essa será arredondada para o limite mínimo.

relative
É um pouco especificando se o valor de tolerância é relativo ou absoluto. Se o valor for 'TRUE' ou 1, a tolerância é relativa. Este valor é o produto do parâmetro de tolerância e da extensão angular * raio equatorial do elipsoide. A tolerância é absoluta se o valor for 'FALSE' ou 0. Este valor de tolerância é a variação máxima absoluta na distância ideal do buffer para a aproximação linear retornada.

Tipos de devolução

Tipo de retorno do SQL Server: geografia

Tipo de retorno CLR: SqlGeography

Remarks

Este método lança um ArgumentException se a distância não for um número (NAN), ou se a distância for infinito positivo ou negativo. Esse método também lança um ArgumentException se a tolerância for zero (0), não um número (NaN), negativo ou infinito positivo ou negativo.

STBuffer() retornará uma instância FullGlobe em certos casos; por exemplo, STBuffer() retorna uma ocorrência de FullGlobe em dois polos quando a distância do buffer é maior do que a distância do equador aos polos.

Esse método lançará um ArgumentException em instâncias FullGlobe onde a distância do buffer excede a seguinte limitação:

0,999 * π * menorEixo * menorEixo / maiorEixo (~0,999 * 1/2 circunferência da Terra)

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 geografia Referência do método de tipo de dados.

Este método não é preciso.

Examples

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

DECLARE @g geography;  
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

Ver também

STBuffer (tipo de dados geográficos)
Métodos estendidos em instâncias geográficas