10 Protected Connected indicator (ProtConn)
ProtConn es un índice que ayuda a medir qué tan bien conectadas están las áreas protegidas, como parques nacionales o reservas, a nivel local, regional o mundial. Este indicador, creado por Saura y otros (2017, 2018), se usa mucho para evaluar el progreso en metas globales, como la del Marco Mundial de Biodiversidad de Kunming-Montreal (objetivo 3). Este objetivo dice que para 2030, al menos el 30 % de las tierras y mares deben estar protegidos y gestionados de manera efectiva, con áreas que representen bien los ecosistemas, estén bien conectadas entre sí y se manejen de forma justa.
| Índice / Fracción | Descripción |
|---|---|
| ECA | Equivalent Connected Area. Área equivalente de hábitat que estaría disponible si el paisaje fuera completamente contiguo, manteniendo el mismo nivel de conectividad observado. Expresado en unidades de superficie. |
| Prot | Porcentaje de la superficie de la región que está cubierta por áreas protegidas, sin considerar conectividad. |
| ProtConn | Porcentaje del paisaje que está protegido y conectado dentro de la región de estudio. |
| ProtUnconn | Porcentaje del paisaje que está protegido pero aislado (sin conectividad funcional con otras áreas protegidas). |
| RelConn | Conectividad relativa: relación entre ProtConn y Prot. Indica la proporción de la superficie protegida que está funcionalmente conectada. |
| ProtUnConn[design] | Porción de la superficie protegida que permanece desconectada debido al diseño y localización de las áreas protegidas (dentro de la región). |
| ProtConn[bound] | Versión corregida del indicador ProtConn que se centra en la parte de la conectividad sobre la que un país o una región puede influir directamente, excluyendo el aislamiento causado por barreras naturales como mares o territorios extranjeros. |
| ProtConn[Prot] | Fracción de ProtConn derivada del área protegida interna en sí misma (Within + Contig). |
| ProtConn[Within] | Fracción de ProtConn aportada por conexiones entre áreas protegidas dentro de la región. |
| ProtConn[Contig] | Fracción de ProtConn derivada de áreas protegidas contiguas (adyacentes sin distancia entre ellas). |
| ProtConn[Trans] | Fracción de ProtConn aportada por conexiones transfronterizas con áreas protegidas fuera de la región. |
| ProtConn[Unprot] | Fracción de ProtConn derivada de conexiones que incluyen áreas no protegidas como corredores funcionales. |
| ProtConn[Within][land] | Igual que ProtConn[Within] pero considerando solo la parte terrestre de la región. |
| ProtConn[Contig][land] | Igual que ProtConn[Contig] pero considerando únicamente territorio terrestre. |
| ProtConn[Unprot][land] | Igual que ProtConn[Unprot] pero restringido a conexiones por tierra. |
| ProtConn[Trans][land] | Igual que ProtConn[Trans] pero considerando únicamente conexiones transfronterizas terrestres. |
10.0.1 Ejemplo
En Colombia, las áreas protegidas (AP) son clave para cuidar la increíble biodiversidad del país. Hay unas 1,733 AP, que incluyen AP nacionales y subnacionales, cubriendo cerca del 17% del territorio (unos 195,000 km²). Pero, aunque hay muchas, el cambio rápido en el uso de la tierra está complicando las cosas. Muchas AP están rodeadas de paisajes alterados, lo que dificulta que las especies se muevan y afecta procesos ecológicos.
En este ejemplo, se analiza cómo están conectadas las AP nacionales y subnacionales en las ecorregiones de Colombia. También consideramos AP fuera de Colombia que pueden ayudar como áreas transfronterizas. La info espacial viene de un estudio sobre la conectividad en la región Andes-Amazonas realizado por Castillo et al., (2020). Usamos una distancia de dispersión de 10 km para los organismos (con una probabilidad de 0.5) y un radio de 50 km para buscar AP transfronterizas. En total, hay 33 ecorregiones y 1,530 polígonos de AP en Colombia. Para conectar las AP, usamos distancias euclidianas, especialmente entre los bordes de las áreas.
Descarga los siguientes datos: https://drive.google.com/drive/folders/1yBMXd7beA8VOl5KUkdEGUetlWyhDqeL0?usp=sharing
Carga las paqueterias y los shapefiles Areas_protegidas.shp y Ecorregiones.shp
library(ggplot2)
library(sf)
library(terra)
library(raster)
library(Makurhini)
library(RColorBrewer)
APs <- read_sf("C:/.../Areas_protegidas.shp")
nrow(APs)
Ecorreg <- read_sf("C:/.../Ecorregiones.shp")#> [1] 1530
Seleccionar solo algunas columnas:
APs <- APs[,c("NAME", "DESIGNACIO", "ESCALA_2")]
Ecorreg <- Ecorreg[,"ECO_NAME"]Lo podemos visualizar:
library(rmapshaper)
mask_ecorreg <- ms_dissolve(Ecorreg)
APs_nacionales <- ms_clip(APs, mask_ecorreg)
APs_transnacionales <- ms_erase(APs, mask_ecorreg)
APs_transnacionales$Tipo <- "APs en paises vecinos"
APs_subnacionales <- APs_nacionales[APs_nacionales$ESCALA_2 == "Subnacional",]
APs_subnacionales$Tipo <- "APs Subnacionales"
APs_nacionales <- APs_nacionales[APs_nacionales$ESCALA_2 == "Nacional",]
APs_nacionales$Tipo <- "APs Nacionales"
APs_vis <- rbind(APs_nacionales, APs_subnacionales, APs_transnacionales)
APs_vis$Tipo <- factor(APs_vis$Tipo, levels = c("APs Nacionales", "APs Subnacionales", "APs en paises vecinos"))
ggplot() +
geom_sf(data = Ecorreg, aes(fill = "Ecorregiones"), color = "black") +
geom_sf(data = APs_vis, aes(fill=Tipo), color = NA) +
scale_fill_manual(name = "Tipo", values = c("#1DAB80", "#FF00C5", "#E06936", "#8D8BBE"))+
theme_minimal() 
10.0.2 Función MK_ProtConn()
Esta función calcula el indicador de área protegida y conectada (ProtConn) para una región, sus fracciones y la importancia o contribución de cada área protegida (dProtConn) para mantener la conectividad en la región bajo uno o más umbrales de distancia. Algo muy importante es que el poarametro nodes solo acepta archivos vectoriales.
La función tiene los siguientes argumentos:
| Argumento | Descripción |
|---|---|
| nodes |
sf, sfc, sfg, SpatVect, spatialPolygonsDataFrame. El archivo debe tener un sistema de coordenadas proyectado. |
| region | Objeto de clase raster, rast, sf, sfc, sfg o spatialPolygonsDataFrame. Polígono que delimita la región o área de estudio. Debe estar en un sistema de coordenadas proyectado. |
| area_unit |
character (opcional, por defecto "m2"). Unidades de área cuando attribute = NULL. Ejemplos: "m2", "km2", "cm2", "ha". Ver unit_convert para más detalles. |
| distance | Matriz o lista que define la distancia entre cada par de nodos. Puede ser distancia euclidiana o efectiva (costos de movimiento). - Si es matriz: número de filas y columnas igual al número de nodos (puede generarse con distancefile). - Si es lista: debe incluir parámetros como "type" ("centroid", "edge", "least-cost", "commute-time") y, en su caso, "resistance". Para más detalles ver distancefile. |
| distance_thresholds |
numeric. Distancia(s) de dispersión de la especie en metros. Si es NULL, se estima como la distancia de dispersión mediana entre nodos. También se puede calcular con dispersal_distance. |
| probability |
numeric. Probabilidad asociada a la distancia en distance_threshold. Ej.: mediana de dispersión → 0.5; máxima dispersión → 0.05 o 0.01. Usar solo con la métrica "PC". Por defecto = 0.5. |
| transboundary |
numeric. Búfer para seleccionar polígonos en una segunda ronda (atributo = 0, actuando como stepping stones según Saura et al. 2017). Puede ser un valor único o uno por cada distancia umbral. |
| transboundary_type |
character. Opciones: "nodes" (por defecto, límites de los nodos en la región) o "region" (límites de la región). |
| protconn_bound |
logical. Si es TRUE, estima las fracciones ProtUnConn[design] y ProtConn[bound]. |
| delta |
logical. Si es TRUE, estima la contribución de cada nodo al valor de ProtConn en la región. |
| plot |
logical. Si es TRUE, grafica los indicadores y fracciones principales de ProtConn. Por defecto = FALSE. |
| resample_raster |
numeric. Úsalo con rásters pequeños y alta resolución (<150 m) o regiones muy grandes. Define el valor para remuestrear y acelerar el proceso de selección de nodos transfronterizos. |
| write |
character. Carpeta de salida con nombre de archivo sin extensión. Ej.: "C:/ProtConn/Protfiles". |
| parallel |
numeric. Número de núcleos para procesamiento en paralelo (usando furrr y multiprocess). Por defecto = NULL. |
| intern |
logical. Si es TRUE, muestra el progreso. Puede no llegar al 100% si el proceso es muy rápido. |
- Estimaremos el índice Protconn solo en una ecorregión:
Ecorreg_1 <- Ecorreg[1,] #Selecciono la primera fila o primera ecorregion
test <- MK_ProtConn(nodes = APs,
region = Ecorreg_1,
area_unit = "ha",
distance = list(type= "edge", keep = 0.1),
distance_thresholds = 10000,
probability = 0.5,
transboundary = 50000,
plot = TRUE,
parallel = NULL,
protconn_bound = FALSE,
delta = FALSE,
write = NULL,
intern = TRUE)
#> Step 1. Reviewing parameters
#> Step 2. Processing ProtConn metric
#> Done!Revisamos nuestra tabla:
test$`Protected Connected (Viewer Panel`| Index | Value | ProtConn indicator | Percentage |
|---|---|---|---|
| EC(PC) | 4404760.07 | Prot | 36.7627 |
| PC | 6.5600e-02 | Unprotected | 63.2373 |
| Maximum landscape attribute | 17196418.45 | ProtConn | 25.6144 |
| Protected surface | 6321860.45 | ProtUnconn | 11.1483 |
| RelConn | 69.6751 | ||
| ProtConn_Prot | 85.8463 | ||
| ProtConn_Trans | 1.8374 | ||
| ProtConn_Unprot | 12.3163 | ||
| ProtConn_Within | 85.7769 | ||
| ProtConn_Contig | 14.2231 | ||
| ProtConn_Within_land | 21.9712 | ||
| ProtConn_Contig_land | 3.6432 | ||
| ProtConn_Unprot_land | 3.1548 | ||
| ProtConn_Trans_land | 0.4706 |
#Alternativa: test[[1]]Ahora nuestro plot:
test$`ProtConn Plot`
#Alternativa: test[[2]]Podemos estimar la versión corregida o ProtConn bound:
test2 <- MK_ProtConn(nodes = APs,
region = Ecorreg_1,
area_unit = "ha",
distance = list(type= "edge", keep = 0.1),
distance_thresholds = 10000,
probability = 0.5,
transboundary = 50000,
plot = TRUE,
parallel = NULL,
protconn_bound = TRUE,
delta = FALSE,
write = NULL,
intern = TRUE)
#> Step 1. Reviewing parameters
#> Step 2. Processing ProtConn metric
#> Done!Tabla:
test2$`Protected Connected (Viewer Panel`| Index | Value | ProtConn indicator | Percentage |
|---|---|---|---|
| EC(PC) | 4404647.33 | Prot | 36.7627 |
| PC | 6.5600e-02 | Unprotected | 63.2373 |
| Maximum landscape attribute | 17196418.45 | ProtConn | 25.6137 |
| Protected surface | 6321860.45 | ProtUnconn | 11.1489 |
| ProtUnconn_Design | 11.1489 | ||
| ProtConn_Bound | 25.6137 | ||
| RelConn | 69.6733 | ||
| ProtConn_Prot | 85.8485 | ||
| ProtConn_Trans | 1.8410 | ||
| ProtConn_Unprot | 12.3105 | ||
| ProtConn_Within | 85.7791 | ||
| ProtConn_Contig | 14.2209 | ||
| ProtConn_Within_land | 21.9712 | ||
| ProtConn_Contig_land | 3.6425 | ||
| ProtConn_Unprot_land | 3.1532 | ||
| ProtConn_Trans_land | 0.4716 |
Podemos estimar la contribución individial de cada AP en la ecorregión:
test3 <- MK_ProtConn(nodes = APs,
region = Ecorreg_1,
area_unit = "ha",
distance = list(type= "edge", keep = 0.1),
distance_thresholds = 10000,
probability = 0.5,
transboundary = 50000,
plot = TRUE,
parallel = NULL,
protconn_bound = FALSE,
delta = TRUE,
write = NULL,
intern = TRUE)
#> Step 1. Reviewing parameters
#> Step 2. Processing ProtConn metric
#> Step 3. Processing Delta ProtConn
#> Done!
test3$ProtConn_Delta
#> Simple feature collection with 12 features and 6 fields
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: -7507429 ymin: -219677.7 xmax: -6716030 ymax: 414710.1
#> Projected CRS: World_Mollweide
#> First 10 features:
#> NAME
#> 1 Rio Apaporis
#> 3 Alto Rio Negro
#> 5 Yaigoje Apaporis
#> 6 Puinawai
#> 8 Sierra de la Macarena
#> 9 Tinigua
#> 10 Cordillera de los Picachos
#> 11 Cahuinari
#> 13 Jardin Botanico de la Macarena I
#> 14 Jardin Botanico de la Macarena II
#> DESIGNACIO ESCALA_2
#> 1 <NA> Transboundary
#> 3 <NA> Transboundary
#> 5 Parque Nacional Natural Nacional
#> 6 Reserva Natural Nacional
#> 8 Parque Nacional Natural Nacional
#> 9 Parque Nacional Natural Nacional
#> 10 Parque Nacional Natural Nacional
#> 11 Parque Nacional Natural Nacional
#> 13 Reserva Natural de la Sociedad Civil Subnacional
#> 14 Reserva Natural de la Sociedad Civil Subnacional
#> dProt dProtConn varProtConn
#> 1 9.172455e-08 3.074408e-08 7.874913e-09
#> 3 2.261837e-05 8.382440e-06 2.147112e-06
#> 5 1.517942e+01 3.328922e+00 8.526837e-01
#> 6 4.013589e-01 1.472522e-01 3.771777e-02
#> 8 5.732189e+00 5.863921e+00 1.502009e+00
#> 9 3.105072e+00 2.331058e+00 5.970867e-01
#> 10 5.654031e-01 4.216302e-01 1.079981e-01
#> 11 6.261682e-02 1.460151e-03 3.740089e-04
#> 13 8.278110e-04 1.574435e-04 4.032822e-05
#> 14 1.156824e-03 2.296548e-04 5.882471e-05
#> geometry
#> 1 POLYGON ((-6928552 -125522....
#> 3 POLYGON ((-6893113 -93721.5...
#> 5 POLYGON ((-7113144 -809.770...
#> 6 POLYGON ((-6882762 368339.5...
#> 8 POLYGON ((-7400800 283634.2...
#> 9 POLYGON ((-7419123 338904.9...
#> 10 POLYGON ((-7440367 333009.1...
#> 11 POLYGON ((-7052835 -187080....
#> 13 POLYGON ((-7399114 254319, ...
#> 14 POLYGON ((-7399114 254319, ...Delta protegido:
library(classInt)
library(dplyr)
#>
#> Adjuntando el paquete: 'dplyr'
#> The following objects are masked from 'package:igraph':
#>
#> as_data_frame, groups, union
#> The following objects are masked from 'package:raster':
#>
#> intersect, select, union
#> The following objects are masked from 'package:terra':
#>
#> intersect, union
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dProtConn <- test3$ProtConn_Delta
# Calcular los intervalos de Jenks para strength
breaks <- classInt::classIntervals(dProtConn$dProt, n = 5, style = "jenks")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProt_q = cut(dProt,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = Ecorreg_1, fill = NA, color = "black") +
geom_sf(data = dProtConn2, aes(fill = dProt_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlBu", direction = -1, name = "Delta Protegido(jenks)") +
theme_minimal() +
labs(
title = "Delta Prot",
fill = "Delta Prot"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
Delta ProtConn:
dProtConn <- test3$ProtConn_Delta
# Calcular los intervalos de Jenks para strength
breaks <- classInt::classIntervals(dProtConn$dProtConn, n = 5, style = "jenks")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(dProtConn,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = Ecorreg_1, fill = NA, color = "black") +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlBu", direction = 1, name = "Delta ProtConn (jenks)") +
theme_minimal() +
labs(
title = "Delta ProtConn",
fill = "Delta ProtConn"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
Variación absoluta del ProtConn:
dProtConn <- test3$ProtConn_Delta
# Calcular los intervalos de Jenks para strength
breaks <- classInt::classIntervals(dProtConn$varProtConn, n = 5, style = "jenks")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(varProtConn_q = cut(varProtConn,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = Ecorreg_1, fill = NA, color = "black") +
geom_sf(data = dProtConn2, aes(fill = varProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "PuOr", direction = -1, name = "varProtConn (jenks)") +
theme_minimal() +
labs(
title = "varProtConn",
fill = "varProtConn"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
10.0.3 Función MK_ProtConnMult()
La función estima el índice ProtConn para multiples regiones. El argumento region pasa a regions y se puede acceder al argumento CI para estimar intervalos de confianza.
test <- MK_ProtConnMult(nodes = APs,
regions = Ecorreg,
area_unit = "ha",
distance = list(type= "edge", keep = 0.1),
distance_thresholds = 10000,
probability = 0.5,
transboundary = 50000,
plot = TRUE,
parallel = 4,
protconn_bound = FALSE,
delta = FALSE,
CI = "all",
write = NULL,
intern = FALSE)Tabla:
test$ProtConn_10000$ProtConn_overall10000| ProtConn indicator | Values (%) | SD | SEM | normal.lower | normal.upper | basic.lower | basic.upper | percent.lower | percent.upper | bca.lower | bca.upper | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | Prot | 16.849 | 20.205 | 3.517 | 10.450 | 23.564 | 10.143 | 23.012 | 10.687 | 23.555 | 11.993 | 26.502 |
| 4 | Unprotected | 83.151 | 20.205 | 3.517 | 76.436 | 89.550 | 76.988 | 89.857 | 76.445 | 89.313 | 73.498 | 88.007 |
| 5 | ProtConn | 12.783 | 18.950 | 3.299 | 6.855 | 19.055 | 6.558 | 18.098 | 7.468 | 19.008 | 8.480 | 22.415 |
| 6 | ProtUnconn | 4.066 | 6.353 | 1.106 | 1.918 | 6.186 | 1.762 | 5.953 | 2.180 | 6.371 | 2.441 | 6.940 |
| 7 | RelConn | 56.029 | 35.611 | 6.199 | 43.969 | 67.949 | 43.112 | 68.040 | 44.018 | 68.947 | 43.586 | 68.558 |
| 8 | ProtConn_Prot | 74.147 | 31.392 | 5.465 | 63.505 | 85.288 | 63.883 | 86.362 | 61.931 | 84.411 | 59.951 | 83.857 |
| 9 | ProtConn_Trans | 4.431 | 8.443 | 1.470 | 1.592 | 7.198 | 1.364 | 6.973 | 1.889 | 7.498 | 2.280 | 8.234 |
| 10 | ProtConn_Unprot | 9.301 | 9.507 | 1.655 | 6.129 | 12.391 | 5.988 | 12.248 | 6.354 | 12.614 | 6.478 | 12.710 |
| 11 | ProtConn_Within | 71.120 | 31.781 | 5.532 | 60.446 | 82.360 | 60.953 | 83.745 | 58.495 | 81.286 | 57.486 | 80.924 |
| 12 | ProtConn_Contig | 16.759 | 18.181 | 3.165 | 10.523 | 22.774 | 10.187 | 22.546 | 10.972 | 23.331 | 10.944 | 23.292 |
| 13 | ProtConn_Within_land | 7.954 | 10.850 | 1.889 | 4.231 | 11.549 | 3.801 | 11.277 | 4.630 | 12.106 | 4.939 | 12.968 |
| 14 | ProtConn_Contig_land | 1.607 | 2.254 | 0.392 | 0.854 | 2.347 | 0.788 | 2.327 | 0.887 | 2.426 | 0.983 | 2.531 |
| 15 | ProtConn_Unprot_land | 0.868 | 1.144 | 0.199 | 0.483 | 1.247 | 0.486 | 1.219 | 0.518 | 1.250 | 0.534 | 1.307 |
| 16 | ProtConn_Trans_land | 0.437 | 1.093 | 0.190 | 0.069 | 0.800 | 0.009 | 0.722 | 0.152 | 0.865 | 0.197 | 1.081 |
Plot:
test$ProtConn_10000$`ProtConn Plot`
Vector con valores para cada ecorregión:
test$ProtConn_10000$ProtConn_10000
#> Simple feature collection with 33 features and 17 fields
#> Geometry type: GEOMETRY
#> Dimension: XY
#> Bounding box: xmin: -7920394 ymin: -522895.5 xmax: -6700933 ymax: 1536361
#> Projected CRS: World_Mollweide
#> First 10 features:
#> ECO_NAME EC(PC)
#> 1 Caqueta Moist Forests 4404760.07
#> 2 Catatumbo Moist Forests 68241.38
#> 3 Cauca Valley Montane Forests 186461.48
#> 4 Chocó-Darién Moist Forests 220010.01
#> 5 Cordillera Oriental Montane Forests 632277.37
#> 6 Eastern Cordillera Real Montane Forests 180347.50
#> 7 Eastern Panamanian Montane Forests 34719.54
#> 8 Guianan Piedmont And Lowland Moist Forests NA
#> 9 Iquitos Varzeá 2183.64
#> 10 Japurá-Solimoes-Negro Moist Forests 794642.03
#> PC Prot Unprotected ProtConn ProtUnconn
#> 1 6.5600e-02 36.7627 63.2373 25.6144 11.1483
#> 2 1.0300e-02 10.1265 89.8735 10.1251 0.0013
#> 3 3.4000e-03 14.0241 85.9759 5.8035 8.2207
#> 4 1.3000e-03 7.0813 92.9187 3.6612 3.4200
#> 5 1.1400e-02 22.8190 77.1810 10.6790 12.1400
#> 6 2.7300e-02 23.1044 76.8956 16.5348 6.5696
#> 7 1.7520e-01 41.8584 58.1416 41.8584 0.0000
#> 8 NA 0.0000 100.0000 NA NA
#> 9 3.3280e-06 8.5248 91.4752 8.5248 0.0000
#> 10 5.1900e-02 22.7864 77.2136 22.7864 0.0000
#> RelConn ProtConn_Prot ProtConn_Trans ProtConn_Unprot
#> 1 69.6751 85.8463 1.8374 12.3163
#> 2 99.9868 91.1014 1.0211 7.8776
#> 3 41.3819 63.8517 4.5578 31.5904
#> 4 51.7031 79.8607 5.7964 14.3428
#> 5 46.7986 63.4544 22.4407 14.1050
#> 6 71.5656 78.4244 3.3319 18.2437
#> 7 100.0000 99.9998 0.0002 0.0000
#> 8 NA NA NA NA
#> 9 NA 100.0000 NA NA
#> 10 100.0000 100.0000 0.0000 0.0000
#> ProtConn_Within ProtConn_Contig ProtConn_Within_land
#> 1 85.7769 14.2231 21.9712
#> 2 90.7351 9.2649 9.1871
#> 3 43.1852 56.8148 2.5062
#> 4 64.1952 35.8048 2.3503
#> 5 61.4646 38.5354 6.5638
#> 6 61.9677 38.0323 10.2463
#> 7 99.9998 0.0002 41.8583
#> 8 NA NA NA
#> 9 100.0000 NA NA
#> 10 100.0000 0.0000 22.7864
#> ProtConn_Contig_land ProtConn_Unprot_land
#> 1 3.6432 3.1548
#> 2 0.9381 0.7976
#> 3 3.2972 1.8333
#> 4 1.3109 0.5251
#> 5 4.1152 1.5063
#> 6 6.2886 3.0166
#> 7 0.0001 0.0000
#> 8 NA NA
#> 9 NA NA
#> 10 0.0000 0.0000
#> ProtConn_Trans_land geometry
#> 1 0.4706 MULTIPOLYGON (((-7354073 34...
#> 2 0.1034 POLYGON ((-7208574 1001585,...
#> 3 0.2645 MULTIPOLYGON (((-7480526 88...
#> 4 0.2122 MULTIPOLYGON (((-7692447 10...
#> 5 2.3964 POLYGON ((-7154131 1377384,...
#> 6 0.5509 POLYGON ((-7676692 240705.2...
#> 7 0.0001 MULTIPOLYGON (((-7705753 10...
#> 8 NA MULTIPOLYGON (((-6777542 50...
#> 9 NA MULTIPOLYGON (((-7008087 -5...
#> 10 0.0000 MULTIPOLYGON (((-6812922 35...
dProtConn <- test$ProtConn_10000$ProtConn_10000
# Calcular los intervalos
breaks <- classInt::classIntervals(dProtConn$ProtConn, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(ProtConn,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn") +
theme_minimal() +
labs(
title = "ProtConn",
fill = "ProtConn"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
ProtConn_Unprot:
dProtConn <- test$ProtConn_10000$ProtConn_10000
# Calcular los intervalos
breaks <- classInt::classIntervals(dProtConn$ProtConn_Unprot, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(ProtConn_Unprot,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn_Unprot") +
theme_minimal() +
labs(
title = "ProtConn_Unprot",
fill = "ProtConn_Unprot"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
ProtConn_Within:
dProtConn <- test$ProtConn_10000$ProtConn_10000
# Calcular los intervalos
breaks <- classInt::classIntervals(dProtConn$ProtConn_Within, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(ProtConn_Within,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn_Within") +
theme_minimal() +
labs(
title = "ProtConn_Within",
fill = "ProtConn_Within"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
ProtConn_Contig:
dProtConn <- test$ProtConn_10000$ProtConn_10000
# Calcular los intervalos
breaks <- classInt::classIntervals(dProtConn$ProtConn_Contig, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(ProtConn_Contig,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn_Contig") +
theme_minimal() +
labs(
title = "ProtConn_Contig",
fill = "ProtConn_Contig"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
ProtConn_Trans:
dProtConn <- test$ProtConn_10000$ProtConn_10000
# Calcular los intervalos
breaks <- classInt::classIntervals(dProtConn$ProtConn_Trans, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
dProtConn2 <- dProtConn %>%
mutate(dProtConn_q = cut(ProtConn_Trans,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = dProtConn2, aes(fill = dProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn_Trans") +
theme_minimal() +
labs(
title = "ProtConn_Trans",
fill = "ProtConn_Trans"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
10.0.4 Función MK_ProtConn_raster()
Estima el índice ProtConn con un raster de nodos. Cada Área Protegida debe tener un id unico (grupos de pixeles con id de cada AP).
APs_raster <- raster("C:/Users/oscta/OneDrive/Documents/RedBioma/Clase 6/Areas_protegidas_raster.tif")
APs_raster
#> class : RasterLayer
#> dimensions : 2536, 2027, 5140472 (nrow, ncol, ncell)
#> resolution : 1000, 1000 (x, y)
#> extent : -8227460, -6200460, -1021404, 1514596 (xmin, xmax, ymin, ymax)
#> crs : +proj=moll +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
#> source : Areas_protegidas_raster.tif
#> names : Areas_protegidas_raster
#> values : 1, 1530 (min, max)
plot(st_geometry(Ecorreg))
plot(APs_raster, add = TRUE)
Ecorreg_prueba <- Ecorreg[2,]
test <- MK_ProtConn_raster(nodes = APs_raster,
region = Ecorreg_prueba,
area_unit = "ha",
distance = list(type= "edge", keep = 0.1),
distance_thresholds = 10000,
probability = 0.5,
transboundary = 50000,
plot = TRUE,
parallel = NULL,
write = NULL,
intern = FALSE)
test
#> $`Protected Connected (Viewer Panel)`
#>
#> $`ProtConn Plot`
10.1 Función MK_Connect_grid()
Use esta función para estimar los índices ProtConn, EC o ECA, PC e IIC sobre una malla regular de hexágonos o cuadros.
Disolveré las geometrías de las ecorregiones para obtener un único polígono:

Ahora aplicaré la función MK_Connect_grid()
hexagons_priority <- MK_Connect_grid(nodes = APs,
region = Regiones,
area_unit = "ha",
grid = list(hexagonal = FALSE,
cellsize = unit_convert(4000, "km2", "m2"), clip = TRUE),
protconn = TRUE,
distance_threshold = 3000,
probability = 0.5,
transboundary = 6000,
distance = list(type = "edge", keep = 0.1),
intern = TRUE,
parallel = 6)ProtConn:
# Calcular los intervalos
breaks <- classInt::classIntervals(hexagons_priority$ProtConn, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
hexagons_priority <- hexagons_priority %>%
mutate(ProtConn_q = cut(ProtConn,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = hexagons_priority, aes(fill = ProtConn_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ProtConn") +
theme_minimal() +
labs(
title = "ProtConn",
fill = "ProtConn"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
ProtConn[Unprot]:
# Calcular los intervalos
breaks <- classInt::classIntervals(hexagons_priority$ProtConn_Unprot, n = 5, style = "quantile")
# Crear una nueva variable categórica con los intervalos
hexagons_priority <- hexagons_priority %>%
mutate(ProtConn_Unprot_q = cut(ProtConn_Unprot,
breaks = breaks$brks,
include.lowest = TRUE,
dig.lab = 5))
# Graficar en ggplot2 usando las clases Jenks
ggplot() +
geom_sf(data = hexagons_priority, aes(fill = ProtConn_Unprot_q), color = "black", size = 0.1) +
scale_fill_brewer(palette = "RdYlGn", direction = 1, name = "ECA") +
theme_minimal() +
labs(
title = "ProtConn[Unprot]",
fill = "ProtConn[Unprot]"
) +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5)
)
10.2 Referencias
Castillo, L. S., Correa Ayram, C. A., Matallana Tobón, C. L., Corzo, G., Areiza, A., González-M., R., Serrano, F., Chalán Briceño, L., Sánchez Puertas, F., More, A., Franco, O., Bloomfield, H., Aguilera Orrury, V. L., Rivadeneira Canedo, C., Morón-Zambrano, V., Yerena, E., Papadakis, J., Cárdenas, J. J., Golden Kroner, R. E., & Godínez-Gómez, O. (2020). Connectivity of Protected Areas: Effect of Human Pressure and Subnational Contributions in the Ecoregions of Tropical Andean Countries. Land, 9(8), Article 8. https://doi.org/10.3390/land9080239
Saura, S., Bastin, L., Battistella, L., Mandrici, A., & Dubois, G. (2017). Protected areas in the world’s ecoregions: How well connected are they? Ecological Indicators, 76, 144-158. https://doi.org/10.1016/j.ecolind.2016.12.047
Saura, S., Bertzky, B., Bastin, L., Battistella, L., Mandrici, A., & Dubois, G. (2018). Protected area connectivity: Shortfalls in global targets and country-level priorities. Biological Conservation, 219, 53-67. https://doi.org/10.1016/j.biocon.2017.12.020