geo_polygon_buffer()
Calcola poligono o multipolygon che contiene tutti i punti all'interno del raggio specificato del poligono di input o multipolygon sulla Terra.
Sintassi
geo_polygon_buffer(
Poligono,
Raggio,
Tolleranza)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | 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 nei 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 al 0,0001% del raggio. Se si specifica la tolleranza maggiore del raggio, la tolleranza sarà inferiore al valore più grande possibile al di sotto del raggio. |
Restituisce
Poligono o MultiPolygon intorno all'input Polygon o multipolygon. Se le coordinate o il raggio o la tolleranza non sono valide, la query produrrà un risultato Null.
Nota
- Le coordinate geospaziali vengono interpretate come rappresentate dal sistema di riferimento di coordinate WGS-84 .
- La datum geodetica usata per le misurazioni sulla Terra è una sfera. I bordi poligono sono geodesici sulla sfera.
- Se i bordi poligono di input sono linee cartesiane dritte, prendere in considerazione l'uso di 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]]. Può essere presente un numero qualsiasi di anelli e fori interni. - 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 la metà della sfera. LinearRing divide la sfera in due aree. Verranno scelte le due regioni più piccole.
- La lunghezza del bordo LinearRing deve essere inferiore a 180 gradi. Il bordo più corto tra i due vertici verrà scelto.
- LinearRings non deve attraversare e non condividere i bordi. LinearRings può condividere vertici.
- Poligono contiene i vertici.
Esempio
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 poligoni non validi.
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 |
---|
True |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per