Autor: Ubirajara Theodoro Schier
A) Objetivo: Escolher qualquer área do mundo no openstreetmap (OSM) e baixar o banco de dados relativo à essa área em XML (o arquivo XML deve ter pelo menos 50MB em tamanho descompactado). O conjunto de dados baixado deve ser auditado, limpo e corrigido para depois ser convertido para JSON e importado em um banco de dados MongoDB.
B) Área selecionada: Procurou-se por uma capital brasileira com endereçamento de postal (cep) por rua cujo tamanho do conjunto de dados ficasse pouco acima dos 50Mb requeridos. Foi escolhido a cidade de Fortaleza, Ceará.
C) Método de Extração dos Dados no OpenStreetMap: Após localizada a cidade de Fortaleza no OSM, deve-se clicar em exportar, onde então irá abrir uma pequena janela indicando as coordenadas limites da área já previamente selecionada pelo OSM para o local pesquisado. Ao clicar no link “Selecionar outra área manualmente”, o site irá exibir a área referente às coordenadas limites, permitindo também, que estas coordenadas sejam automaticamente atualizadas de acordo com a nova área demarcada diretamente no mapa. Uma vez expandido o mapa foi utilizada a “API do Overpass” para download dos dados no formato XML.
D) Padrão de endereçamento: Foi utilizado o padrão de endereçamento dos Correios para validar o conjunto de dados baixado. O padrão é descrito abaixo:
- Tipo do Logradouro + Nome do Logradouro
- Número
- Complemento
- Nome do Bairro
- Nome da Localidade + Sigla da Unidade da Federação
- CEP
Referência: http://www.buscacep.correios.com.br/sistemas/buscacep/cepFormas.cfm
Desta forma, verifica-se que o endereço é constituído de uma string onde a primeira palavra identifica o Tipo do Logradouro sendo o restante da string reservado para identificação do Logradouro.
E) Recursos externos: Para validar o tipo de logradouro será utilizado um webservice dos Correios, disponível para consulta no link abaixo. Foi desenvolvida uma rotina para aproveitar o recurso de pesquisa de endereço disponível neste webservice para localizar um endereço me obter a formatação correta do mesmo segundo o padrão de endereçamento postal dos Correios.
Referência: http://m.correios.com.br/movel/buscaCepConfirma.do
F) Plano de Auditoria do conjunto de dados: Além da área que cobre a cidade de Fortaleza, foi feito também um download de uma área parcial da cidade e também outras áreas pertencentes à região metropolitana de Porto Alegre, Rio Grande do Sul (onde resido). As áreas parciais permitiram a análise de diferentes conjuntos de dados através da observação dos dados diretamente no arquivo XML (utilizou-se o editor Notepad ++).
Após uma verificação do XML definiu-se um plano inicial de auditoria para verificar a qualidade do conjunto de dados.
- Verificar se a tag “addr:housenumber” contêm apenas números
- Verificar se a tag “addr:postcode” está no formato correto (NNNNN-NNN)
- Verificar endereços com o tipo de logradouro inexistente ou incorreto, informado na tag em “addr:street
- Verificar se logradouros sem númeração estão escritos da mesma forma (Ex.: “s/n”).
A auditoria do conjunto de dados por meio das verificações acima descritas irá caracterizar a qualidade dos dados ao que se refere os dados relativos para identificação do endereçamento no conjunto de dados e as soluções de código viáveis para melhorar os dados.
No exemplo abaixo podemos perceber através destas verificações, os problemas críticos relativos aos dados de endereçamento que imaginávamos encontrar.
Como resultado, foram criados 2 dicionários, um contendo as correções possíveis de serem aplicadas ao conjunto de dados e, outro, apontando dados com falhas mas sem recursos para aplicar qualquer tipo de correção.
>>> RESUMO AUDITORIA <<<
>>> Total de Registros Inconsistentes c/ Correção: 73
(‘4876528488:addr:street’, ‘Avenida Her\xc3\xb3is do Acre’)
(‘445466414:addr:postcode’, ‘60822-104’)
(‘501701218:addr:postcode’, ‘60824-245’)
(‘428120551:addr:postcode’, ‘60450-340’)
(‘501448679:addr:postcode’, ‘60824-245’)
(‘4487842685:addr:postcode’, ‘60425-351’)
(‘428120556:addr:postcode’, ‘60450-340’)
(‘3219293376:addr:street’, ‘Rua Joaquim Nabuco’)
(‘361189886:addr:street’, ‘Rua Campus do Pici’)
(‘4176805139:addr:postcode’, ‘60841-240’)
…
>>> Total de Registros Inconsistentes s/ Correção: 7
(‘316686738:addr:street’, ‘R. Prof. Jos\xc3\xa9 Henrique da Silva, Maracana\xc3\xba’)
(‘4831808517:addr:street’, ‘Acesso V, Fortaleza’)
(‘490442339:addr:street’, ‘Av Santa Cec\xc3\xadlia, Eus\xc3\xa9bio’)
(‘420339829:addr:street’, ‘Maria Teixeira Joca, Eus\xc3\xa9bio’)
(‘432884686:addr:street’, ‘Alphaville Fortaleza, Eusebio’)
(‘479608897:addr:postcode’, ‘6830265’)
(‘3129463023:addr:street’, ‘Tv. Guanabara, Fortaleza’)
G) Problemas encontrados no mapa: Foram identificados os seguintes problemas:
- Logradouros sem o Tipo de Logradouro especificado
- Logradouros com o Tipo de Logradouro incorreto segundo padrão dos Correios
- Logradouros sem numeração informado de diferentes formas
- Formato do CEP diferente do padrão NNNNN-NNN segundo padrão dos Correios
- Número e complemento informados na mesma tag (housenumber).
H) Plano de Limpeza e Correção do conjunto de dados:
- Endereço (tag “addr:street”): Testamos e validamos apenas o Tipo do Logradouro de um endereço segundo padrão dos Correios que é composto pela primeira palavra que antecede o Logradouro. Foi possível incluir com precisão o Tipo de Logradouro correto quando não informado com base na pesquisa feita no site dos Correios, representando um diferencial do Plano de Auditoria e Limpeza realizado. Entretanto, para poder diferenciar um Tipo de Logradouro Inexistente de um Tipo de Logradouro incorreto, foi preciso estabelecer uma regra: se os 2 primeiros caracteres do Tipo do Logradouro do endereço estiverem contidos dentro dos 3 primeiros caracteres do Tipo de Logradouro correto, então considera-se o tipo do logradouro incorreto. Caso contrário, ainda verificar-se-á uma lista de abreviaturas antes de concluirmos que o Tipo de Logradouro é de fato inexistente.
- Número (tag “addr:housenumber“): Não há muito o que se corrigir em relação à esta informação, pois ainda não existe uma tag específica para armazenar o “complemento” do endereço, como por exemplo: loja 1, Sala 201, “A”, etc. Se o campo HouseNumber armazenasse apenas o Número, seria aplicável testar e remover caracteres não numéricos.
- Código de Endereçamento Postal (tag “addr:postcode”): O padrão de endereçamento de uma cidade no Brasil vêm sendo aprimorado ao longos dos anos de acordo com o tamanho das cidades. Inicialmente era atribuído um código de endereçamento postal (cep) por cidade, migrando para um Cep por Logradouro. Essas atualizações por parte dos Correios requerem também uma atualização nos postcodes do OpenStreetMap.
A aplicação do plano de limpeza e correção do conjunto de dados, foi feita simultaneamente com a conversão do arquivo XML para JSON. As tags que necessitavam ser atualizadas foram identificadas e corridas durante a conversão por meio do dicionário criado durante a execução do plano de auditoria.
I) Análise dos Dados importados para o MongoDB: Uma vez importados os dados foram executadas algumas consultas a fim de fornecer uma visão estatística do conjunto de dados analisado conforme segue:
>>> ANÁLISE DOS DADOS IMPORTADOS <<<
Análise dos Dados Importados para o MongoDb
> Número de documentos: 242106
> Número de Nodes : 201702
> Número de Ways : 40404
> Número de Usuários : 494
> Top 10 Users:
[{u’count’: 71485, u’_id’: u’Narc\xe9lio de S\xe1′}, {u’count’: 28901, u’_id’: u’anderson stella’}, {u’count’: 9881, u’_id’: u’victorquaresma’}, {u’count’: 9229, u’_id’: u’Daniel de G\xf3es Nepomuceno’}, {u’count’: 8942, u’_id’: u’Jakson Aquino’}, {u’count’: 8445, u’_id’: u’Rub21′}, {u’count’: 7359, u’_id’: u’patodiez’}, {u’count’: 6465, u’_id’: u’Victor Hugo Pereira Soares de Joinville Moura’}, {u’count’: 5416, u’_id’: u’dbusse’}, {u’count’: 4762, u’_id’: u’ediyes’}]
> Tipos de Estabelecimentos (os10+):
[{u’count’: 239801, u’_id’: None}, {u’count’: 368, u’_id’: u’restaurant’}, {u’count’: 234, u’_id’: u’place_of_worship’}, {u’count’: 224, u’_id’: u’school’}, {u’count’: 217, u’_id’: u’parking’}, {u’count’: 194, u’_id’: u’fuel’}, {u’count’: 150, u’_id’: u’fast_food’}, {u’count’: 106, u’_id’: u’pharmacy’}, {u’count’: 87, u’_id’: u’bicycle_rental’}, {u’count’: 86, u’_id’: u’bank’}]
> 10 Restaurantes:
[{u’count’: 3, u’_id’: None}, {u’count’: 2, u’_id’: u’Pizza Vignoli’}, {u’count’: 2, u’_id’: u’Hot Frango’}, {u’count’: 2, u’_id’: u’Marmitaria da Tia’}, {u’count’: 2, u’_id’: u’Restaurante Universit\xe1rio’}, {u’count’: 2, u’_id’: u’Celli Salgados’}, {u’count’: 2, u’_id’: u’Mits Pastel’}, {u’count’: 1, u’_id’: u’Delta Restaurante’}, {u’count’: 1, u’_id’: u’Restaurante T\xf4 Com Fome’}, {u’count’: 1, u’_id’: u’Pizzaiolo Pizzaria’}]
> Ruas (as10+):
[{u’count’: 238136, u’_id’: None}, {u’count’: 124, u’_id’: u’Avenida Jo\xe3o Pessoa’}, {u’count’: 116, u’_id’: u’Avenida Gomes de Matos’}, {u’count’: 104, u’_id’: u’Rua Lago Azul’}, {u’count’: 96, u’_id’: u’Rua Alberto Magno’}, {u’count’: 93, u’_id’: u’Rua Lago Dourado’}, {u’count’: 91, u’_id’: u’Avenida Godofredo Maciel’}, {u’count’: 75, u’_id’: u’Rua Lago Verde’}, {u’count’: 75, u’_id’: u’Rua Passo a passo’}, {u’count’: 61, u’_id’: u’Avenida Jo\xe3o de Araujo Lima’}]
> O que tem nas HighWays (as 10 mais citadas):
[{u’count’: 213529, u’_id’: None}, {u’count’: 19568, u’_id’: u’residential’}, {u’count’: 1621, u’_id’: u’service’}, {u’count’: 1217, u’_id’: u’traffic_signals’}, {u’count’: 1119, u’_id’: u’primary’}, {u’count’: 901, u’_id’: u’footway’}, {u’count’: 793, u’_id’: u’tertiary’}, {u’count’: 592, u’_id’: u’secondary’}, {u’count’: 424, u’_id’: u’primary_link’}, {u’count’: 401, u’_id’: u’bus_stop’}]
> Endereços das Paradas de Ônibus:
[{u’count’: 399, u’_id’: None}, {u’count’: 1, u’_id’: u’Avenida Lauro Vieira Chaves’}, {u’count’: 1, u’_id’: u’Rua Deputado Oswaldo Studart’}]
> Resumo dos CEPs:
[{u’count’: 241443, u’_id’: None}, {u’count’: 391, u’_id’: u’61645-420′}, {u’count’: 9, u’_id’: u’61760-000′}, {u’count’: 9, u’_id’: u’61645-220′}, {u’count’: 6, u’_id’: u’60455-760′}, {u’count’: 6, u’_id’: u’60356-001′}, {u’count’: 5, u’_id’: u’60352-320′}, {u’count’: 4, u’_id’: u’61650-050′}, {u’count’: 4, u’_id’: u’61605-372′}, {u’count’: 4, u’_id’: u’60150-161′}]
J) Outras ideias sobre os dados:
- Em função de ter à disposição uma fonte confiável de dados, foram testados e alterados as tags “addr:street”, “addr:housenumber” e “addr:postcode” quando estes apresentaram divergências. Entretanto, é possível futuramente estender o Plano de Auditoria e Limpeza para validar também o conteúdo do “Logradouro”, bem como, descobrir e incluir o CEP quando não informado.
- Uma grande vantagem percebida foi que além de realizar as tarefas de Limpeza e Correção dos dados, é possível e também importante a realização de uma “Normalização” da estrutura dos dados de acordo com a necessidade.
- A região mapeada possui endereçamento por rua desde 1985, mas ainda assim, 36745 documentos de um total de 36841 não possuem essa informação.
- O importante é que esta solução pode ser replicada para corrigir dados de quaisquer cidades brasileiras que possuem endereçamento de CEP por RUA, pois é através do site dos Correios que podemos recuperar o Tipo do Logradouro quando este não é informado.
K) Benefícios e Problemas da solução implementada:
- Solução: Recuperar o tipo de logradouro de endereços incompletos utilizando o webservice dos Correios:
- Benefícios:
- Benefício 1: A solução utiliza a ferramenta de pesquisa de endereços disponível no próprio webservice. Por meio dela foi possível, mesmo a partir de endereços inconsistentes, efetuar a busca e obter o endereço correto compatível.
- Benefício 2: Os dados são obtidos por meio desta solução sempre em tempo real, gratuitamente, em uma base atualizada dos Correios.
- Benefício 3: A solução pode ser aplicada à qualquer município brasileiro onde o endereçamento postal é feito por logradouro.
- Benefício 4: A solução pode ser ampliada futuramente, possibilitando também auditar, limpar e corrigir os campos logradouros e cep.
- Problemas esperados
- Problema 1: Um problema potencial diz respeito à disponibilidade do webservice. Pode ocorrer do mesmo ficar temporariamente indisponível, ou mesmo tendo um tempo de resposta demorando, afetando o tempo em que se deseja alcançar o resultado desejado.
- Problema 2: Outros problemas técnicos que podem vir a ocorrer são: a substituição tecnológica deste serviço por outro, troca de layout da página, mudança da url de acesso e a implementação de dispositivos de segurança (captcha). Dependendo das mudanças implementadas pelos Correios neste webservice, será necessário uma manutenção do código para adequação ou mesmo ser necessário buscar outra forma de obter uma fonte de dados que possa ser usada como referência.
Be the first to comment on "Estudo de Caso: Dados do OpenStreetMap"