osmc:Metodologia: mudanças entre as edições

De Documentação
m (reordenando ilustracoes)
Linha 32: Linha 32:
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.
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 a grade ''L1'' é obtida da subdivisão sucessiva das células ''L0'' em 4,
Em seguida cada célula ''L0'' é subdividia  sucessivamente em 4:
[[Arquivo:Osmc-refinamentoQuadrada-v2.png|centro|480px]]
[[Arquivo:Osmc-refinamentoQuadrada-v2.png|centro|480px]]


resultado em uma grade com 4*16 =64 células, e assim sucessivamente.
* 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 ''h''<sub>1</sub> =&nbsp;''h''<sub>0</sub>/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 ''h''<sub>2</sub> =&nbsp;''h''<sub>1</sub>/2 =&nbsp;''h''<sub>0</sub>/4 ≈&nbsp;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.
   
   
subdivisão acumulada em 4^L celulas no nivel ''L''.
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.
Por exemplo na grade de nivel L=3 cada celula-mae L0 foi subdividida em 4^3=64 celulas menores, de 512/x=y km para garantir que cada quadrante seja representado por um digito hexadecimal. O tamanho do quadrante obedece a  uma selecao restrita a potencias de 2.
 
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 [[Código_natural/Notação_posicional#Base_Nh|extendida]] para que todos os códigos possam ser devidamente representados, além dos níveis pares:


[[Arquivo:OsmCodes-hierarquiaBase16h-full3.png|centro|semmoldura|780px]]
[[Arquivo:OsmCodes-hierarquiaBase16h-full3.png|centro|semmoldura|780px]]


A grade  cientifica do país é obtida da subdivisiçāo successive dos quadrantes em dois.
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 [[Código_natural/Notação_posicional#Base_Nh|base16h]] (que é a hexadecimal extendida).  


Cada bloco é dividido em 2, sucessivamente, até chegar a células de 1 m de lado.
== Geocódigo logístico ==


Este conjunto de grades com tamanhos de células que vão de 1 m a 1048 km (para o Brasil), é o conjunto das grades científicas.
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:
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
* 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:
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:
Linha 64: Linha 69:


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.
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

Edição das 16h11min de 6 de janeiro de 2024

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.

Projeção igual-área nacional da Colômbia. Não é perfeita mas é satisfatória para o Censo.
As tonalidades (vermelhas e azuis) representam o perfil de distorção de área (inferior a 2%) na projeção cilíndrica UTM oficial da Colômbia, "resolución 471 de 2020 del IGAC".
Potências de 2, partindo do metro e crescendo até o valor correspondente à largura das células da cobertura L0.
Conforme a convenção IEC de prefixos binários, múltiplos de 1024 metros são abreviados como Kim (kilobinary meter).

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".

Osmc-CO-coverEx1.png

Em seguida os 16 quadrados recebem indexadores (rótulos) sequenciais no lugar de coordenadas ij.

Osmc-CO-coverEx2.png

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.

Indexação de L0 ajustada à Curva-Z.

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:

Osmc-refinamentoQuadrada-v2.png
  • 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 h1h0/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 h2h1/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:

OsmCodes-hierarquiaBase16h-full3.png

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" (, 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