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)