telecomHall BR

 

Hunter Converter - Endereços para KML (Coordenadas no Google Earth)

quinta-feira, 15 de dezembro de 2011 18:23:00 Categories: Access Conversores Hunter
Rate this Content 7 Votes

A conversão de Endereços para Coordenadas é um assunto que desperta o interesse das mais variadas áreas, não apenas de Telecom.

 

 

E um dos motivos é que esse mapeamento está cada vez mais presente em nosso dia-a-dia, por exemplo quando recebemos uma lista de Endereços, e precisamos por exemplo fazer uma análise de cobertura em cada ponto.

Existem diversas formas de se obter essa conversão, desde a forma manual até a totalmente automatizada. Quando não temos um procedimento padrão para a obtenção desses dados, acabamos desperdiçando muito tempo.

Assim, vamos conhecer hoje um pouco mais sobre esse assunto.

 

Download

Para baixar os arquivos de exemplo deste tutorial, clique aqui.

Para fazer uma doação (ou saber mais), e receber TODOS os arquivos do Sistema Hunter, incluindo códigos fonte, clique aqui.

 

 

Objetivo

A partir de uma lista de Endereços, obter uma outra lista com as informações de Coordenadas, por exemplo para ser usado em um relatório de cobertura de cada ponto.

 

Estrutura de Arquivos

Você já está acostumado com a Estrutura Hunter.

No tutorial de hoje, adicionamos os diretórios como mostrados a seguir.

 

Lembre-se que os arquivos de exemplo sempre se referem a uma estrutura baseada no diretório ‘C:\’, seguido da pasta ‘Hunter’, e demais subdiretórios. Se você copiar os arquivos de exemplo para um outro local (diretório), precisará fazer os ajustes apropriados para que a mesma funcione corretamente.

Uma forma bem simples de se obter a estrutura padrão é simplesmente:

  • Desanexar o arquivo ‘.ZIP’ recebido na pasta raiz ‘C:\’.
  • Clicar com o botão direito do Mouse, e escolher ‘Extrair Aqui...’, respondendo sim para qualquer eventual arquivo existente.

Assim, com a estrutura criada, basta acessar o script, e rodar a Aplicação.

 

Formas de se obter as Coordenadas a partir de Endereços

Existem diversas formas de se obter as Coordenadas (latitude e longitude) a partir de um Endereço válido.

Manualmente

A forma mais simples, claro, é a obtenção manual, porém dependendo da quantidade de registros (Endereços) muitas vezes se torna inviável. Ou pelo menos demanda muito tempo.

Uma das vantagens da obtenção das Coordenadas manual e individualmente é que pelo menos já podemos fazer uma análise crítica, ou seja, os resultados serão bastante precisos, pois você vai corrigindo qualquer inconsistência a medida que vão surgindo os problemas.

Uma forma comum de se fazer isso manualmente é acessar o Google Maps ou Google Earth, digitar o Endereço, e então verificar a localização desejada.

 

Através de Serviços e Websites

Outra forma possível é utilizando o serviço de WebSites que forneçam esse serviço.

Basicamente você envia um arquivo como uma Planilha do Excel com os seus dados, e recebe de volta um arquivo com o resultado, incluindo os registros que puderam ser identificados, bem como os que não puderam ser localizados.

Entretanto, essa solução tem alguns detalhes que podem acabar se tornando um problema.

A primeira delas é a limitação. Muitos desses sites permitem apenas uma certa quantidade por dia. E o motivo para isso é simples: eles utilizam as API’s de provedores como o Google ou Yahoo! Como esses provedores limitam o número de requisições diárias, ou geocodificações, esses sites precisam fazer o mesmo com os usuários, ou seja, você.

A segunda, é que muitos sites não oferecem um bom serviço, e muitas vezes requerem manipulação dos dados – colocando os mesmos no formato deles. Além de cobrarem pelo serviço!

A terceira, e talvez a mais importante, é que os seus dados serão enviados para um servidor externo, ou seja, os seus dados podem ser acessados por outras pessoas!

 

Através de Programas Cliente

A terceira forma para se geocodificar Endereços é através da utilização de programas locais, do tipo Cliente.

Nesses casos, o programa também requer que o usuário obtenha uma Chave da API de algum provedor de serviço de geocodificação, como os já mencionados Google ou Yahoo!

 

Solução Hunter

A nossa solução de hoje não utiliza entretanto nenhuma dessas opções mencionadas.

Vamos usar um pouco de raciocínio lógico: Se você digita um Endereço qualquer num desses geocodificadores, o que acontece?

Se o Endereço estiver correto, ele encontra! Se não, pede que você corrija e tente novamente, às vezes oferecendo algumas opções ou sugestões.

Então, vamos utilizar o programa Cliente Google Earth, e fazer uma geocodificação manual.

Considere que temos uma relação de Endereços válidos, e um deles é ‘Torre Eiffel, Paris’.

Digite isso na caixa de busca do Google Earth, e tecle ‘Enter’.

 

Temos então o ponto ‘A’, o nosso Endereço buscado – obviamente com suas correspondentes Coordenadas! (Para ver as Coordenadas, clique no ponto A e escolha Propriedades com o botão direito do mouse).

 

O que fizemos? Entramos com um Endereço no Google Earth, e ele nos retornou um ponto.

E sabe qual a melhor parte disso? Podemos entrar com esses dados através de um arquivo simples, no formato ‘KML’ do Google Earth. Basta para isso colocarmos o Endereço entre as tags ‘address’!

 

Nota: Lembre-se que este é um arquivo de texto, e pode ser criado até com o Bloco de Notas do Windows.

Ao abrirmos esse arquivo, o resultado é o mesmo: surge um ponto no local do Endereço.

E agora você deve estar se perguntando: mas e como eu posso ver as Coordenadas? Preciso clicar com o botão nesse ponto (e todos os demais da minha lista)?

A resposta é não. Simplesmente clique com o botão direito no mesmo arquivo que você abriu (que fica em ‘Lugares Temporários’), e ‘salve’ novamente esse arquivo – lembrando de salvar com a extensão ‘KML’ (Você pode inclusive sobrescrever o arquivo original).

 

Em seguida, localize o local onde você salvou esse arquivo, clique com o botão direito do mouse, e escolha Abrir com Microsoft Excel.

 

O Excel vai perceber que não é uma das extensões padrões dele, e questionar. Clique em ‘Sim’ para continuar.

 

Continue clicando ‘OK’ para abrir como uma tabela ‘XML’.

 

Pronto, temos aí os nossos dados: Endereço e Coordenadas juntos! (A notação é Longitude, Latitude, Altitude).

 

E é claro: fizemos isso com um único ponto, mas podemos fazer para quantos desejarmos.

Tudo bem, mas nós não queremos repetir esses passos manualmente para uma lista (embora, como dissemos, isso é possível). Então, criamos uma aplicação simples no Access ou Excel – como as que estamos acostumados a criar – para gerar o arquivo para nós.

Assim, de forma criativa, utilizamos apenas o Google Earth e vimos como obter nosso resultado esperado de forma prática, rápida e eficiente!

 

A Aplicação

Você que é usuário Hunter, já recebeu a aplicação de exemplo em seu e-mail. Ela é bem simples, então vamos vê-la em ação, num exemplo mais prático.

Rodando o script, temos acesso à uma interface bem simples, onde podemos selecionar (1) onde se encontra o arquivo inicial (2) com a nossa relação de Endereços. Clicando no botão do Google Earth (3), esses dados são então processados, e obtemos um arquivo ‘KML’.

Temos também a opção de editar diretamente esse arquivo no Excel (4), e abrir a pasta que contém o mesmo (5).

 

O formato do arquivo é bem simples, e o único campo requerido é , naturalmente, o de Endereço (1).

Os outros dois campos Nome (2) e Descrição (3) servem apenas como auxílio - podem ser deixados em branco.

 

De qualquer forma, é interessante usar um deles, por exemplo a ‘Descrição’. Caso o seu arquivo original tenha várias outras colunas, você poderá fazer então a correlação do arquivo original, e do arquivo final com as Coordenadas – utilizando esse campo como referência para o VLOOKUP no Excel por exemplo. Mas é você quem decide como deseja fazer.

 

Geocodificando uma relação de Endereços

Para podermos demonstrar, precisamos de uma relação de Endereços. Vamos usar a relação de Endereços públicos das escolas da cidade de Vitória, Brasil.

No seu caso, a origem pode ser qualquer, como por exemplo a relação de agências bancárias onde se deseja verificar o atendimento da operadora, por exemplo.

Assim, acessando a página da Prefeitura da Cidade, baixamos os dados.

http://www.vitoria.es.gov.br/seme.php?pagina=listadasemefs

 

Copiando os dados, e colando no Excel, temos o que precisamos.

Adicionando alguns colunas, para o nosso formato de entrada na aplicação. Os dados dos nossos Endereços de exemplo estão separados por coluna, então usamos as fórmulas do Excel para concatenar no formato ‘Nome do Logradouro (Rua, Avenida...), Número Cidade’.

Nota: essa notação é usada no Brasil. Dependendo da sua região, obtenha os dados de acordo com sua nomenclatura. Falaremos sobre isso mais tarde.

 

Pronto, agora abrimos a aplicação do Hunter, e clicamos no botão para Editar (o pequeno lápis ao lado do nome do arquivo a ser tratado).

Com esse arquivo aberto, colamos então os dados das colunas em Verde que adicionamos no arquivo original, com a relação dos Endereços.

 

Feito isso, basta clicar no botão para Rodar. Em seguida, abrimos o arquivo gerado, e seguimos os procedimentos já vistos anteriormente para obter os Endereços e Coordenadas no Excel!

 

Nem tudo são flores...

Infelizmente, nem tudo é tão bom quanto parece. O resultado da geocodificação depende bastante da qualidade dos dados de entrada, ou seja, dos Endereços. Se os mesmos estiverem errados, não teremos Coordenadas retornadas.

Mas também não é tão ruim assim, já que não temos muita coisa a fazer. Por exemplo, se você digita um Endereço que não existe no Google Maps, o que ele retorna?

Nada na maioria das vezes, e quando o Endereço tem erros, ele pode no máximo te apresentar algumas sugestões – nunca decidir por você. Ainda bem, não é mesmo?

Embora esses casos sejam realmente difíceis de serem tratados - já que existem inúmeras possibilidades de erros e formatos de Endereço - pelo menos existem também algumas ações que podemos tomar para tentar minimizar as falhas.

E essas ações representam os tratamentos de erros, ou seja, tentar passar para o geocodificador um Endereço que esteja o mais próximo possível do formato que ele possa reconhecer.

Mas agora uma observação importante: se o Endereço não for reconhecido pelo método que utilizamos acima, é muito provável que ele não seja reconhecido de nenhuma outra forma automática, por exemplo em sites ou serviços que façam a geocodificação automática.

 

Nós podemos ajudar...

Sim, nesses casos nós podemos ajudar, colocando os dado num formato adequado. Mas para colocar dados para um formato adequado, precisamos saber o que o geocodificador espera. E aí?

Embora não existam regras a serem seguidas, podemos começar aprendendo com o mesmo.

Por exemplo, vamos pegar um exemplo da nossa geocodificação.

 

Entrando com um Endereço que utilizamos na caixa de pesquisa, o Geocodificador nos responde de forma mais completa.

Entramos com:

  • RUA PROFESSORA CLARA LIMA, 63 VITÓRIA

E o geocodificador retornou:

  • R. Profa. Clara Lima, 63 - Antônio Honório, Vitória - ES, Brazil

Importante: Perceba que, para nossa sorte, o geocodificador é bem ‘inteligente’, e consegue identificar bastante variações. Por exemplo, com apenas com o nosso dado de entrada, ele identificou corretamente o Endereço e Coordenadas reais.

Mas se podemos ajudá-lo, porque não? Afinal, se tornarmos as coisas mais fáceis para ele, o mesmo conseguirá identificar ainda mais Endereços, e os grandes beneficiados somos nós, concorda?

Do que vimos acima, uma boa prática é então converter as palavras do tipo ‘Rua’ ou ‘Avenida’ para os seus padrões esperados ‘R.’ ou ‘Av.’.

No nosso exemplo, veja que o arquivo original tem a informação do bairro, mas preferimos omití-lo. Isso porque às vezes essa informação acaba atrapalhando – o bairro pode estar digitado de forma errada, ou pior, pode não condizer com a rua (na verdade o Endereço pode ser em outro bairro vizinho).

Basicamente, se tivermos a informação do Nome da Via, Número e Cidade é suficiente para que ele avalie corretamente.

Nota: Outros tipos de informações também trazem resultados positivos, como CEP, mas isso vai depender de como o endereço é mais comum na sua região ou país, ou seja, a nossa aproximação é bem razoável, e outras informações devem ser usadas somente na falta das básicas mencionadas.

Outra informação: O geocodificador não entende sinais de pontuação. Uma boa prática seria substituir todos esses tipos de caracteres, tais como ‘-’ por espaço ‘ ’. Uma única exceção seria o caso do apóstrofo – que deve simplesmente ser retirado: Joe’s vira Joes.

O Endereço deve conter apenas espaços simples – ou seja, remova espaços seguidos duplos, triplos, etc.

Em resumo, devemos buscar obter um Endereço da forma mais padronizada possível.

Mas sempre vão existir casos em que o tratamento – por exemplo através de uma função VBA – é praticamente impossível.

Por exemplo, quando os dados são de péssima qualidade! Isso acontece por exemplo quando temos Endereços do tipo: ‘Esquina da Rua X com Rua Y’, ou ‘Morro do Bambu’. Nesses casos, não precisa dizer: é impossível qualquer tentativa de tratamento.

Endereços escritos de forma errada, Endereços que mudaram oficialmente, novas Cidades que surgem... Tudo isso também precisa ser corrigido manualmente.

De qualquer forma, como mencionamos acima, esse não é um problema da metodologia demonstrada – o Endereço não seria indentificado também em nenhuma outra forma automática.

A saída então é ir alterando os dados, até que se encontre um resultado favorável.

No nosso caso, uma boa dica é fazer a geocodificação com a relação original.

Em seguida, no arquivo do Excel final, corrigir apenas os Endereços que cairam em alguns dos casos acima, e precisam de correção. E rodar novamente somente com os novos dados corrigidos.

 

Conclusão

Hoje vimos como conseguir, de forma criativa, criar soluções inesperadas.

Utilizando apenas o Cliente local do Google Earth, podemos obter as Coordenadas de uma relação de Endereços! Embora o procedimento possa ser feito de forma manual, utilizamos também o auxílio de uma aplicação VBA simples, para agilizar o processo de geração do arquivo ‘KML’.

Dessa forma, evitamos o serviço de terceiros, que ainda por cima, deixa os nossos dados vulneráveis.

Por hoje é isso, esperamos você no próximo tutorial.

Ah, se você gostou, compartilha? É bem fácil usando os atalhos logo abaixo.