Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base 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.
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.