Curso Atualidades em Macroecologia
Escola de Altos Estudos CAPES - Brasil
Universidade Federal de Sergipe
NOTA: Tem que carregar o “workspace” (arquivo .RData) do exercicio anterior pois lá tem objetos que serão usados nesse exercicio.
Carregar os seguintes pacotes:
library(raster)
library(maptools)
library(rgeos)
library(sp)
Nesse exemplo, a gente vai usar os dados dos morcegos da IUCN disponíveis na internet (http://www.iucnredlist.org/technical-documents/spatial-data) Vcs podem usar qualquer outro grupo dos disponíveis na IUCN ou em outro site (no caso, tem que baixar os “shapefiles”, que são arquivos com extensão ‘.shp’ e os associados)
bats <- readShapePoly("phyllostomidae_shapes/phylllostomidae_marcelo.shp")
plot(bats,col=rainbow(46, alpha=0.5))
“Projetar” em coordenadas geográficas – definir a projeção dos dados/shapefiles
proj4string(bats) <- CRS("+proj=longlat +datum=WGS84")
Gerar um raster para America
amer_ras <- raster()
# estabelecer o "extent" do raster pra ficar justamente nas coordenadas da America
extent(amer_ras) <- c(-150,-20,-60,40)
Se olham o “objeto” gerado, ele teria que ser assim:
amer_ras
class : RasterLayer
dimensions : 180, 360, 64800 (nrow, ncol, ncell)
resolution : 0.3611111, 0.5555556 (x, y)
extent : -150, -20, -60, 40 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
Mudar a resolução do raster da America pra ficar em 1 grau long-lat.
res(amer_ras) <- 1
Agora teria que ser assim
amer_ras
class : RasterLayer
dimensions : 100, 130, 13000 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : -150, -20, -60, 40 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
Gerar um raster pra os dados dos morcegos baseado no raster da America já pronto, esse aqui sería o mapa de riqueza de especies de morcegos em America!
Nota: Tem outras formas de gerar o raster de riqueza que são, mais úteis para fazer análises biogeográficos/macroecológicos (vejam, por exemplo, http://bvilela.weebly.com/how-to-make-a-presence-absence-matrix.html)
bats_raster <- rasterize(bats, amer_ras, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar o raster dos morcegos.
plot(bats_raster)
plot(wrld_simpl,add=T)
E aí, o mapa ficou legal?
Gerar outro raster de America com uma resolução diferente, de 2 graus long-lat
amer_ras2 <- amer_ras
# definir a resolução de 2 graus
res(amer_ras2) <- 2
# o "objeto" tem que ser assim:
amer_ras2
class : RasterLayer
dimensions : 50, 65, 3250 (nrow, ncol, ncell)
resolution : 2, 2 (x, y)
extent : -150, -20, -60, 40 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
Gerar o raster dos morcegos pra nova resolução (usando o novo raster da America em 2 graus long-lat)
bats_raster2 <- rasterize(bats, amer_ras2, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar o novo raster.
plot(bats_raster2)
plot(wrld_simpl,add=T)
E agora, ficou bom? é igual ao anterior?
Nota: Pra manter as diferentes graficas dos mapas com diferentes resoluções, tem que abrir uma nova janela de graficação no R. Olhem no manual do R como fazer isso. De outra forma, o grafico será gerado na mesma janela e vão “perder” o anterior. Outra maneira, seria salvar (save as…) o grafico e depois abrir todos eles em algum outro programa pra comparar-los visualmente.
Outra resolução, mais grossa? gerar um raster America com resolução de 4 graus long-lat
amer_ras4 <- amer_ras2
res(amer_ras4) <- 4
Gerar o raster dos morcegos com o novo de America 4 graus long-lat
bats_raster4 <- rasterize(bats, amer_ras4, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar.
plot(bats_raster4)
plot(wrld_simpl,add=T)
O padrão mudou?
Resolução mais grossa ainda? gerar novo raster da America em 8 graus long-lat
amer_ras8 <- amer_ras4
res(amer_ras8) <- 8
E o raster de riqueza de morcegos na nova resolução
bats_raster8 <- rasterize(bats, amer_ras8, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar.
plot(bats_raster8)
plot(wrld_simpl,add=T)
E aí, mudou? aonde fica mais diferente?
par(mfrow=c(2,2))
plot(bats_raster)
plot(wrld_simpl,add=T)
plot(bats_raster2)
plot(wrld_simpl,add=T)
plot(bats_raster4)
plot(wrld_simpl,add=T)
plot(bats_raster8)
plot(wrld_simpl,add=T)
dev.off()
Gerar um raster novo (vazio)
ras_2 <- raster()
#definir valores de zero pra o raster
values(ras_2) <- 0
# definir o "extent" pra corresponder com as coordenadas do Brasil
extent(ras_2) <- c(-75,-35,-40,5)
# definir a resolução (por enquanto 1 grau long-lat)
res(ras_2) <- 1
Gerar o raster do Brasil usando o raster gerado antes cortado com o mapa do Brasil que geramos nas anteriormente (“brazil_map”)
ras_brasil <- rasterize(brazil_map,ras_2)
Graficar o novo raster pra o Brasil
plot(ras_brasil)
plot(brazil_map,add=T)
Ficou legal?
Gerar o raster de riqueza de morcegos no Brasil usando o raster do país
bats_brasraster <- rasterize(bats, ras_brasil, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar o resultado. Como está distribuida a riqueza de morcegos no Brasil? onde tem mais/menos espécies?
#Gerar uma "máscara" para que o raster fique certinho dentro do Brasil
batsbrazil_forma <- mask(bats_brasraster, brazil_map)
plot(batsbrazil_forma)
plot(brazil_map, add=T)
Agora com uma resolução mais grossa (2 graus long-lat)
ras_brasil2 <- ras_brasil
res(ras_brasil2) <- 2
Raster de riqueza de morcegos
bats_brasraster2 <- rasterize(bats, ras_brasil2, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar
batsbrazil_forma2 <- mask(bats_brasraster2, brazil_map)
plot(batsbrazil_forma2)
plot(brazil_map, add=T)
Ficou legal? Mudou?
Resolução mais grossa ainda
ras_brasil5 <- ras_brasil2
res(ras_brasil5) <- 5
Raster de riqueza de morcegos
bats_brasraster5 <- rasterize(bats, ras_brasil5, field="binomial",fun=function(x,...){length(unique(na.omit(x)))})
Graficar.
batsbrazil_forma5 <- mask(bats_brasraster5, brazil_map)
plot(batsbrazil_forma5)
plot(brazil_map, add=T)
Mudou? Quanto? Aonde tem mais diferenças?
par(mfrow=c(1,3))
plot(batsbrazil_forma)
plot(brazil_map, add=T)
plot(batsbrazil_forma2)
plot(brazil_map, add=T)
plot(batsbrazil_forma5)
plot(brazil_map, add=T)
dev.off()