instalar pacotes:

install.packages("raster")
install.packages(c("raster", "rgeos"))

ativar pacotes:

library(raster)
## Carregando pacotes exigidos: sp

inicialmente iremos gerar uma paisagem bem simples, de 6 por 6 pixels:

pai<-raster(ncol=6, nrow=6, xmn=1, xmx=60, ymn=1, ymx=60, res=10)
values(pai)<-1:ncell(pai)
plot(pai)
text(pai,digits=2)

agora sorteamos classes para os pixels e eles não estão mais apenas numerados, mas apresentam classes determinadas de uso e cobertura do solo:

set.seed(1229)
values(pai) <-rpois(ncell(pai), lambda=1)
plot(pai)
text(pai, digits=2)

P.01: Explique o que é a função rpois e o que ela fez nessa linha de código. R: a função permite simular a distribuição através de valores aleatórios

Perceba que no mapa acima temos 6 classes (0, 1, 2, 3, 4 e 5) e elas tem a seguinte frequência de ocorrência:

table(values(pai))
## 
##  0  1  2  3  4  5 
## 10 11  9  4  1  1

P.02: Inclua esses valores no formulário de respostas. R.02: 0 1 2 3 4 5 10 11 9 4 1 1

Agora iremos degradar a resolução desses dados, ou seja, iremos alterar o tamanho dos pixels: Reamostragem pela média:

pai_media<-aggregate(pai, fact=2, fun=mean)
plot(pai_media)
text(pai_media, digits=2)

P.03: Agora mude o digits para digits=3 e explique o que ocorreu.

pai_media<-aggregate(pai, fact=2, fun=mean)
plot(pai_media)
text(pai_media, digits=3)

R.03: não ocorreu mudança na imagem.

Outra opção é utilizar o valor mais comum da área, o que é particularmente adequado quando temos um mapa categórico, como por exemplo mata/não-mata, ou soja, floresta e pasto.

pai_dom<-aggregate(pai, fact=2, fun=modal)
plot(pai_dom)
text(pai_dom, digits=2)

P.04: Confira os resultados e explique o que aconteceu. R: foi utilizado o valor mais comum da área

P.05: Após esse comando, qual o tamanho do pixel resultante? R: o tamanho é de 20x20m

P.06: Compare os resultados obtidos pelos dois métodos numa mesma resolução e discuta. R: No método por dominância, a imagem gerada apresenta os dados de forma resumida, de modo a apresentar menos cores.

Abaixo, você pode observar a média e a variância para o mapa pai original.

cellStats(pai, mean)
## [1] 1.388889
cellStats(pai, var)
## [1] 1.55873

P.07: Execute os mesmos comandos para os mapas pai_media e pai_dom e discuta os resultados comparando-os com os do mapa original.

pai_media: - mean:

cellStats(pai_media,mean)
## [1] 1.388889
cellStats(pai_media,var)
## [1] 0.4236111

pai_dom: - mean:

cellStats(pai_dom,mean)
## [1] 1.222222
cellStats(pai_dom,var)
## [1] 1.194444

R.07: ao comparar os dados gerados com os dadados do mapa original, percebe-se que apenas os dados da pai_media,mean se mantiveram, enquanto os demais forneceram dados diferentes.

Podemos também diminuir o tamanho dos pixels, através de reamostragem. Novamente existem diferentes técnicas para se executar essa tarefa. Uma das formas é simplesmente dividir o pixel original.

pai_dis<-disaggregate(pai, fact=2)
par(mfrow=c(1,2))
plot(pai)
text(pai, digits=2)
plot(pai_dis)
text(pai_dis, digits=2)

Outra opção é reamostrar utilizando o método de interpolação bilinear, que utiliza a média ponderada pela distância dos pixels do entorno, tanto no eixo x, quanto no eixo y.

pai_bil<-disaggregate(pai, fact=2, method="bilinear")
par(mfrow=c(1,2))
plot(pai)
text(pai, digits=2)
plot(pai_bil)
text(pai_bil, digits=2)

Alterando a extensão Vamos agora alterar a extensão, e já utilizaremos essa mudança para avaliar melhor os resultados da interpolação bilinear. Inicialmente iremos criar uma nova área menor, ou seja, iremos explorar uma extensão menor.

e<-extent(10,40,10,40)
plot(pai)
plot(e, add=TRUE)

Agora iremos recortar essa área

pai_crop<-crop(pai, e)
plot(pai_crop)

Plotando o original, a área de recorte e o recorte:

par(mfrow=c(1,2))
plot(pai, col=c("white", "pink", "orange", "green", "blue", "red"))
text(pai, digits=2)
plot(e, add=TRUE)
plot(pai_crop, col=c("white", "pink", "orange", "green"))
text(pai_crop, digits=2)

P.08: Qual é a extensão em número de pixels desse recorte? R:a extenção é de 9 pixels (3x3)

Agora iremos tentar entender um pouco melhor da reamostragem bilinear. Para isso, iremos usar o mesmo recorte que fizemos anteriormente e para cortar e comparar a paisagem original e a com resolução alterada através do método bilinear.

bil_crop<-crop(pai_bil, e)
par(mfrow=c(1,2))
plot(pai_crop)
text(pai_crop, digits=2)
plot(bil_crop)
text(bil_crop, digits=2)

P.09: Sabendo que o método bilinear considera os 4 pixels do entorno no cálculo (ver figura acima), explique quando você optaria por usar esse método em uma análise. Aborde aspectos como que tipo de espécie, de pergunta, etc. R:Este método, por considerar os pixels do entorno, trás uma imagem com dados contínuos. Seria interessante utilizar este método na formação de um mapa onde um gradiente é importante. Exemplo: Delimitar o fim de um bioma e o começo de outro.

Uma paisagem um pouco mais complexa

set.seed(1142)
pai.c<-raster(ncol=10, nrow=10, xmn=1, xmx=10, ymn=1, ymx=10)
d<-rmultinom(100, size = 1, prob = c(0.3, 0.6, 0.1))
j<-vector()
for (i in 1:length(which(d==1))){
dd<-which(d==1)[i]-3*(i-1)
j<-c(j, dd)
}
values(pai.c)<-j
plot(pai.c, col=c("green", "yellow", "pink"))

P.10: Mude a resolução pela média e utilize fact=2. Posteriormente, mude a resolução pela dominante (moda). Gere uma figura com os dois mapas lado a lado utilizando par(mfrow=c(1,2)). Inclua a figura no formulário de respostas.

par(mfrow=c(1,2))
plot(pai_media)
text(pai_media,digits=2)
plot(pai_dom)
text(pai_dom,digits=2)

P.11: Crie uma área para recortar a paisagem de 10x10. Recorte a paisagem para uma extensão menor. Plote a paisagem de 10x10 e inclua a área a ser recortada em preto. Ao lado, plote apenas a áreas recortada. Inclua a figura no formulário de respostas.

par(mfrow=c(1,2)) 
mae<-raster(ncol=10, nrow=10, xmn=1, xmx=100, ymn=1, ymx=100, res=10) 
values(mae)<-1:ncell(mae)
plot(mae)
text(mae, digits=2) 
plot(e, add=TRUE)
mae_crop<-crop(mae, e)
plot(mae_crop)

P.12: Ao invés de plotar uma figura ao lado da outra, plote uma em cima da outra. Como você alteraria o comando para que o R execute dessa maneira. Inclua apenas a linha de código no formulário

par(mfrow=c(2,1)) 
mae<-raster(ncol=10, nrow=10, xmn=1, xmx=100, ymn=1, ymx=100, res=10) 
values(mae)<-1:ncell(mae)
plot(mae)
text(mae, digits=2) 
plot(e, add=TRUE)
mae_crop<-crop(mae, e)
plot(mae_crop)