Condividi tramite


geo_line_buffer()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

Calcola il poligono o il multipolygon che contiene tutti i punti all'interno del raggio specificato della linea di input o multilinea sulla Terra.

Sintassi

geo_line_buffer(Tolleranza del raggio, lineString, )

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
lineString dynamic ✔️ LineString o MultiLineString nel formato GeoJSON.
raggio real ✔️ Raggio del buffer in metri. Il valore valido deve essere positivo.
tolerance real Definisce la tolleranza in metri che determina la quantità di poligono che può deviare dal raggio ideale. Se non specificato, viene usato il valore predefinito 10. La tolleranza non deve essere inferiore allo 0,0001% del raggio. Se si specifica una tolleranza maggiore del raggio, la tolleranza viene ridotta al di sotto del raggio.

Valori restituiti

Poligono o MultiPolygon intorno all'input LineString o MultiLineString. Se le coordinate o il raggio o la tolleranza non sono validi, la query produce un risultato Null.

Nota

  • Le coordinate geospaziali vengono interpretate come rappresentate dal sistema di riferimento di coordinate WGS-84 .
  • Il datum geodetico usato per misurare la distanza sulla Terra è una sfera.
  • Se i bordi della linea di input sono linee cartesiane dritte, è consigliabile usare geo_line_densify() per convertire i bordi planari in geodesici.
  • Le estremità delle linee sono arrotondate.
  • Entrambi i lati delle linee vengono memorizzati nel buffer.

Definizione e vincoli 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 matrice di coordinate LineString deve contenere almeno due voci.
  • Le coordinate [longitudine, latitudine] devono essere valide dove la longitudine è un numero reale nell'intervallo [-180, +180] e latitudine è un numero reale nell'intervallo [-90, +90].
  • La lunghezza del bordo deve essere inferiore a 180 gradi. Verrà scelto il bordo più corto tra i due vertici.

Esempi

La query seguente calcola il poligono intorno alla linea, con raggio di 4 metri e tolleranza di 0,1 contatori

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", "coordinate": [ ... ]}

La query seguente calcola il buffer intorno a ogni riga e unifica il risultato

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": "Polygon","coordinates": [ ... ]}

L'esempio seguente restituirà true, a causa di una riga non valida.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
buffer
Vero

L'esempio seguente restituirà true, a causa di un raggio non valido.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
buffer
Vero