BufferWithTolerance (tipo de dados geography)
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 em relação a uma instância de geography é menor ou igual a um valor especificado, permitindo uma tolerância especificada.
Esse método de tipo de dados de geography é compatível com instâncias FullGlobe ou instâncias espaciais maiores que um hemisfério.
Sintaxe
.BufferWithTolerance ( distance, tolerance, relative )
Argumentos
distance
É uma expressão float que especifica a distância da instância de geography ao redor 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 inteiro.
tolerance
É uma expressão float que especifica a tolerância da distância do buffer.
A variação máxima na distância ideal do buffer para a aproximação linear retornada é o valor de tolerance.
Por exemplo, a distância ideal de buffer 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á. Esse resultado aumenta a complexidade do resultado, mas minimiza o erro.
O limite mínimo é 0,1 por cento da distância; qualquer tolerância menor que isso será arredondada até o limite mínimo.
relative
É um bit que especifica se o valor de tolerance é relativo ou absoluto. Se o valor for 'TRUE' ou 1, a tolerância é relativa. Esse valor é o produto do parâmetro tolerance e da extensão angular * o raio equatorial do elipsoide. A tolerância será absoluta se o valor for 'FALSE' ou 0. O valor de tolerance é 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: geography
Tipo de retorno do CLR: SqlGeography
Comentários
Esse método gerará uma ArgumentException se a distance for NaN (não é um número) ou se distance for um infinito positivo ou negativo. Este método também gerará uma ArgumentException se tolerance for zero (0), NaN (não é um número), negativo ou infinito positivo ou negativo.
STBuffer()
retornará uma instância de FullGlobe em alguns casos; por exemplo, STBuffer()
retorna uma instância de FullGlobe em dois pólos quando a distância do buffer é maior que a distância do Equador para os pólos.
Esse método gerará uma ArgumentException em instâncias de FullGlobe nas quais a distância do buffer exceder a seguinte limitação:
0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 circunferência da Terra)
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, consulte Referência de método do tipo de dados geography.
Esse método não oferece precisão.
Exemplos
O exemplo a seguir cria uma instância Point
e usa BufferWithTolerance()
para obter um buffer grosseiro à sua volta.
DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();
Consulte Também
STBuffer (tipo de dados geography)
Métodos estendidos em instâncias geography