Como fazer um mapa no R

Este é o post de estreia da Renata, nossa nova colaboradora. Que tal aprender a fazer mapas básicos no R?

Kia ora pessoal,

Meu nome é Renata Muylaert e a partir de agora faço parte do time Sobrevivendo na Ciência! Obrigada, Marco e Alexandre, pelo convite!

Quem me conhece sabe o quanto eu amo mapas! E quem está elaborando projetos de pesquisa em diversas áreas (a minha é a Ecologia) sabe o quão valioso pode ser um mapa para o planejamento da coleta de dados e para a interpretação dos resultados.

Mas fazer um mapa não é tão trivial. É comum ter dificuldade para entender coordenadas geográficas, formatos de dados espaciais e até mesmo a portabilidade dos mesmos. Pegar os pontos que você marcou com um GPS em campo e, a partir deles, plotar um mapa eficiente e bonito pode ser um caminho longo.

Neste post não vou focar nas bases da cartografia e dos sistemas de coordenadas geográficas (fica para outro post; você pode ler o básico aqui). Este post é para quem quer sentar e fazer um mapa rapidamente no R com o mínimo de sofrimento possível.

Como exemplo, vou explicar como plotar em um mapa, com direito a grade, escala e norte, alguns locais que visitei na Nova Zelândia (🇳🇿), um país incrível no qual eu tive oportunidade de fazer parte do meu doutorado. Você pode adaptar este script para plotar os pontos de coleta da sua tese ou outros dados similares.

Começando

Se você já tem experiência no R, basta baixar o repositório que eu criei no GitHub, plotar o mapa a partir do script comentado e adaptá-lo para os seus dados e gostos.

Se você for mais noob, recomendo que leia com atenção o post inteiro e os comentários no script.

Coordenadas (latitude e longitude)

Suponhamos que você pegou as coordenadas no sistema mais comumente utilizado, o WGS 84. As informações espaciais serão compostas de no mínimo três colunas: latitude, longitude e identificação do ponto.

Embora sejam somente três inocentes colunas, muitas vezes dados espaciais acabam apresentando intrusões demoníacas após saírem do GPS ou de uma tabela fonte. Ao serem colados nos comumente utilizados MS Excel ou LibreOffice Calc, os dados podem ficar completamente zicados. Isso ocorre se você não especifica corretamente se seu separador decimal é ponto ou vírgula, o que pode depender do Idioma do seu sistema operacional. Quem já tiver passado por isso, comente aqui no post!

Neste exemplo, eu utilizo um arquivo de bloco de notas (.txt) separado somente e somente só por vírgulas (,) como input de coordenadas. E o separador decimal é ponto (.). O Excel em português costuma não entender coordenadas separadas por pontos e “zoa” todos seus dados rapidamente. Portanto, tenha muita paciência ao formatar as suas planilhas. É incrível como até pessoas com anos de experiência trabalhando com dados espaciais podem ainda passar por esses mesmos apertos.

Enfatizo, não tenha pressa para abrir os dados no R. Outro problema bastante comum é a simples troca da coluna da latitude pela da longitude. Essa troca é resultado de: (1) pressa; (2) falta de familiaridade do usuário (no caso você!) com coordenadas geográficas; (3) falta de familiaridade da pessoa que te enviou a planilha com coordenadas geográficas; ou (4) ausência de revisão minuciosa dos dados.

O que mais pode atrapalhar

Garantindo essa etapa principal, provavelmente o resto do script funcionará. Caso contrário, outro possível problema é a sua versão do R ser antiga demais. E repare que “antiga demais” pode não ser tão antiga assim. No momento presente, já vi que tem duas versões do R mais novas do que a que eu estou usando. Às vezes, basta uma atualização menor do R para um script perder parte da compatibilidade quando os pacotes não acompanham a atualização.

No script do exemplo, o pacote ggsn pode não funcionar caso você tenha uma versão antiga do R. No exemplo aqui utilizei o R 3.5.1 (“Feather Spray”) e a nova versão do ggsn (v0.5.0). Caso você tenha problemas em carregar este pacote seguindo o script, reporte aqui! E caso funcione bem, comente também, é importante pra gente. 🙂

Resultado final

Sem delongas, o resultado final do script segue logo abaixo. Você pode customizá-lo para ficar do seu gosto: mudar cores, transparência, tema, posição e unidade de escala e norte.

Gostou do resultado? O que você mudaria nesse mapa? Boa sorte com seus futuros mapas e até o próximo post!

 

mapa_simples

Agradecimentos

Agradeço ao Marco, pois o último mapa que construímos para um artigo me levou a escrever esse post. Agradeço também ao Oswaldo Baquero pela construção do pacote ggsn para R. E agradeço ao Miltinho por me introduzir ao mundo dos mapas.

Observação

Quem estiver usando Linux como sistema operacional e tiver problemas para executar os comandos, por favor cheque os comentários desse post.

(Fonte da image destacada)

 

18 respostas para “Como fazer um mapa no R”

  1. Olá Renata, tudo bom? Eu gostaria de plotar pontos em uma imagem de satélite do GoogleMaps, você poderia me ajudar?

  2. Oi Renata, obrigada pelo excelente post. Estou encontrando problemas para plotas meus dados do Brasil. O erro que estou recebendo é:

    Error: ‘BrazilMapEnv’ is not an exported object from ‘namespace:maps’

    Você já teve algum erro semelhante?

    Eu fiz algumas buscas na internet, mas ainda não consegui solucionar.

    Um abraço,

  3. Juliana, primeiramente muito obrigado e parabéns pelo post “direto ao ponto”! Ficou muito bom.
    Gerei meu mapa, mas não consigo adicionar a seta Norte nem a escala.
    Não consegui instalar o pacote devtools, então tentei installar o”ggsn” utilzando o “install.packages”. Aparentemente a instalação dá certo, mas quando vou utilizar aparece a mensagem que não existe tal pacote (isso ocorre tanto pro devtools quanto pro ggsn).
    Estou utilizando o R versão 3.5.2 (“Eggshell Igloo”) no sistema Linux Ubuntu 18.04.2.

      1. Sim, tentei com este código também e não funciona. Me aparece a seguinte mensagem:

        “Error in loadNamespace(name) : there is no package called ‘devtools’”

        Imagino que seja algum conflito de biblioteca, mas não consegui solucionar.

      1. Obrigado Renata. Também tentei pela instalação normal com install.packages (“devtools”, dependencies =TRUE)
        O R acusa que foi instalado, mas não carrega quando solicito, o que me leva a crer que por algum motivo o R está instalando esse (e alguns outros) pacotes em uma pasta diferente dos demais pacotes. Talvez algum resquício de uma versão anterior que tinha instalada do R no meu sistema.

        Depois vou ver isso com mais calma e posto por aqui, mas se você ou alguém descobrir antes uma solução estarei de olho.

          1. Oi Renata, os primeiros passos deste link ajudaram muito! Consegui instalar o devtools, o que era o 1o passo para solucionar essa questão. Depois tive que seguir mais alguns passos pelo terminal para conseguir instalar o ggsn sem erros:

            1) Sair do R e instalar ‘libudunits2’ na raiz do sistema com o cmd: sudo apt-get install libudunits2-dev

            2) Abrir o R novamente e instalar o pacote ‘units’ e suas dependencias com o cmd: install.packages (‘units’, dependencies = TRUE)

            3) Finalmente, instalar o ‘ggsn’ como vc já havia orientado: devtools::install_github(“oswaldosantos/ggsn”)

            Pronto, a partir dai consegui gerar os mapas com as escalas e setas de orientação! 😀

            Muito obrigado! Um abraço

            1. Oi Pedro, que bom que deu certo desse jeito! Vou adicionar uma observação no post para que as pessoas que usam Linux leiam os comentários caso tenham problemas!

              abraços e sucesso com seus mapas!

  4. Oi, que legal compartilhar isso. Realmente pode ajudar muito!
    O meu não colocou a barra de escala e nem a seta Norte. Este foi o erro:

    > #Exporte o mapa como uma figura PNG, incluindo agora um norte e uma escala
    > png(filename= “mapa_simples.png”, #Defina o nome do arquivo
    + res= 300, height= 20, width=16, unit=”cm”) #Aqui voce define a resolucao e tamanho da imagem
    > g +
    + ggsn::scalebar(area, dist = 100,location = “bottomright”, transform = TRUE, #Adicione uma barra de escala
    + dist_unit = “km”, st.dist = 0.03, st.size = 2, model = ‘WGS84’) +
    + ggsn::north(area, scale = .1) #Adicione uma seta com o norte
    Error: .onLoad falhou em loadNamespace() para ‘sf’, detalhes:
    chamada: get(genname, envir = envir)
    erro: object ‘group_map’ not found

    1. Oi Eliezer, esse erro também já apareceu para mim. Parecer ser um problema de compatibilidade entre a versão do R e a versão do ggsn. Atualize tanto o R quanto o pacote para as versões mais recentes, e provavelmente dará tudo certo.

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.