Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incluir coluna de prefixo ou máscara de CEP #15

Open
ppKrauss opened this issue Jul 10, 2018 · 0 comments
Open

Incluir coluna de prefixo ou máscara de CEP #15

ppKrauss opened this issue Jul 10, 2018 · 0 comments
Labels
enhancement standardization enhancement by convention adoption

Comments

@ppKrauss
Copy link
Contributor

ppKrauss commented Jul 10, 2018

Apesar de ser um conversão simples da coluna de postalCode_ranges, o prefixo será o dado padronizado utilizado com mais frequência nas aplicações simples e por projetos como OSMBrasil/CRP ou CLP.

PS: esta é uma demanda também na Wikidata, que idealmente deveria apresentar uma "máscara de CEP" baseada no prefixo. Assim ao invés de P281 os municípios brasileiros seriam marcados pela máscara. Por exemplo São Luiz do Paraitinga/SP (Q1646919) tem indicado apenas o CEP inicial 12140-000 mas o correto seria o prefixo, 121**-*** (ou 121[456].-...) relativo ao intervalo [12140-000 12169-999].

A remoção do prefixo ajuda a dar uma ordem de grandeza do número de vias de uma cidade, e para o número de dígitos necessários para se endereçar diretamente as vias.

Municípios pequenos como Abadia de Goiás/GO com CEPs [75345-000 75349-999] (portanto prefixo 7534) e Acaiaca/MG com CEPs [35438-000 35438-999] (portanto prefixo 35438), podem ter o código de rua integralmente baseado no CEP, e reduzido a no máximo 5 e 3 dígitos respectivamente. Na maioria dos casos, como a convenção de "código de via baseado em CEP" é relativa ao menor CEP atribuído à via (em estudo a convenção de removendo-se os zeros da direita), o número de dígitos pode ser ainda menor.

Nas maiores cidades os prefixos são menores devido ao adensamento maior (São Paulo por exemplo tem prefixo de tamanho 1). São por volta de 90 municípios com prefixo de "tamanho 2 ou 1". Todos os demais ~5460 apresentam em média prefixo tamanho 4, levando portanto a códigos de via urbana de 4 dígitos (8-4), comprovando a sua viabilidade como "código opcional oficial da via municipal" no projeto CLP.

CREATE VIEW citybr_poprefix AS
  SELECT state, "lexLabel", 
                extract_common_prefix(x[1],x[2]) cep_prefix, 
                (x[2]::bigint-x[1]::bigint)::int as cep_diff,
                "postalCode_ranges"
  FROM (
    SELECT state, "lexLabel", "postalCode_ranges",
        regexp_split_to_array(  regexp_replace("postalCode_ranges",'[\[\]\-]','','g')  , ' ') x
    FROM citybr where not("postalCode_ranges" like '%] [%' or "postalCode_ranges" is null)
  ) t
;
SELECT avg(length(cep_prefix)) as tamed, stddev_pop(length(cep_prefix)) as tamed_err, 
              avg(cep_diff) as avgdiff, stddev_pop(cep_diff) as avgdiff_err,
            count(*) as n
FROM citybr_poprefix WHERE length(cep_prefix)>2; 
-- 3.9 | 0.4 | ...| 5461

Mais precisamente 4652 apresentam tamanho 4 ou 5.
PS: nestes a média da cep_diff é de ~5640 ± 3200, ou seja, foram reservados de 2400 a 9000 CEPs para a grande maioria dos municípios brasileiros (mesmo as exceções ficam entre min. 499 e máx. 9999). O número de códigos será da ordem de 1/10 ou menos que isso (pode-se confirmar também por amostragem no OpenStreetMap).

Exemplos:

state lexLabel cep_prefix postalCode_ranges
GO abadia.goias 7534 [75345-000 75349-999]
MG abadia.dourados 3854 [38540-000 38549-999]
GO abadiania 729 [72940-000 72959-999]
... ... ... ...
BA alagoinhas 48 [48000-001 48107-999]
PA ananindeua 67 [67000-001 67199-999]
SP bauru 17 [17000-001 17119-999]
MG belo.horizonte 3 [30000-001 31999-999]
... ... ... ...
@ppKrauss ppKrauss added enhancement standardization enhancement by convention adoption labels Jul 10, 2018
@ppKrauss ppKrauss changed the title Incluir coluna de prefixo de CEP Incluir coluna de prefixo ou máscara de CEP Jul 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement standardization enhancement by convention adoption
Projects
None yet
Development

No branches or pull requests

1 participant