R para não Programadores – [3] Um Mapa e Dados das Capitais do Brasil – Curso Prático

November 8, 2016 2 comments Posted in R para não Programadores

Continuando a nossa pequena série R para Todos ainda no tópico sobre “mapas” dinâmicos em interativos, avançaremos um pouco mais.

Nesse publicação iremos apresentar:

  1. o processo de transformar um endereço em coordenadas geográficas,
  2. representar esses endereços em um mapa e
  3. por fim salvar o resultado em uma página html que pode ser usado em qualquer site na sua escola, empresa etc.

Recordar é viver. 🙂 Anteriormente vimos de forma simplificada como é fácil produzir um mapa usando o pacote LeafLet. O mínimo necessário é uma chamada a rotina base com a latitude e a longitude de um ponto específico. O R se encarrega de produzir o resto.

logo depois acrescentamos uns poucos detalhes, mas essencialmente é isso. Definir que precisamos da biblioteca,

e depois a sequência  leaflet() -> addTiles()  -> addMarkers(), onde nos marcadores definimos as coordenadas e a existência de pop up com o nome da cidade, Niterói.

No post seguinte da série, falamos some os provedores de “tiles” de mapas, os blocos de imagens de mapa, que oferecem recursos excelentes de sofisticação aos mapas.

Onde os nomes entre aspas referenciam a modelos de servidores de imagens, que são carregados automáticamente pelo pacote Leaflet.

Mas para uma aplicação realmente interessante, precisamos de algo mais ágil do que enumeração de coordenadas, precisamos da possibilidade de poder inserir blocos de marcadores, melhor ainda de apenas citar os endereços dos locais pelos respectivos nomes.

Sim, é bem + interessante e relativamente fácil, mas para tanto iremos convocar + um pacote feito para o R, o “GGMAP”, que pelo nome já sugere a sua ligação com o Mapas do Google.

O GGMAP implementa vários recursos disponíveis na API do Google, em outro momentos falaremos sobre APIs, agora o que importa é que com uma simples chamada a uma função do ggmap podemos converter endereços em coordenadas e de posse das coordenadas, lançar os marcadores nos mapas. Cool não?

Antes de tudo, precisamos instalar o pacote ggmap.

Como visto, basta ir ao menu Tools >> Install Packages

As mensagens do processo de instalação, servem de guia para saber se tudo ocorreu ok:

e pronto, ja temos o pacote instalado. Prosseguindo.

O nosso exercício será exibir em um mapa um grupo de pontos turísticos de uma cidade. Aqui continuo a mostrar a minha, Niterói, mas você poderá em minutos alterar de acordo com a sua localidade.

Vamos visitar a solução de trás para a frente, primeiro o resultado final, ou seja, o mapa pronto.

 

Aqui o código para produzir o resultado acima:

A princípio basta copiar e colar o código acima em um script em branco no RStudio e logo depois em Source.  Veja aqui como Executar!

E agora as explicações, e parafraseando a citação, para bom entendedor 2 linhas de código bastam.

no início, o óbvio, temos que incluir a referência as pacotes que vamos referenciar.

logo depois, e aqui a parte elegante do processo, graças ao trabalho maravilhoso do Google e de outros gigantes, os endereços são fornecidos na forma de um vetor de cadeias de caracteres, ou “strings”.

Uma pausa!

No R podemos criar vetores com com o coma “c()”.

Um vetor de números de nome “v”pode ser criado, por exemplo, com  o comando

A visão vetorial do R pode ser então facilmente demonstrada com um exemplo onde multiplicamos o conteúdo de um vetor com um comando muito simples:

Fim da pausa!

Voltando ao nosso caso.

Aqui, criamos um vetor, onde cada elemento é um dos endereços de ponto turístico.

Logo depois “chamamos” uma função do pacote ggmap, a geocode(). “Geocode” é o termo em inglês para geocodificação,  e representa a conversão de uma referência genérica em uma coordenada geográfica.  Referências ao final, como usual.

No comando abaixo, a geocode acessa os servidores do Google em busca de uma tradução dos endereços, se houver correspondência as coordenadas são retornadas.

No modo console do RStudio é possível testar se está tudo ok.

Veja na figura anterior que 5 coordenadas foram retornadas! Fica um alerta, nem sempre a forma como entendemos os endereços retorna os resultados esperados, é bom sempre revisar, e em caso de endereços inválidos teremos um retorno do tipo:

onde NA NA , indica não foi possível geocodificar o endereço informado.

E o grande finalle, é entender como o R trata de forma vetorial os resultados obtidos.

Observe que as longitudes, latitudes e os endereços não são enumerados um a um.  A rotina do Leaflet percorre para nós todas as respostas retornadas pelo geocode().

Outro detalhe a destacar é a função retorna um data.frame, um tipo especial de estrutura de dados muito particular do R e que vem sendo copiado em outras linguagens de programação.

Um data.frame é essencialmente um tipo especial de matriz capaz de armazenar tipos de diferentes de dados em suas colunas.

Outra Pausa!

O RStudio oferece facilidades para visualização de data.frames. Ao clicarmos no nome do data.frame no painel Environment podemos visualizar o conteúdo dos mesmos como uma tabela de dados.

Fim da “Outra” Pausa !

O data.frame retornado pela função geocode possui apenas 2 colunas e cada um tem um nome, ou “colname”. Como exercício veja como você pode primeiro investigar que tipo de objeto uma função retorna e depois o que ela contem.

class(nome do objeto)

str( nome do objeto )

Essa viagem toda foi apenas o preâmbulo para explicar aos iniciantes o uso de “locacoes$lon” e “locacoes$lat” em nosso código na linha:

O data.frame locacoes tem 2 colunas, uma se chama lon e outra lat, a referencia ao nome do data.frame seguida de “$” e nome da coluna retorna dos elementos daquela coluna.  Você pode verificar executando o comando no console:

Concluindo o comando addMarkers recebe 5 longitudes e 5 latitudes e 5 endereços e os processa automaticamente de forma transpararente.

Acabou ficando maior do que o esperado.

Exportar esse resultado como uma página html fica para o próximo post!

[R para Todos] é uma proposta didática de atrair progressivamente interessados a aprender a programar em R fora do contexto clássico da Estatística. A Estatística é claro estará sempre por perto nos guiando, mas a abordagem principal aqui será em aplicações menos orientada a matemática e mais a representação da informação. A tarefa é complicada, iremos tentar aos poucos. Entre em contato, deixe a sua sugestão.

Alguns conceitos abordados de modo introdutório:  vetores, funções leaflet e ggmap, data.frame, geocodificação de endereços, class, str.

Artigo anterior : Leaflets, mapas com um novo visual em R

Artigo de apoio: Executando scripts no RStudio. Método Copia e Cola.

Gostou?  Espalhe a notícia! Compartilhe esse link.

O que é a Geocodificação ?

 

 

 

AulasclassCursodatadata.frameframegeocodegggmapLeafletMapaOpenStreetMapProviderRServidores de Imagens de Mapasstr

2 comments

  1. lianagalvao 7 months ago

    Não consegui fazer o geocode() funcionar

    • jkarlos 7 months ago

      Preciso de mais informações sobre o que não funcionou.

      Veja teste primeiro no console do RStudio como na imagem abaixo, a principio voce deve conseguir que o geocode() funcione com algum endereço da sua cidade, como no exemplo abaixo.

Leave a Comment

Related Story
%d bloggers like this: