Partilhar via


BufferWithCurves (tipo de dados geográficos)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

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

Syntax

  
.BufferWithCurves ( distance )  

Arguments

Distância
É um flutuador que indica a distância máxima que os pontos que formam o buffer podem ser da instância geográfica.

Tipos de devolução

Tipo de retorno do SQL Server: geografia

Tipo de retorno CLR: SqlGeography

Exceptions

Os critérios a seguir lançarão um ArgumentException.

  • Nenhum parâmetro é passado para o método, como @g.BufferWithCurves()

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

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

Remarks

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

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

Nota: Um buffer negativo pode criar um GeometryCollection vazio
distância = 0 Todas as dimensões Cópia da instância de invocação geográfica
distância > 0 Todas as dimensões Instância de CurvePolygon ou GeometryCollection

Note

Como a distância é um flutuador, um valor muito pequeno pode equivaler a zero nos cálculos. Quando isso ocorre, uma cópia da instância de geografia de chamada é retornada.

Se um parâmetro string for passado para o método, ele será convertido em um float ou lançará um ArgumentExceptionarquivo .

Examples

A. Chamando BufferWithCurves() com um valor < de parâmetro 0 em uma instância de geografia unidimensional

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

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 uma instância de geografia bidimensional

O exemplo a seguir retorna uma CurvePolygon instância 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 um GeometryCollection vazio

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 de geografia 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 de geografia 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 CurvePolygon instância:

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. Passando um parâmetro de cadeia de caracteres válido

O exemplo a seguir retorna a mesma CurvePolygon instância mencionada anteriormente, mas um parâmetro string é passado para o 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. Passando um parâmetro de cadeia de caracteres inválido

O exemplo a seguir gerará 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 passaram uma cadeia de caracteres literal para o BufferWithCurves() método. O primeiro exemplo funciona porque o literal da cadeia de caracteres pode ser convertido em um valor numérico. No entanto, o segundo exemplo lança um ArgumentException.

Ver também

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