Partilhar via


BufferWithCurves (tipo de dados geography)

Retorna uma instância de geography que representa o conjunto de todos os pontos cuja distância de uma instância de geography é 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 geography.

Tipos de retorno

SQL Server tipo de retorno: geography

Tipo de retorno CLR: SqlGeography

Exceções

Os critérios a seguir lançarão um 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 é transmitido 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 GeometryCollection vazia

distância < 0

Dois ou mais

Uma instância de CurvePolygon ou GeometryCollection com um buffer negativo.

ObservaçãoObservação

Um buffer negativo pode criar uma GeometryCollection vazia

distância = 0

Todas as dimensões

Cópia da instância geography que está invocando

distância > 0

Todas as dimensões

Uma instância de CurvePolygon ou GeometryCollection

ObservaçãoObservação

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

Se um parâmetro string for transmitido ao método, ele será convertido em um float ou lançará uma ArgumentException.

Exemplos

A.Chamando 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.Chamando BufferWithCurves() com um valor de parâmetro < 0 em 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.Chamando BufferWithCurves() com um valor de parâmetro < 0 que retorna uma GeometryCollection vazia

O exemplo a seguir 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 exemplo a seguir retorna uma cópia da instância 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 exemplo a seguir também retorna uma cópia da instância 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.Chamando 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 é transmitido 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 a cadeia literal pode ser convertida em um valor numérico. Porém, o segundo exemplo lança uma ArgumentException.

Consulte também

Referência

BufferWithCurves (tipo de dados geometria)

Outros recursos

Métodos estendidos em instâncias geography