osmc:Metodologia
Descrição do algoritmo do AFA.codes
Projeção e cobertura nacionais
Começa-se com o mapa dos limites territoriais na projeção igual-área adotada oficialmente pelo país, designada projeção igual-área nacional. Os limites podem abranger a Zona econômica exclusiva e arquipélagos, conforme decisão soberana do país.
Sobre o polígono dos limites territoriais é encaixada uma grade de potência de 2 (tabela ao lado), desenhado um mosaico de no máximo 16 quadrados. No caso da Colômbia o melhor encaixa foi conseguido com quadrados de 219 m de lado, ou seja, 219 m =524,29 km = 512×1024 m = 512 Kim.
Abaixo, em roxo, com ij as coordenadas i horizontal e j vertical, o conjunto dos quadrados que cobrem o território são apelidados de "cobertura nacional".
Em seguida os 16 quadrados recebem indexadores (rótulos) sequenciais no lugar de coordenadas ij.
A sequência de indexação é arbitrária, poderia ser de cima para baixo da esquerda para a direita. Todavia, a formação da grade, conforme veremos a seguir, exige a escolha de uma curva de preenchimento (Curva-Z no caso foi a escolha soberana da Colômbia).
Os cálculos de vizinhança na curva de preenchimento são complexos, quanto maior a quantidade de células L0 que preservarem a distribuição de vizinhança original, mais simples o algoritmo de cálculo de vizinhança. Simplificar ou não o algoritmo (otimizar) é também uma decisão soberana.
Na Colômbia a decisão foi por otimizar, ou seja, seguir-se, dentro do possível, a curva de preenchimento em L0. Na ilustração ao lado a cobertura continental em amarelo, e os índices fora de ordem em roxo. O indexador, para sua representação humana, usando a representação hexadecimal (base 16).
A partir de então, conforme veremos, é adotado como oficial (notação científica para o Censo e outras aplicações) o rótulo hexadecimal de células da grade oficial, tendo como primeiro dígito os rótulos do mapa acima, do nível L0.
Formação da grade científica nacional
A partir dos quadrados da cobertura nacional será formada a grade, de modo que são apelidados de "células da grade nivel zero" (abreviadamente "células L0"). As células são todas iguais, com mesma área e formato.
Em seguida cada célula L0 é subdividia sucessivamente em 4:
- A primeira subdivisão das células L0 resulta em células da grade nível L1, cada uma das 4 células com lado h1 = h0/2 ≈ 256 km.
- Em seguida a subdivisão das 4 células L1 resulta em células da grade nível L2, cada uma das 4 células com lado h2 = h1/2 = h0/4 ≈ 128 km. A cada célula L0 correspondem portanto 4×4=16 células L2.
- Em seguida a subdivisão das 16 células L2 resulta em células da grade nível L3...
- ... Até chegar nas células da grade nível L19, com 1 m de lado.
A grade nacional L0 tem 16 células ao todo cobrindo o territóreio nacional, de modo que são ao todo 16×4=64 células L1, células L2, e assim por diante, até que no nível L19 as células possuirão 1 metro de lado, e serão bilhões de células cobrindo o território nacional.
O indexador desse conjunto hierárquico de grades não é um número mas um código natural, de modo que a rotulação numérica hexadecimal tradicional foi extendida para que todos os códigos possam ser devidamente representados, além dos níveis pares:
Há ainda a possibilidade de criar "grades degeneradas", geometricamente unindo células vizinhas da sequência de indexação. Essa união de vizinhas resulta em grades retangulares ao invés de quadradas, e seu nível hierárquico é contabilizado como "nível meio" (L½, L1½, L2½, ...).
O efeito prático disso é o mesmo que subdividir em 2 sucessivamente, de modo que todos os códigos binários com 1 a 19×2=38 dígitos binários (bits) podem ser representados por células em 38 grades distintas. As células dessas grades serão sempre identificadas por um código expresso na "notação científica", a base16h (que é a hexadecimal extendida).
Geocódigo logístico
Um subconjunto de grades obtido da representação dos 1 a 38 bits em um prefixo seguido de blocos de 5 bits (representáveis pela base32) é utilizado nas aplicações logísticas, tendo em vista que o código hexadecimal é muito longo para o ser humano memorizar.
Para o código logístico, é necessário ter um código mais fácil de recordar, composto de:
- um prefixo, muito fácil de lembrar porque é o próprio município descrito no formato: BR-SP-SJC (Exemplo de São Jose dos Campos)
- um sufixo de 4 a 6 caracteres
Para chegar no código logístico, o prefixo BR-SP-SJC aponta para a cobertura do município, ou um índice de até 30 células que cobrem o município, sendo que cada uma é associada a um caractere, escolhido num alfabeto de 32 caracteres, descrito aqui:
Estas 30 células cobrem o município de maneira otimizada. São as células da cobertura do município. Só definimos até 30 células para ter 2 caracteres de reserva, caso tenha alguma mudança no polígono do município.
O digito correspondente à cada célula de cobertura vai ser o primeiro digito do sufixo do código logístico.
Cada uma das células da cobertura é dividida em 32, sucessivamente, até chegar a um nível de 1 m. Cada vez que a célula é dividida em 32, o sufixo do código é acrescido de um digito.
No momento de definir a cobertura do município, é possível privilegiar a cobertura da área urbana para garantir que o código seja mais curto nestas áreas, ou que a zona apontada seja menor com o mesmo número de caracteres. Podemos considerar como padrão ter sufixos de 6 dígitos, sendo que na área urbana, estes 6 dígitos apontam para células de 6m e na área rural, apontam para áreas de 32m.
As coberturas todas, de todos os municípios, não é uma caixa preta como a definição dos bairros. O padrão DNGS exige que as coberturas municipais sejam dados abertos. No caso dos AFAcodes da Colômbia, que implementam DNGS, os dados das coberturas municipais estão em https://git.afa.codes/CO_new/blob/main/data/coverage.csv