Partilhar via


geo_point_to_s2cell()

Calcula o valor da cadeia de 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 numa superfície esférica e tem arestas geodésicas. As células S2 fazem parte de uma hierarquia que divide a superfície da Terra. Têm um máximo de 31 níveis, que variam entre zero e 30, que definem o número de vezes que uma célula é subdividida. Os níveis vão desde a maior cobertura no nível zero com cobertura de área de 85.011.012.19km², até à cobertura mais baixa 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élulaS2 diferentes.

Nota

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

Syntax

geo_point_to_s2cell(longitude,latitude, [ nível ])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessá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].
nível int Define o nível de célula pedido. Os valores suportados estão no intervalo [0, 30]. Se não for especificado, é utilizado o valor 11 predefinido.

Devoluções

O valor da cadeia de token de célula S2 de uma determinada localização geográfica. Se as coordenadas ou os níveis forem inválidos, a consulta produz 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. Os tamanhos das células nas proximidades tendem a ser mais iguais.

Level Comprimento mínimo do limite de células aleatórias (Reino Unido) Comprimento máximo do limite de células aleatórias (E.U.A.)
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

Para comparação com outros sistemas de grelha disponíveis, veja Clustering geoespacial com Linguagem de Pesquisa Kusto.

Exemplos

Eventos de tempestade dos EUA agregados por célula S2

O exemplo seguinte localiza eventos storm 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 ecrã a mostrar uma composição de mapa de eventos storm dos EUA agregados por célula S2.

O exemplo seguinte calcula o 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 seguinte 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 localizações
47b1d 2 ["A","B"]
47ae3 1 ["C"]

Resultados vazios

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

print s2cell = geo_point_to_s2cell(300,1,8)

Saída

s2cell

O exemplo seguinte 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 seguinte produz um resultado vazio devido à entrada de nível inválida.

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

Saída

s2cell