geo_point_to_s2cell()

Oblicza wartość ciągu tokenu komórki S2 lokalizacji geograficznej.

Komórka S2 może być przydatnym narzędziem do klastrowania geoprzestrzennego. Komórka S2 jest komórką na powierzchni sferycznej i ma krawędzie geodesowe. Komórki S2 są częścią hierarchii dzielącej powierzchnię Ziemi. Mają maksymalnie 31 poziomów, od zera do 30, które definiują liczbę razy, gdy komórka jest podzielona. Poziomy wahają się od największego zasięgu na poziomie zerowym z pokryciem powierzchni 85 011 012,19 km², do najniższego pokrycia 0,44 cm² na poziomie 30. Ponieważ komórki S2 są podzielone na wyższych poziomach, środek komórki jest dobrze zachowywany. Dwie lokalizacje geograficzne mogą być bardzo blisko siebie, ale mają różne tokeny komórek S2.

Uwaga

Jeśli wywołasz funkcję geo_s2cell_to_central_point() w ciągu tokenu komórki S2, który został obliczony na długości geograficznej x i szerokości geograficznej y, funkcja nie musi zwracać wartości x i y.

Składnia

geo_point_to_s2cell(Długość geograficzna,Szerokość geograficzna, [ poziom ])

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Długość geograficzna real ✔️ Współrzędna geoprzestrzenna, wartość długości geograficznej w stopniach. Prawidłowa wartość to liczba rzeczywista i w zakresie [-180, +180].
latitude real ✔️ Współrzędna geoprzestrzenna, wartość szerokości geograficznej w stopniach. Prawidłowa wartość to liczba rzeczywista i w zakresie [-90, +90].
Poziom int Definiuje żądany poziom komórki. Obsługiwane wartości znajdują się w zakresie [0, 30]. Jeśli nie zostanie określona, zostanie użyta wartość 11 domyślna.

Zwraca

Wartość ciągu tokenu komórki S2 dla danej lokalizacji geograficznej. Jeśli współrzędne lub poziomy są nieprawidłowe, zapytanie generuje pusty wynik.

Przybliżone pokrycie obszaru komórki S2 na wartość poziomu

Dla każdego poziomu rozmiar komórki S2 jest podobny, ale nie dokładnie taki sam. Pobliskie rozmiary komórek wydają się być bardziej równe.

Poziom Minimalna losowa długość krawędzi komórki (Wielka Brytania) Maksymalna losowa długość krawędzi komórki (USA)
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

Porównanie z innymi dostępnymi systemami siatki można znaleźć w temacie Geoprzestrzenne klastrowanie z język zapytań Kusto.

Przykłady

Zdarzenia burzy USA zagregowane przez komórkę S2

Poniższy przykład znajduje zdarzenia burzy USA zagregowane przez komórki 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)

Dane wyjściowe

Zrzut ekranu przedstawiający renderowanie mapy zdarzeń burzy USA zagregowanych przez komórkę S2.

Poniższy przykład oblicza identyfikator komórki S2.

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

Dane wyjściowe

s2cell
88d9b

Znajdowanie grupy współrzędnych

Poniższy przykład znajduje grupy współrzędnych. Każda para współrzędnych w grupie znajduje się w komórce S2 o maksymalnym obszarze 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

Dane wyjściowe

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

Puste wyniki

Poniższy przykład generuje pusty wynik z powodu nieprawidłowych danych wejściowych współrzędnych.

print s2cell = geo_point_to_s2cell(300,1,8)

Dane wyjściowe

s2cell

Poniższy przykład generuje pusty wynik z powodu nieprawidłowych danych wejściowych na poziomie.

print s2cell = geo_point_to_s2cell(1,1,35)

Dane wyjściowe

s2cell

Poniższy przykład generuje pusty wynik z powodu nieprawidłowych danych wejściowych na poziomie.

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

Dane wyjściowe

s2cell