geo_line_buffer()
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcula el polígono o el multipolygon que contiene todos los puntos dentro del radio especificado de la línea de entrada o de varias líneas en la Tierra.
Sintaxis
geo_line_buffer(
tolerancia de radio,
lineString,
)
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
lineString | dynamic |
✔️ | LineString o MultiLineString en formato GeoJSON. |
radio | real |
✔️ | Radio de búfer en metros. El valor válido debe ser positivo. |
tolerance | real |
Define la tolerancia en medidores que determina cuánto un polígono puede desviarse del radio ideal. Si no se especifica, se usa el valor predeterminado 10 . La tolerancia no debe ser inferior al 0,0001 % del radio. Al especificar la tolerancia mayor que el radio, se reduce la tolerancia al mayor valor posible por debajo del radio. |
Devoluciones
Polígono o MultiPolygon alrededor de la entrada LineString o MultiLineString. Si las coordenadas o el radio o la tolerancia no son válidas, la consulta genera un resultado NULO.
Nota:
- Las coordenadas geoespaciales se interpretan como representadas por el sistema de referencia de coordenadas WGS-84 .
- El dato geodético utilizado para medir la distancia en la Tierra es una esfera.
- Si los bordes de línea de entrada son líneas cartesianas rectas, considere la posibilidad de usar geo_line_densify() para convertir bordes planar a geodesics.
- Las puntas finales de las líneas son redondas.
- Ambos lados de las líneas se almacenan en búfer.
Definición y restricciones lineString
dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
dynamic({"type": "MultiLineString","coordinates": [[line_1, line_2, ..., line_N]]})
- La matriz de coordenadas LineString debe contener al menos dos entradas.
- Las coordenadas [longitud, latitud] deben ser válidas donde la longitud es un número real en el intervalo [-180, +180] y la latitud es un número real en el intervalo [-90, +90].
- La longitud del borde debe ser inferior a 180 grados. Se elegirá el borde más corto entre los dos vértices.
Ejemplos
La consulta siguiente calcula el polígono alrededor de la línea, con radio de 4 metros y tolerancia de 0,1 metros.
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": "Polygon", "coordinates": [ ... ]} |
La consulta siguiente calcula el búfer alrededor de cada línea y unifica el 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)
resultado |
---|
{"type": "Polygon","coordinates": [ ... ]} |
En el ejemplo siguiente se devolverá true, debido a una línea no válida.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
buffer |
---|
True |
En el ejemplo siguiente se devolverá true, debido a un radio no válido.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
buffer |
---|
True |