O objetivo desse exercício é a criação de uma paisagem e o cálculo de áreas usando o pacote landscapemetrics.
A paisagem utilizada está classificada em três tipos de cobertura:
0 – Desmatamento. 1 – Floresta Madura. 2 – Floresta Secundária.
As medidas de distância e área estão em metros
# Caso necessário carregar os pacotes retire os comentários
# install.packages(c("landscapemetrics","raster", "sf", "here","grdal"))
library(landscapemetrics)
## Warning: package 'landscapemetrics' was built under R version 4.0.5
library(raster)
## Warning: package 'raster' was built under R version 4.0.5
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.0.5
library(sf)
## Warning: package 'sf' was built under R version 4.0.5
## Registered S3 methods overwritten by 'tibble':
## method from
## format.tbl pillar
## print.tbl pillar
## Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1; sf_use_s2() is TRUE
library(here)
## Warning: package 'here' was built under R version 4.0.5
## here() starts at C:/Users/casti/Documents/Trabalho/Biologia/Sexto Periodo/Ecologia de Paisagens/tarefas
rm()
raster(here("dimensao_paisagem.tif")) -> paisagem_geral # Carrega o arquivo
st_read(here("pontos_dimensao_paisagem.shp"), quiet = TRUE) -> ponto_focal # Define Ponto focal
check_landscape(paisagem_geral) # Conferindo
## layer crs units class n_classes OK
## 1 1 projected m integer 3 v
plot(paisagem_geral) # Plota a paisagem
plot(ponto_focal, col = "red", add = T) # Plota o ponto focal
O pacote lanscape calcula várias propriedades da imagem. Seus comandos são sempre procedidos pelo sufixo _lsm.
Abaixo usamos a função sample_lsm . Essa função amostra uma determinada área em torno de um ponto escolhido, no nosso caso o ponto focal.
sample_lsm(landscape = paisagem_geral,
y = ponto_focal,
size = 3000,
level = 'class',
metric = 'area') -> buff_quad_3km
sample_lsm(landscape = paisagem_geral,
y = ponto_focal,
size = 3000,
shape = "circle",
level = 'class',
metric = 'area',) -> buff_circ_100m
Oberve que os outputs foram armazenados em buff_quad_3km e buff_circ_100m respectivamente. Primeiro interpretamos buff_quad_3km .
buff_quad_3km
## # A tibble: 9 x 8
## layer level class id metric value plot_id percentage_inside
## <int> <chr> <int> <int> <chr> <dbl> <int> <dbl>
## 1 1 class 0 NA area_cv 249. 1 100
## 2 1 class 1 NA area_cv 430. 1 100
## 3 1 class 2 NA area_cv 156. 1 100
## 4 1 class 0 NA area_mn 50.8 1 100
## 5 1 class 1 NA area_mn 109. 1 100
## 6 1 class 2 NA area_mn 3.05 1 100
## 7 1 class 0 NA area_sd 127. 1 100
## 8 1 class 1 NA area_sd 470. 1 100
## 9 1 class 2 NA area_sd 4.76 1 100
Assim, em um quadrado de lados 3000m, centrado no ponto focal temos:
| Cv=100*(Std/Mediana) | Média | Std | |
|---|---|---|---|
| Desmatamento | 249 | 50.8 | 127 |
| Floresta Madura | 430 | 109.0 | 470 |
| Floresta Secundária | 156 | 3.05 | 4.76 |
Agora interpretamos .
buff_circ_100m
## # A tibble: 9 x 8
## layer level class id metric value plot_id percentage_inside
## <int> <chr> <int> <int> <chr> <dbl> <int> <dbl>
## 1 1 class 0 NA area_cv 227. 1 100.
## 2 1 class 1 NA area_cv 352. 1 100.
## 3 1 class 2 NA area_cv 154. 1 100.
## 4 1 class 0 NA area_mn 38.0 1 100.
## 5 1 class 1 NA area_mn 160. 1 100.
## 6 1 class 2 NA area_mn 2.84 1 100.
## 7 1 class 0 NA area_sd 86.3 1 100.
## 8 1 class 1 NA area_sd 561. 1 100.
## 9 1 class 2 NA area_sd 4.39 1 100.
Assim, em um círculo de raio 100m, centrado no ponto focal temos:
| Cv=100*(Std/Mediana) | Mediana | Std | ||
|---|---|---|---|---|
| Desmatamento | 227 | 38.0 | 86.3 | |
| Floresta Madura | 352 | 160.0 | 561.0 | |
| Floresta Secundária | 154 | 2.8 | 4.39 |
OS resultados nos mostram que:
A floresta secundária encontra-se extremamente fragmentada em muitos pedaçoes pequenos.
Tanto as áreas desmatadas quanto a floresta madura possuem uma altíssima variação. De fato, o desvio padrão mostrou-se muito grande quando comparado as médias. Tal fato pode ser consequência do tamanho da área amostrada.
as.data.frame(buff_quad_3km)
## layer level class id metric value plot_id percentage_inside
## 1 1 class 0 NA area_cv 249.315492 1 100
## 2 1 class 1 NA area_cv 429.570785 1 100
## 3 1 class 2 NA area_cv 156.048990 1 100
## 4 1 class 0 NA area_mn 50.840526 1 100
## 5 1 class 1 NA area_mn 109.321364 1 100
## 6 1 class 2 NA area_mn 3.052800 1 100
## 7 1 class 0 NA area_sd 126.753308 1 100
## 8 1 class 1 NA area_sd 469.612640 1 100
## 9 1 class 2 NA area_sd 4.763864 1 100
Nesta seção investigamos a dependência do ceficiente de variação dos dados em função do tamanho da área amostrada. Para tanto usamos o seguinte script
v0 <-c(-1);
v1 <- c(-1);
v2 <- c(-1);
aa=seq(500,20000,by=500)
for (tamanho in aa) {
sample_lsm(landscape = paisagem_geral,
y = ponto_focal,
size = tamanho,
level = 'class',
metric = 'area') -> buff_quad_3km
aux <-buff_quad_3km$value[7]/buff_quad_3km$value[4]
v0 <- c(v0,aux)
aux1 <-buff_quad_3km$value[8]/buff_quad_3km$value[5]
v1 <- c(v1,aux1)
aux2 <-buff_quad_3km$value[9]/buff_quad_3km$value[6]
v2 <- c(v2,aux2)
}
v0=v0[v0!=-1]
v1=v1[v1!=-1]
v2=v2[v2!=-1]
plot(aa, v0, main="Quadrado",type="o", col="blue", pch="o", lty=1, ylim=c(0,20) )
points(aa, v1, col="red", pch="*")
lines(aa, v1, col="red",lty=2)
points(aa, v2, col="dark red",pch="+")
lines(aa, v2, col="dark red", lty=3)
legend(2500,20,legend=c("Desmatamento","Floresta Madura","Floresta Secundária"), col=c("blue","red","black"), pch=c("o","*","+"),lty=c(1,2,3), ncol=1)