Partilhar via


BufferWithCurves (tipo de dados de geometria)

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

Retorna uma ocorrência de geometria que representa o conjunto de todos os pontos cuja distância da ocorrência de geometria 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 estar da ocorrência de geometria .

Tipos de devolução

Tipo de retorno do SQL Server: geometria

Tipo de retorno CLR: SqlGeometry

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 ilustração a seguir mostra um exemplo de uma ocorrência de geometria retornada por esse método.

Diagrama mostrando um exemplo de uma instância de geometria retornada por esse método.

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. Observação: Um buffer negativo pode criar um GeometryCollection vazio
distância = 0 Todas as dimensões Cópia da instância de geometria invocada
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 geometria de chamada é retornada. Veja float e real (Transact-SQL).

Um buffer negativo remove todos os pontos delimitados na distância dada 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 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 geometria dimensional

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

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

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

O exemplo a seguir retorna uma CurvePolygon instância 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. 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 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 exemplo a seguir retorna uma cópia da instância de geometria 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 exemplo a seguir também retorna uma cópia da instância de geometria de chamada:

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

I. Chamando BufferWithCurves() na instância do MultiPoint

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

 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 GeometryCollection instância porque a distância do parâmetro é 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 CurvePolygon instância porque as instâncias em buffer dos dois pontos (1, 1) e (1, 4) se sobrepõem.

Ver também

Métodos estendidos em instâncias de geometria