osmc:Convenções/Coberturas municipais

De Documentação
Coberturas base e overlay de Tunja (CO-15001).

Conceitos de cobertura-base e cobertura-overlay. Nas ilustrações tomaremos o exemplo de Tunja, primeiro municipio da Colômbia a adotar os OSMcodes.

Para que o osmCode logístico possa fazer uso de um prefixo mnemônico, que conforme o país será baseado no nome ISO (ex. BR-SP-Campinas) ou no código oficial do município (ex. CO-15001); é necessário que o sufixo, baseado em grade, seja totalmente compatível com a geometria do município.

Grade de referência

Em países pequenos, conforme destacado nas decisões soberanas sobre área territorial do país, apenas a grade científica é usada (geocódigos base16h orientados a dígitos de 4 bits).

Em países maiores, é necessário usar um geocódigo mais compacto, com dígitos de 5 bits (notação de base 32). Para tanto é eleito um subconjunto da grade científica que seja compativel com 5 bits a partir da grade de 1 metro. Esse subconjunto é denominado Grade logística. Apesar de ser compatível entre diferentes municípios do país, ele não é utilizado como "grade nacional", apenas como "grade municipal", justamente porque seu geocódigo parte do prefixo mnemônico da jurisdição municipal.

Cobertura-base

Cobertura-base de Tunja, composta de 11 células, já rotuladas pelo indexador base32.

É o conjunto de células maiores da grade logística municipal: elas não possuem "células-mãe". Se der sorte de o município ter mais que 25% do seu território coberto por uma única célula, a indexação e a cobertura-base serão dispensadas, mas isso é muito raro de ocorrer. Numa situação típica elege-se o nível de grade com 2 a 30 células.

Ver também osmc:Convenções/Coberturas municipais/Algoritmos#Cobertura-base.

Cobertura-overlay

Se a cobertura-base não gastou muitas células (menos que 30) e se o município não é dominado por áreas urbanas, pode-se otimizar os geocódigos do núcleo urbano com células de cobertura menores.

Osmc-Tunja-Overlay-build.png

Acima a construção da cobertura-overlay de Tunja a partir da grade científica, buscando-se as áreas urbanas contíguas a partir do núcleo; e seu resultado já indexado em complemento à cobertura-base. O núcleo urbano do município é definido pela Wikipedia: no caso de Tunja fixou-se geo:5.5333,-73.3667.

A finalidade da cobertura-overlay é proporcionar maior encurtamento de geocódigo nas áreas urbanas ou mais densamente povoadas, atendendo melhor a um número maior de usuários. Devido à alta concentração em pequenas regiões, pode relevante. Na ilustração a distribuição populacional da Colômbia, destacando grandes vazios e picos de densidade populacional.

OSMC-cover-overlay-pop-CO.png

A estratégia de privilegiar essas regiões foi usada em outros geocódigos, tais como CEP, ZIP code, Mapcod e PlusCode. Em particular a estratégia de coberturas heterogêneas adotada, para reduzir dígitos, é muito parecida com a Mapcod.

Visualização

Quando o município faz uso de cobertura-overlay, a melhor forma de mostrar a grade de referência é destacando a distribuição de geocódigos com e sem overlay.

Osmc-Tunja-gredeLogisticaInicial.png

Grade logistica incial de Tunja, onde se percebe a redução em 1 dígito nas áreas urbanas centrais (contorno azul), devido ao uso de overlay. A reserva pode ser utilizada tanto para resolver problemas de alteração de borda, como para expandir a área urbana (no caso uma segunda zona de crescimento urbano já perceptível).

No exemplo abaixo a cobertura completa de BR-SP-Campinas, onde, supondo estabilidade, a opção foi por adotar o máximo de overlays, tendo em vista que a cobertura-base é mais grosseira. Toda a área urbana, presente e "futura" está contemplada.

CoverSamples-BR-SP-Campinas.png

Estabilidade e reserva

Quando uma cobertura municipal é criada, a recomendação é deixar uma reserva de pelo menos 2 células. Elas serão adicionadas com novos índices em caso de expansão ou mudança territorial.

Importante lembrar que mudanças "por equivoco" não ocorrem devido ao "projeto OSM Stable", e os índices (primeiro dígito) não mudam mais depois que a cobertura é homologada com os representantes da jurisdição.

As seguintes situações, com respectivos riscos de ocorrência e impactos, podem ocorrer sobre o geocódigo logístico, quando oficialmente utilizado como código postal:

Situação Risco Impacto nos geocódigos
Mudança de nome baixo Nenhum se o país não usa nome, como no caso da Colômbia (usa DIVIPOLA).
Baixo se usa nome. Requer gestão de transição do prefixo, como no caso do Brasil.
Mudança territorial por imprecisão cartográfica médio Baixo. A mudança "sutil" de fronteiras é bem documentada no OpenStreetMap. No OSMcodes são gerenciadas por períodos de estabilidade através do "projeto OSM-Stable", no git. O impacto maior é a troca de município em endereços próximos da fronteira, portanto troca de prefixo e/ou de dígito indexador. O sufixo, mesmo de endereços da cidade vizinha, não é afetado, justamente por regra de construção do OSMcodes Logístico, todo baseado na mesma grade.
Aumento acentuado percentual urbano médio condicional Mínimo. Os moradores de áreas recém-urbanizadas recebem positivamente o impacto de novos overlays, que proporcionam geocódigos mais curtos (tipicamente impacto da troca de 2 dígitos pelo indexador). Em seguida, com o consumo da reserva, não haverá mais esse benefício, mas ao contrário, não há pressão da população por esse benefício, justamente por haver pressão maior por estabilidade.
Condição de risco: quanto maior o município, menor o risco de aumento percentual de área urbanizada. No Brasil, p. ex., o risco maior é nos 8% de municípios com menos de 100 km2.
Mudança territorial por demarcação baixo Baixo se absorvido por coberturas de reserva, com impacto análogo ao caso da mudança por imprecisão.
Alto se não-absorvido. A mudança por demarcação é arbitrária, podem ocorrer desmembramentos ou acréscimos, até mesmo extinção de municípios. Cabe à jurisdição afetada gerenciar o impacto.

A noção mais realista da estabilidade territorial das unidades jurídicas de um país vem da estatística aplicada ao histórico principalmente jurídico. O número médio anos que ficou sem uma mudança, dentro de uma amostra de 20 anos, e a média de mudanças por ano, são indicadores do risco.

Alguns indícios podem ser levantados com apoio do OSM e da Wikidata, mas o ideal é realizar o levantamento com apoio do órgão local (por ex. IBGE no caso do Brasil e DANE no caso da Colômbia). o levantamento de evidências e a estimativa de risco/estabilidade é pré-requisito para a assinatura de acordos, principalmente quando envolvendo o compromisso de uso do OSMcodes como código postal oficial.

(Pendências)

Overlay:

Algoritmo de overlay:

  1. cobrir area urbana;
  2. ordenar células overlay por % de área urbana que contém;
  3. Ficar com as que cobrem maior area, até limite de 30 celulas.

Humanos calibrando valor de resto e de poeira

Em alguns casos como SaoJoaoCariri ainda cabe o uso de uma cobertura-base mais densa: neste caso com 31 celulas. E talvez avaliar de um pouco mais de 100 m2 ajude a descartar celulas de poeira.

Grade científica municipal

Para apenas um caracter, como o último dígito não é hexadecimal, apenas 834 municípios contemplam. Para 2 caracteres (covers_frstdigit), incluem-se mais 3787-834=2953 municípios. Ainda bom já que as coberturas possuem 5, então economizam o prefixo de 5-2=3 dígitos através do nome abreviado do município.

Todos os restantes apresentam coberturas municipais com mais de 16 células, de modo que precisam ser primeiro aglutinadas, ver segunda query.

ATENCAO: a representação cbits inclui no prefixo o país, para ficar só com o geocódigo local precisa remover os primeiros 8 bits! portanto tava tudo errado e precisa refazer! por hora está com algum bug pois expande com um zero na frente.

Caso de BR-AL-Belem, suas das células de cobertura são derivadas da subdivisão-em-8 das células-mãe "7774", "7775", "7776" e "7777". Abaixo a cobertura completa, destacando apenas o último dígito.

Da célula "BR+7775" são utilizadas apenas as filhas "7775S" e "7775T"
AfaCode cientific-BR-AL-Belem.png.png

Ou seja, da "7774" foram utilizadas as filhas "Z" e "Y"; da "7775" (em destaque) as filhas "S" e "T"; da "7776" as filhas "N" e "P"; da "7777" as filhas "J" e "K".

A célula "7775S" se subdivide em "8" e "9" e a célula "7775T" em "a" e "b". Só a partir desta subdivisão que os geocódigos adquirem hierarquia consistente, preservando o primeiro dígito. Por isso é recomendado a prefeitura iniciar sua grade pelo primeiro nível hexadecimal, caso não seja sua cobertura. Nesse caso o elegante, para se manter hierárquico seria uma cobertura de 11 células já que nem todas fazem parte.
CREATE VIEW tmp_br_gradecientifica_direta16  AS
 SELECT *, cardinality(covers_frstdigit)=n_covers AS is_eq
 FROM (
  select  isolabel_ext, length(covers[1]) len,
          array_text_to_distright(covers,2) as covers_frstdigit,  -- para 1 só usar array_text_to_distright(covers)
          cardinality(covers) n_covers
  from (
    select isolabel_ext, array_agg( natcod.vbit_to_baseh(substring(cbits,11),16,true)  order by cbits) AS covers
    from osmc.coverage 
    where not(is_overlay) and  isolabel_ext like 'BR-%-%'
    group by 1
  ) t1 where cardinality(covers)<=16
 ) t2
 WHERE cardinality(covers_frstdigit)=n_covers
 ORDER BY 5 desc,1
;

-- restantes 1783 municípios resolvidos fazendo agregação parcial com corte do último dígito. Em média cortamos 3 dígitos com o prefixo
 SELECT *, cardinality(covers_frstdigit) AS n_covers2
 FROM (
  select  isolabel_ext, length(covers[1]) len,
          array_text_to_distleft( array_text_to_distright(covers,3), 2) as covers_frstdigit,  -- para 1 só usar array_text_to_distright(covers)
          cardinality(covers) n_covers
  from (
    select isolabel_ext, array_agg( natcod.vbit_to_baseh(substring(cbits,11),16,true)  order by cbits) AS covers
    from osmc.coverage 
    where not(is_overlay) and  isolabel_ext like 'BR-%-%'
    group by 1
  ) t1 where cardinality(covers)>16
 ) t2
 ORDER BY 5 desc,1
;

Exemplos:

          isolabel_ext          | len |    covers_frstdigit     | n_covers | is_eq 
--------------------------------+-----+-------------------------+----------+-------
 BR-AL-Belem                    |   6 | {J,K,N,P,S,T,Y,Z}       |        8 | t
 BR-AL-Canapi                   |   5 | {H,M,R,V}               |        4 | t
 BR-AL-CoqueiroSeco             |   6 | {J,N,P,T,Y}             |        5 | t
 BR-AL-PaoAcucar                |   5 | {H,M,R,V}               |        4 | t
 BR-AL-Paripueira               |   6 | {J,K,N,P,S,T,Z}         |        7 | t
 BR-AL-Penedo                   |   5 | {H,M,R,V}               |        4 | t
 BR-AL-SantaLuziaNorte          |   6 | {J,K,N,P}               |        4 | t
 BR-AL-Satuba                   |   6 | {J,K,P,S,Y,Z}           |        6 | t
 BR-AM-Jurua                    |   4 | {G,Q}                   |        2 | t
 BR-BA-Abaira                   |   5 | {H,M}                   |        2 | t
 BR-BA-Alagoinhas               |   5 | {H,M,R,V}               |        4 | t
 ...
 BR-TO-PortoAlegreTocantins     |   5 | {H,R}                   |        2 | t
 BR-TO-PresidenteKennedy        |   5 | {H,M,R,V}               |        4 | t
 BR-TO-RioBois                  |   5 | {H,M,R,V}               |        4 | t
 BR-TO-TaipasTocantins          |   5 | {H,M,R,V}               |        4 | t
 BR-TO-Tupirama                 |   5 | {H,M,R}                 |        3 | t
 BR-TO-Tupiratins               |   5 | {H,M,R,V}               |        4 | t
 (834 rows)


          isolabel_ext           | len |                 covers_frstdigit                  | n_covers
---------------------------------+-----+---------------------------------------------------+---------
 BR-AC-Acrelandia                |   5 | {1H,1R,1V,3H,3M,4R,6H}                            |        7
 BR-AC-AssisBrasil               |   5 | {1H,8R,8V,9R,aH,aM,aR,aV,bH,bM,bR,dV,fM}          |       13
 BR-AC-Brasileia                 |   5 | {1M,aM,bH,bM,bR,bV,cR,cV,eH,eM,eR}                |       11
 BR-AC-Bujari                    |   5 | {2H,5R,5V,7H,7M,7R,7V,dH,dM}                      |        9
 BR-AC-Capixaba                  |   5 | {0H,5M,aR,aV,fV}                                  |        5
 BR-AC-CruzeiroSul               |   4 | {2Q,3Q,8G,9G}                                     |        4
 BR-AC-Epitaciolandia            |   5 | {cV,dR,eH,eM,eV,fH}                               |        6
 BR-AC-Feijo                     |   4 | {3G,3Q,6Q,9G,cG}                                  |        5
 BR-AC-Jordao                    |   5 | {0V,1R,2M,2V,3H,3M,3R,3V,8M,9H,9M,9R,9V}          |       13
 ...
 BR-TO-TaipasTocantins           |   5 | {6H,6M,6R,6V}                                     |        4
 BR-TO-Talisma                   |   5 | {4H,4M,4R,4V,5H,5R,6M,7H,7M}                      |        9
 BR-TO-Tocantinia                |   5 | {2H,2M,2R,2V,8H,8M}                               |        6
 BR-TO-Tocantinopolis            |   5 | {1M,bH,bM,bR,bV}                                  |        5
 BR-TO-Tupirama                  |   5 | {8R,aH,aM}                                        |        3
 BR-TO-Tupiratins                |   5 | {0H,0M,aR,aV}                                     |        4
 BR-TO-Wanderlandia              |   5 | {8M,8V,9H,9R,aM}                                  |        5 
 BR-TO-Xambioa                   |   5 | {8R,aH,aR,dV,fM}                                  |        5 
 (3787 rows)


  isolabel_ext         |len |          covers_frstdigit                      |n_covers | n_covers2 
-----------------------+----+------------------------------------------------+---------+-----------
 BR-AP-LaranjalJari    |  5 | {23,29,2f,33,36,4a,83,84,85,...,8d,98}         |      29 |        15
 BR-MT-Querencia       |  5 | {07,0d,0f,10,11,12,13,14,16,18,19,1a,bb}       |      29 |        13
 BR-AC-Tarauaca        |  5 | {38,39,3a,3b,3c,3d,3e,3f,90,91,94,95}          |      28 |        12
 BR-AM-Beruri          |  5 | {14,b1,b2,b3,b6,b8,b9,bb,bc,bd,be,bf}          |      28 |        12
 BR-MS-RibasRioPardo   |  5 | {07,0c,0d,0e,0f,12,18,1a,24,25,27,30}          |      29 |        12
 ...
 BR-PR-Marumbi         |  6 | {6b,6e,c4}                                      |     17 |         3
 BR-RN-SaoVicente      |  6 | {de,df,f5}                                      |     17 |         3
 BR-RS-Cidreira        |  6 | {a3,a4,a6}                                      |     17 |         3
 BR-SC-Mondai          |  6 | {54,56,57}                                      |     17 |         3
 BR-SC-SaoJoseCedro    |  6 | {73,76,77}                                      |     18 |         3
 (1783 rows)


Ver também

  • ...