geo_point_to_s2cell()

Calcula o valor da cadeia de caracteres do token de célula S2 de uma localização geográfica.

A célula S2 pode ser uma ferramenta de clustering geoespacial útil. Uma célula S2 é uma célula em uma superfície esférica e tem bordas geodésicas. As células S2 fazem parte de uma hierarquia que divide a superfície da Terra. Eles têm um máximo de 31 níveis, variando de zero a 30, que definem o número de vezes que uma célula é subdividida. Os níveis variam da maior cobertura no nível zero com cobertura de área de 85.011.012,19km², até a menor cobertura de 0,44 cm² no nível 30. Como as células S2 são subdivididas em níveis mais altos, o centro de células é bem preservado. Duas localizações geográficas podem estar muito próximas umas das outras, mas têm tokens de célula S2 diferentes.

Observação

Se você invocar a função geo_s2cell_to_central_point() em uma cadeia de caracteres de token de célula S2 calculada em longitude x e latitude y, a função não necessariamente retornará x e y.

Syntax

geo_point_to_s2cell(Longitude,Latitude, [ level ])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
longitude real ✔️ Coordenada geoespacial, valor de longitude em graus. O valor válido é um número real e no intervalo [-180, +180].
latitude real ✔️ Coordenada geoespacial, valor de latitude em graus. O valor válido é um número real e no intervalo [-90, +90].
level int Define o nível de célula solicitado. Os valores com suporte estão no intervalo [0, 30]. Se não for especificado, o valor padrão 11 será usado.

Retornos

O valor da cadeia de caracteres do token de célula S2 de uma determinada localização geográfica. Se as coordenadas ou níveis forem inválidos, a consulta produzirá um resultado vazio.

Cobertura de área aproximada da célula S2 por valor de nível

Para cada nível, o tamanho da célula S2 é semelhante, mas não exatamente igual. Tamanhos de células próximos tendem a ser mais iguais.

Nível Comprimento mínimo de borda de célula aleatória (Reino Unido) Comprimento máximo de borda de célula aleatória (EUA)
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 5min
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

Para comparação com outros sistemas de grade disponíveis, consulte clustering geoespaciais com Linguagem de Consulta Kusto.

Exemplos

Eventos de tempestade dos EUA agregados por célula S2

O exemplo a seguir localiza eventos de tempestade dos EUA agregados por células 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)

Saída

Captura de tela de uma renderização de mapa de eventos de tempestade dos EUA agregados pela célula S2.

O exemplo a seguir calcula a ID da célula S2.

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

Saída

s2cell
88d9b

Localizar um grupo de coordenadas

O exemplo a seguir localiza grupos de coordenadas. Cada par de coordenadas no grupo reside na célula S2 com uma área máxima de 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

Saída

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

Resultados vazios

O exemplo a seguir produz um resultado vazio devido à entrada de coordenada inválida.

print s2cell = geo_point_to_s2cell(300,1,8)

Saída

s2cell

O exemplo a seguir produz um resultado vazio devido à entrada de nível inválida.

print s2cell = geo_point_to_s2cell(1,1,35)

Saída

s2cell

O exemplo a seguir produz um resultado vazio devido à entrada de nível inválida.

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

Saída

s2cell