Compartilhar via


BufferWithCurves (tipo de dados geography)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna uma instância de geography que representa o conjunto de todos os pontos cuja distância da instância de geography de chamada é menor ou igual ao parâmetro distance.

Sintaxe

  
.BufferWithCurves ( distance )  

Argumentos

distance
É um float que indica a distância máxima em que os pontos que formam o buffer podem estar da instância de geografia.

Tipos de retorno

Tipo de retorno do SQL Server: geography

Tipo de retorno do CLR: SqlGeography

Exceções

Os critérios a seguir gerarão uma ArgumentException.

  • Nenhum parâmetro é transmitido ao método como @g.BufferWithCurves()

  • Um parâmetro não numérico é transmitido ao método como @g.BufferWithCurves('a')

  • NULL é passado ao método, como @g.BufferWithCurves(NULL)

Comentários

A tabela a seguir mostra os resultados retornados para obter valores de distância diferentes.

Valor de distância Dimensões do tipo Tipo espacial retornado
distância < 0 Zero ou um Instância de GeometryCollection vazia
distância < 0 Dois ou mais Uma instância de CurvePolygon ou GeometryCollection com um buffer negativo.

Observação: um buffer negativo pode criar uma GeometryCollection vazia
distância = 0 Todas as dimensões Cópia da instância de geography de invocação
distância > 0 Todas as dimensões Instância de CurvePolygon ou GeometryCollection

Observação

Como distance é um float, um valor muito pequeno pode ser igualado a zero nos cálculos. Quando isto ocorre, uma cópia da instância de geography de chamada é retornada.

Se um parâmetro string for passado ao método, ele será convertido em um float ou gerará uma ArgumentException.

Exemplos

a. Como chamar BufferWithCurves() com um valor de parâmetro < 0 em instância de geografia unidimensional

O exemplo a seguir retorna uma instância GeometryCollection vazia:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(-1).ToString();

B. Como chamar BufferWithCurves() com um valor de parâmetro < 0 em uma instância de geografia bidimensional

O exemplo a seguir retorna uma instância CurvePolygon com um buffer negativo:

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
SELECT @g.BufferWithCurves(-1).ToString()

C. Como chamar BufferWithCurves() com um valor de parâmetro < 0 que retorna uma GeometryCollection vazia

O seguinte exemplo mostra o que ocorre quando o parâmetro distance é igual a -2:

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
SELECT @g.BufferWithCurves(-2).ToString();

Esta instrução SELECT retorna GEOMETRYCOLLECTION EMPTY

D. Chamando BufferWithCurves() com um valor de parâmetro = 0

O seguinte exemplo retorna uma cópia da instância de geography de chamada:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(0).ToString();

E. Chamando BufferWithCurves() com um valor de parâmetro diferente de zero que é extremamente pequeno

O seguinte exemplo também retorna uma cópia da instância de geography de chamada:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
DECLARE @distance float = 1e-20;  
SELECT @g.BufferWithCurves(@distance).ToString();

F. Como chamar BufferWithCurves() com um valor de parâmetro > 0

O exemplo a seguir retorna uma instância CurvePolygon:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(2).ToString();

G. Transmitindo um parâmetro de cadeia de caracteres válido

O exemplo a seguir retorna a mesma instância CurvePolygon como mencionado anteriormente, mas um parâmetro de cadeia de caracteres é passado ao método:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves('2').ToString();

H. Transmitindo um parâmetro de cadeia de caracteres inválido

O exemplo a seguir lançará um erro:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'  
SELECT @g.BufferWithCurves('a').ToString();

Observe que os dois exemplos anteriores transmitiram uma cadeia de caracteres literal ao método BufferWithCurves(). O primeiro exemplo funciona porque o literal de cadeia de caracteres pode ser convertido em um valor numérico. Porém, o segundo exemplo lança ArgumentException.

Consulte Também

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