Compartir a través de


geo_line_buffer()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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