Fazendo mapas com R

Primeiro precisamos abrir algumas bibliotecas

library(maps)
library(mapdata)
library(maptools)
## Loading required package: foreign
## Loading required package: sp
## Loading required package: lattice
## Checking rgeos availability: TRUE
library(RgoogleMaps)
## Loading required package: png
## Attaching package: 'RgoogleMaps'
## The following object(s) are masked from 'package:sp':
## 
## degAxis

Agora estamos prontos para o nosso primeiro mapa

map("worldHires", "Brazil", col = "lightgray", fill = TRUE)

plot of chunk unnamed-chunk-2

É possível modificar o mapa, plotar coordenadas, etc. Como exemplo, vamos plotar as distribuições de duas espécies de aves: Formicivora serrana e F. littoralis. Primeiro vamos plotar um mapa mais restrito, depois plotar a distribuição destas espécies.

map("worldHires", "Brazil", col = "lightgray", fill = TRUE, xlim = c(-50, -36), 
    ylim = c(-25, -15))

plot of chunk unnamed-chunk-3

F_serrana <- readShapePoly(“form_serr_pl.shp”)
F_littoralis <- readShapePoly(“form_litt_pl.shp”)
estados <- readShapePoly(“BRASIL.shp”)
plot(estados, add=TRUE)
plot(F_serrana, add=TRUE, col=“green”)
plot(F_littoralis, add=TRUE, col=“red”)
box()

xlim e ylim são os limites de latitude e longitude, respectivamente. Note que, pra facilitar a visualização, eu inclui shapes dos estados brasileiros. Você pode encontrar estes arquivos no site [http://www.gismaps.com.br/divpol/divpol.htm]

Há vários bancos de dados de distribuições geográficas de diversos organismos, por exemplo:

[http://www.natureserve.org/getData/animalData.jsp]
[http://www.iucnredlist.org/technical-documents/spatial-data]

É possível usar o Google maps para conseguir mapas muito interessantes visualmente, de acordo com o interesse.

center = c(-25.2, -48.8)  #centro do mapa
zoom <- 5  #zoom do mapa. Varia de 1 (todo o mundo) e numeros maiores (mais zoom)
mapa.sul <- GetMap(center = center, zoom = zoom, maptype = "satellite", destfile = "mapa_sul.png")
## [1] "http://maps.google.com/maps/api/staticmap?center=-25.2,-48.8&zoom=5&size=640x640&maptype=satellite&format=png32&sensor=true"

O arquivo com o mapa é salvo no diretório de trabalho. Além disso, o mesmo mapa pode ser obtido colando o endereço em algum browser. Há outros tipos de mapas possíveis. Troque “terrain” por “roadmap”, “mobile”, “satellite”, “terrain”, “hybrid”, “mapmaker-roadmap” ou “mapmaker-hybrid” para outras opções.

Agora vamos tentar plotar alguns pontos no mapa.

lat <- c(-25.134722, -25.246389, -25.61, -25.149722)  #latitudes
lon <- c(-48.820833, -48.835556, -48.855278, -48.838056)  #longitudes
size <- c("small", "small", "small", "small")  #cria uma coluna com o tamanho do marcador
col <- c("red", "red", "red", "red")  #cria uma coluna com a cor do marcador
char <- c("", "", "", "")  #desenha o tipo normal de pinpoints do Google Maps

meuspontos <- cbind.data.frame(lat, lon, size, col, char)  #juntando tudo

meumapa <- GetMap.bbox(lonR = range(lon), latR = range(lat), center = c(mean(lat), 
    mean(lon)), destfile = "meumapa.png", markers = meuspontos, zoom = 10, maptype = "terrain")
## [1] "http://maps.google.com/maps/api/staticmap?center=-25.28520825,-48.83743075&zoom=10&size=640x640&maptype=terrain&format=png32&sensor=true&markers=size:small|col:red|char:|-25.13,-48.82|size:small|col:red|char:|-25.25,-48.84|size:small|col:red|char:|-25.61,-48.86|size:small|col:red|char:|-25.15,-48.84"

Note que mapas bem aproximados tem uma qualidade excelente. Por exemplo:

lat <- c(-25.134722, -25.149722)  #latitudes
lon <- c(-48.820833, -48.838056)  #longitudes
size <- c("small", "small")  #cria uma coluna com o tamanho do marcador
col <- c("red", "red")  #cria uma coluna com a cor do marcador
char <- c("", "")  #desenha o tipo normal de pinpoints do Google Maps

meuspontos <- cbind.data.frame(lat, lon, size, col, char)  #juntando tudo

meumapa <- GetMap.bbox(lonR = range(lon), latR = range(lat), center = c(mean(lat), 
    mean(lon)), destfile = "meumapa.png", markers = meuspontos, zoom = 15, maptype = "terrain")
## [1] "http://maps.google.com/maps/api/staticmap?center=-25.142222,-48.8294445&zoom=15&size=640x640&maptype=terrain&format=png32&sensor=true&markers=size:small|col:red|char:|-25.13,-48.82|size:small|col:red|char:|-25.15,-48.84"

Aqui estão outras bibliotecas que podem ser úteis:

library(sp) #classes e métodos para dados espaciais
library(maptools) #ferramentas para ler e manipular objetos espaciais
library(maps) #criar mapas geográficos
library(mapdata) #contém dados básicos para serem utilizados com “maps”, como topografia e geologia
library(mapproj) #criando mapas com outras projeções
library(raster) #ferramentas para lidar com raster maps