geo_polygon_to_h3cells()

Converte il poligono in celle H3. Questa funzione è uno strumento di aggiunta e visualizzazione geospaziale utile.

Sintassi

geo_polygon_to_h3cells(poligono [resolution[,,radius]])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Poligono dynamic ✔️ Poligono o multipolygon nel formato GeoJSON.
Risoluzione int Definisce la risoluzione della cella richiesta. I valori supportati si trovano nell'intervallo [0, 15]. Se non specificato, viene usato il valore predefinito 6.
Raggio real Raggio del buffer in metri. Se non specificato, viene usato il valore predefinito 0.

Restituisce

Matrice di stringhe di token di cella H3 della stessa risoluzione che represet un poligono o un multipolygon. Se il raggio è impostato su un valore positivo, il poligono verrà ampliato in modo che tutti i punti all'interno del raggio specificato del poligono di input o multipolygon saranno contenuti all'interno e il poligono appena calcolato che verrà convertito in celle H3. Se poligono, risoluzione, raggio non è valido o il conteggio delle celle supera il limite, la query produrrà un risultato Null.

Nota

  • La conversione di poligoni in token di cella H3 può essere utile nelle coordinate corrispondenti ai poligoni che potrebbero includere queste coordinate e i poligoni corrispondenti ai poligoni.
  • Il numero massimo di token per poligono è 61680.
  • I bordi poligono sono linee dritte.
  • Un poligono è rappresentato dalle celle le cui centroidi si trovano all'interno del poligono. Ciò significa che le celle non sono esattamente uguali al poligono, ma si avvicinano al aumento della risoluzione. Per assicurarsi che ogni punto del poligono sia coperto da una cella, il poligono può essere memorizzato nel buffer. Ciò garantisce anche che i poligoni adiacenti che si toccano tra loro avranno celle separate, quindi nessuna cella appartiene a più poligoni.

Vedere anche geo_polygon_to_s2cells().

Esempio

Nell'esempio seguente vengono calcolate celle H3 che approssimano il poligono.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)

Output

h3_cells
["86390cb57ff","86390cb0fff","86390ca27ff","86390cb87ff","86390cb07ff","86390ca2fff","86390ca37ff","86390cb17ff","86390cb1fff","86390cb8fff","86390cba7ff","86390ca07ff","86390cbafff"]

Nell'esempio seguente viene illustrato un multipolygon costituito da celle H3 che approssimano il poligono precedente. La specifica di una risoluzione superiore migliorerà l'approssimazione poligono.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)
| mv-expand cell = h3_cells to typeof(string) // extract cell to a separate row
| project polygon_cell = geo_h3cell_to_polygon(cell) // convert each cell to a polygon
| project individual_polygon_coordinates = pack_array(polygon_cell.coordinates)
| summarize multipolygon_coordinates = make_list(individual_polygon_coordinates)
| project multipolygon = bag_pack("type","MultiPolygon", "coordinates", multipolygon_coordinates)

Output

Multipolygon
{"type": "MultiPolygon",
"coordinate": [ ... ]}

L'esempio seguente restituisce Null perché il poligono non è valido.

let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))

Output

is_null
True