BufferWithCurves (tipo de dados geometria)

Aplica-se a: SQL Server (todas as versões com suporte) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

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

Sintaxe

.BufferWithCurves ( distance )  

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

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 geometry.

Tipos de retorno

Tipo de retorno do SQL Server: geometry

Tipo de retorno do CLR: SqlGeometry

Exceções

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

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

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

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

Comentários

A ilustração a seguir mostra um exemplo de uma instância de geometria retornado por este método.

Diagrama que mostra um exemplo de uma instância de geometria retornada por este método.

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 geometry 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 geometry de chamada é retornada. Confira flutuante e real (Transact-SQL).

Um buffer negativo remove todos os pontos incluídos na distância especificada do limite da geometria. A ilustração a seguir mostra um buffer negativo como a área sombreada mais clara do círculo. A linha pontilhada é o limite do polígono original e a linha sólida é o limite do polígono resultante.

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 uma instância de geometria unidimensional

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(-1).ToString(); 

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

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

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 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 geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 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 geometry de chamada:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 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 geometry de chamada:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 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 geometry= 'LINESTRING(3 4, 8 11)'; 
 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 geometry= 'LINESTRING(3 4, 8 11)'; 
 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 geometry = 'LINESTRING(3 4, 8 11)' 
 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.

I. Chamando BufferWithCurves() em instância de MultiPoint

O exemplo a seguir retorna duas instâncias GeometryCollection e uma instância CurvePolygon:

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.BufferWithCurves(1).ToString(); 
 SELECT @g.BufferWithCurves(1.5).ToString(); 
 SELECT @g.BufferWithCurves(1.6).ToString();

As duas primeiras instruções SELECT retornam uma instância de GeometryCollection porque o parâmetro distance é menor ou igual a 1/2 da distância entre os dois pontos, (1 1) e (1 4). A terceira instrução SELECT retorna uma instância de CurvePolygon porque as instâncias armazenadas em buffer dos dois pontos, (1 1) e (1 4), se sobrepõem.

Consulte Também

Métodos estendidos em instâncias geometry