Calculo de las metricas de ecologia del paisaje
Resumen
Los indicadores de ecologia del paisaje cuantifican las caracteristicas geometricas de los componentes del mosaico heterogeneo. Los valores resultantes proveen informacion acerca de la configuracion espacial y composicion de los fragmentos y clases. El analisis de estos datos permite inferir las funciones ecosistemicas resultantes. Estos indicadores fundamentan la evaluacion de la condicion del mosaico y sustentan las propuestas de diseño.
Metodo
El proceso para el calculo de la metricas, emplea el programa R y paquetes que se indican dentro de la secuencia. Se requiere un archivo vectorial en formato shape representando la capa de vegetacion (o ecosistema).
Procedimiento
1. Cargar el shape
1.1 Folder de trabajo
Identificar la direccion
getwd()
1.2 Cargar el paquete rgdal
library(rgdal)
1.3 Leer el shape
bosques <- readOGR(dsn="/Users/victorpena/Documents/work/unalm/courses/pyr/taller/maps/Bm-oca_tres.shp")
1.4 Mostrar shape
(Datos)
bosques
Tabla de atributos
tabla_atributos <- bosques@data
tabla_atributos
class(tabla_atributos)
Grafico
plot(bosques)
2. Rasterizar
2.1 Paquetes raster y maptools
install.packages("remotes")
remotes::install_github("rspatial/terra")
#install.packages('terra', repos =' http://cran.mirror.garr.it/mirrors/CRAN/')
#install.packages('terra', repos='https://rspatial.r-universe.dev')
#install.packages("raster", repos = 'https://mac.R-project.org')
#install.packages("rtools")
#remotes::install_github("rspatial/terra")
install.packages("terra")
library(terra)
library(raster)
library(maptools)
2.2 Creacion de la malla en blanco
blank_raster <- raster(nrow = 1000, ncol = 1000, extent(bosques))
values(blank_raster) <- 1
plot(blank_raster)
2.3 Conversion al formato raster
bosques_raster <- rasterize(bosques, blank_raster)
bosques_raster[!(is.na(bosques_raster))] <- 1
plot(bosques_raster, legend=FALSE)
2.4 Guardar con un nombre
writeRaster(bosques_raster, "bosques_raster1000.tif", overwrite=TRUE)
3. Calculo de indicadores
3.1 Paquetes landscapemetrics, sf y dplyr
Referencia paquete “landscapemetrics”: https://r-spatialecology.github.io/landscapemetrics/index.html
library(landscapemetrics) # landscape metrics calculation
library(landscapetools)
#library(raster) # spatial raster data reading and handling
library(sf) # spatial vector data reading and handling
library(dplyr) # data manipulation
library(rgeos)
Lista de las metricas
list_lsm(
level = NULL,
metric = NULL,
name = NULL,
type = NULL,
what = NULL,
simplify = FALSE,
verbose = TRUE
)
Verificacion del archivo raster
check_landscape(bosques_raster)
show_patches(bosques_raster)
3.2 Crear grid de referencia
my_grid_geom = st_make_grid(st_as_sfc(st_bbox(bosques_raster)), cellsize = 25000)
my_grid = st_sf(geom = my_grid_geom)
3.3 Superponer capas raster
plot(bosques_raster)
plot(my_grid, add = TRUE)
Referencia para la descripcion de los indices (FRAGSTATS Metrics)
http://www.umass.edu/landeco/research/fragstats/documents/Metrics/Metrics%20TOC.htm Fuente: Landscape Ecology Lab at UMass Amherst (McGarigal). El Dr. McGarigal no trabaja actualmente en UMass Amherst.
3.4 Indices - escala de fragmento
3.4.1 Areas (ha), en la escala de fragmento
a1 = sample_lsm(bosques_raster, my_grid, level = "patch", metric = "area")
a1
3.4.2 Perimetros (m), en la escala de fragmento
perimetro <- lsm_p_perim(bosques_raster)
perimetro
3.5 Indices, en la escala de clase
3.5.1 area
ca = sample_lsm(bosques_raster, my_grid, level = "class", metric = "ca")
ca
3.5.2 perimetro total a
te = sample_lsm(bosques_raster, my_grid, level = "class", metric = "te")
te
3.5.3 Perimetro total b
lsm_c_te(bosques_raster)
3.5.4 Vecino cercano
lsm_c_enn_mn(bosques_raster)
lsm_l_enn_cv(bosques_raster)
3.5.5 densidad de fragmentos
pd = sample_lsm(bosques_raster, my_grid, level = "class", metric = "pd")
pd
3.5.6 indice de forma
lsi = sample_lsm(bosques_raster, my_grid, level = "class", metric = "lsi")
lsi
3.5.7 cohesion
lsm_c_cohesion(bosques_raster)
3.6 Indices, en la escala de paisaje
3.6.1 Area Total
lsm_l_ta(bosques_raster)
3.6.2 Numero de fragmentos
lsm_l_np(bosques_raster)
3.6.3 Densidad de fragmentos
lsm_l_pd(bosques_raster)
4. Edicion de los datos
write.csv(a1,"/Users/victorpena/Documents/work/unalm/courses/pyr/taller/notebooks/area_esc_frag.csv", row.names = FALSE)
library(openxlsx)
write.xlsx(a1,"/Users/victorpena/Documents/work/unalm/courses/pyr/taller/notebooks/area_esc_frag_hc.xlsx", overwrite=TRUE)
4.1 Distribucion
4.1.1 Cantidad
# library
library(ggplot2)
# dataset:
data=data.frame(a1)
# basic histogram
p <- ggplot(data, aes(x=value)) +
geom_histogram()
p
4.1.2 Tamaño
# A really basic boxplot.
ggplot(data, aes(x=as.factor(layer), y=value)) +
geom_boxplot(fill="slateblue", alpha=0.2) +
xlab("area bosque")
Histogramas y curva de densidad
df <- data[order(data$value,decreasing = TRUE),]
barplot(df$value,names.arg = df$id, col="orange",
xlab="id fragmentos",
ylab="superficie (ha)")
df <- data[order(data$value,decreasing = TRUE),]
barplot(df$value,names.arg = df$id, col="orange",
xlab="id fragmentos",
ylab="superficie (ha)")
x.gen <- data$value
hist(x.gen, prob = TRUE)
library(MASS)
x.est <- fitdistr(x.gen, "exponential")$estimate
curve(dexp(x, rate = x.est), add = TRUE, col = "red", lwd = 2)
Normalidad
### normality qq plot
x <- qnorm(seq(0,1,l=34)) # Theoretical normal quantiles
x <- x[-c(1, length(x))] # Drop ends because they are -Inf and Inf
y <- data$value # Actual data. 1000 points drawn from a normal distribution
l.1 <- lm(sort(y)~sort(x))
qqplot(x, y, xlab="Theoretical Quantiles", ylab="Actual Quantiles")
abline(coef(l.1)[1], coef(l.1)[2])
5. Analisis
Estructura y funcionalidad
Objetivo: evaluar la estructura del paisaje natural en la ciudad Dos criterios de evaluacion
- Integridad de los elementos
- Conectividad de la red
5.1 Tabla de resultados
Metricas |Sector 1 |Sector 2
---------|----------|--------
Mediana area |Cell B |Cell C
Densidad fragmentos|Cell E |Cell F
5.2 Preguntas
- Como se comparan los histogramas de los dos sectores
- Cual paisaje tiene la mayor mediana del area
- Cual es la mediana de la distancia entre vecinos