geo_polygon_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 del poligono di input o multipolygon sulla Terra.
Sintassi
geo_polygon_buffer(
Tolleranza del raggio,
poligono,
)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
poligono | dynamic |
✔️ | Poligono o multipolygon 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 la tolleranza maggiore del raggio, la tolleranza verrà ridotta al di sotto del raggio. |
Valori restituiti
Poligono o MultiPolygon intorno all'input Polygon o multipolygon. Se le coordinate o il raggio o la tolleranza non sono validi, la query genererà un risultato Null.
Nota
- Le coordinate geospaziali vengono interpretate come rappresentate dal sistema di riferimento di coordinate WGS-84 .
- Il datum geodetico usato per le misurazioni sulla Terra è una sfera. I bordi poligoni sono geodesici sulla sfera.
- Se i bordi del poligono di input sono linee cartesiane dritte, è consigliabile usare geo_polygon_densify() per convertire i bordi planari in geodesici.
Definizione e vincoli poligono
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell è obbligatorio e definito come matrice
counterclockwise
ordinata di coordinate [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Può essere presente una sola shell. - LinearRingHole è facoltativo e definito come matrice
clockwise
ordinata di coordinate [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Ci può essere un numero qualsiasi di anelli interni e fori. - I vertici LinearRing devono essere distinti con almeno tre coordinate. La prima coordinata deve essere uguale all'ultima. Sono necessarie almeno quattro voci.
- Le coordinate [longitudine, latitudine] devono essere valide. La longitudine deve essere un numero reale nell'intervallo [-180, +180] e latitudine deve essere un numero reale nell'intervallo [-90, +90].
- LinearRingShell racchiude al massimo la metà della sfera. LinearRing divide la sfera in due aree. Verranno scelte le dimensioni più piccole delle due aree.
- La lunghezza del bordo LinearRing deve essere inferiore a 180 gradi. Verrà scelto il bordo più corto tra i due vertici.
- LinearRings non deve attraversare e non deve condividere i bordi. LinearRings può condividere vertici.
- Il poligono contiene i vertici.
Esempi
La query seguente calcola il poligono intorno al poligono di input, con raggio di 10 km.
let polygon = dynamic({"type":"Polygon","coordinates":[[[139.813757,35.719666],[139.72558,35.71813],[139.727471,35.653231],[139.818721,35.657264],[139.813757,35.719666]]]});
print buffer = geo_polygon_buffer(polygon, 10000)
buffer |
---|
{"type": "Polygon","coordinates": [ ... ]} |
La query seguente calcola il buffer intorno a ogni poligono e unifica il risultato
datatable(polygon:dynamic, radius:real )
[
dynamic({"type":"Polygon","coordinates":[[[12.451218693639277,41.906457003556625],[12.445753852969375,41.90160968881543],[12.453514425793855,41.90361551885886],[12.451218693639277,41.906457003556625]]]}), 100,
dynamic({"type":"Polygon","coordinates":[[[12.4566086734784,41.905119850039995],[12.453913683559591,41.903652663265234],[12.455485761012113,41.90146110630562],[12.4566086734784,41.905119850039995]]]}), 20
]
| project buffer = geo_polygon_buffer(polygon, radius)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result |
---|
{"type": "Polygon","coordinates": [ ... ]} |
L'esempio seguente restituirà true, a causa di un poligono non valido.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
buffer |
---|
Vero |
L'esempio seguente restituirà true, a causa di un raggio non valido.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 0))
buffer |
---|
Vero |