geo_line_buffer()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft 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 |