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.
|
||
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çã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)