geo_point_to_s2cell()

Calcola il valore della stringa del token di cella S2 di una posizione geografica.

La cella S2 può essere uno strumento di clustering geospaziale utile. Una cella S2 è una cella su una superficie sferica e presenta bordi geodesici. Le cellule S2 fanno parte di una gerarchia che divide la superficie terrestre. Hanno un massimo di 31 livelli, compreso tra zero e 30, che definiscono il numero di volte in cui una cella è suddivisa. I livelli vanno dalla copertura più grande al livello zero con copertura di area di 85.011.012.19km², alla copertura più bassa di 0,44 cm² al livello 30. Poiché le celle S2 sono suddivise a livelli superiori, il centro delle celle viene conservato bene. Due posizioni geografiche possono essere molto vicine tra loro, ma hanno token di cella S2 diversi.

Nota

Se si richiama la funzione geo_s2cell_to_central_point() in una stringa di token di cella S2 calcolata sulla longitudine x e latitudine y, la funzione non restituirà necessariamente x e y.

Sintassi

geo_point_to_s2cell(Longitudine,Latitudine, [ level ])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
longitude real ✔️ Coordinata geospaziale, valore di longitudine in gradi. Il valore valido è un numero reale e nell'intervallo [-180, +180].
latitude real ✔️ Coordinata geospaziale, valore della latitudine in gradi. Il valore valido è un numero reale e nell'intervallo [-90, +90].
level int Definisce il livello di cella richiesto. I valori supportati sono compresi nell'intervallo [0, 30]. Se non specificato, viene usato il valore predefinito 11.

Restituisce

Valore della stringa del token di cella S2 di una determinata posizione geografica. Se le coordinate o i livelli non sono validi, la query genera un risultato vuoto.

Copertura dell'area approssimativa della cella S2 per valore di livello

Per ogni livello, le dimensioni della cella S2 sono simili ma non esattamente uguali. Le dimensioni delle celle nelle vicinanze tendono ad essere più uguali.

Level Lunghezza minima bordo cella casuale (Regno Unito) Lunghezza massima del bordo della cella casuale (US)
0 7842 km 7842 km
1 3921 km 5004 km
2 1825 km 2489 km
3 840 km 1310 km
4 432 km 636 km
5 210 km 315 km
6 108 km 156 km
7 54 km 78 km
8 27 km 39 km
9 14 km 20 km
10 7 km 10 km
11 3 km 5 km
12 1699 m 2 km
13 850 m 1225 m
14 425 m 613 m
15 212 m 306 m
16 106 m 153 m
17 53 m 77 m
18 27 m 38 m
19 13 m 19 m
20 7 m 10 m
21 3 m 5 m
22 166 cm 2 m
23 83 cm 120 cm
24 41 cm 60 cm
25 21 cm 30 cm
26 10 cm 15 cm
27 5 cm 7 cm
28 2 cm 4 cm
29 12 mm 18 mm
30 6 mm 9 mm

Per il confronto con altri sistemi di griglia disponibili, vedere Clustering geospaziale con Linguaggio di query Kusto.

Esempio

Eventi storm statunitensi aggregati dalla cella S2

Nell'esempio seguente vengono rilevati eventi storm statunitensi aggregati da celle S2.

StormEvents
| project BeginLon, BeginLat
| summarize by hash=geo_point_to_s2cell(BeginLon, BeginLat, 5)
| project geo_s2cell_to_central_point(hash)
| render scatterchart with (kind=map)

Output

Screenshot di un rendering mappa degli eventi storm statunitensi aggregati dalla cella S2.

Nell'esempio seguente viene calcolato l'ID cella S2.

print s2cell = geo_point_to_s2cell(-80.195829, 25.802215, 8)

Output

s2cell
88d9b

Trovare un gruppo di coordinate

Nell'esempio seguente vengono trovati gruppi di coordinate. Ogni coppia di coordinate nel gruppo risiede nella cella S2 con un'area massima di 1632,45 km².

datatable(location_id:string, longitude:real, latitude:real)
[
  "A", 10.1234, 53,
  "B", 10.3579, 53,
  "C", 10.6842, 53,
]
| summarize count = count(),                                        // items per group count
            locations = make_list(location_id)                      // items in the group
            by s2cell = geo_point_to_s2cell(longitude, latitude, 8) // s2 cell of the group

Output

s2cell count locations
47b1d 2 ["A","B"]
47ae3 1 ["C"]

Risultati vuoti

Nell'esempio seguente viene generato un risultato vuoto a causa dell'input di coordinate non valido.

print s2cell = geo_point_to_s2cell(300,1,8)

Output

s2cell

Nell'esempio seguente viene generato un risultato vuoto a causa dell'input a livello non valido.

print s2cell = geo_point_to_s2cell(1,1,35)

Output

s2cell

Nell'esempio seguente viene generato un risultato vuoto a causa dell'input a livello non valido.

print s2cell = geo_point_to_s2cell(1,1,int(null))

Output

s2cell