geo_line_buffer()
Calcula polígono ou multipolígono que contém todos os pontos dentro do raio determinado da linha de entrada ou multilinha na Terra.
Sintaxe
geo_line_buffer(
tolerância de raio,
lineString,
)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
linhaString | dynamic |
✔️ | Um LineString ou MultiLineString no formato GeoJSON. |
raio | real |
✔️ | Raio de amortecimento em metros. O valor válido deve ser positivo. |
tolerance | real |
Define a tolerância em metros que determina o quanto um polígono pode se desviar do raio ideal. Se não for especificado, o valor padrão 10 será usado. A tolerância não deve ser inferior a 0,0001% do raio. Especificar tolerância maior que raio reduz a tolerância para o maior valor possível abaixo do raio. |
Devoluções
Polygon ou MultiPolygon ao redor da entrada LineString ou MultiLineString. Se as coordenadas, o raio ou a tolerância forem inválidos, a consulta produzirá um resultado nulo.
Observação
- As coordenadas geoespaciais são interpretadas como representadas pelo sistema de referência de coordenadas WGS-84 .
- O dado geodésico usado para medir a distância na Terra é uma esfera.
- Se as arestas da linha de entrada forem linhas cartesianas retas, considere o uso de geo_line_densify() para converter arestas planas em geodésicas.
- As extremidades das linhas são redondas.
- Ambos os lados das linhas são armazenados em buffer.
Definição e restrições de LineString
dynamic({"type": "LineString","coordenadas": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
dynamic({"type": "MultiLineString","coordenadas": [[line_1, line_2, ..., line_N]]})
- A matriz de coordenadas LineString deve conter pelo menos duas entradas.
- As coordenadas [longitude, latitude] devem ser válidas onde longitude é um número real no intervalo [-180, +180] e latitude é um número real no intervalo [-90, +90].
- O comprimento da borda deve ser inferior a 180 graus. Será escolhida a aresta mais curta entre os dois vértices.
Exemplos
A consulta a seguir calcula o polígono ao redor da linha, com raio de 4 metros e tolerância de 0,1 metro
let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
Buffer |
---|
{"type": "Polígono", "coordenadas": [ ... ]} |
A consulta a seguir calcula o buffer em torno de cada linha e unifica o resultado
datatable(line:dynamic)
[
dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result |
---|
{"type": "Polígono","coordenadas": [ ... ]} |
O exemplo a seguir retornará true, devido à linha inválida.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Buffer |
---|
Verdadeiro |
O exemplo a seguir retornará true, devido ao raio inválido.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Buffer |
---|
Verdadeiro |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de