Los incendios forestales son eventos de fuego proveniente de todo tipo de bosques, que al exceder los intentos de control por parte de las entidades de control y emergencia, se vuelven descontrolados y arrasan con grandes extensiones de superficie, mayormente surgidos por la provocación de igniciones de los restos de cigarrillos, quema de basura, acción humana premeditada y otros casos posibles. Las condiciones metereológicas de baja humedad, alta temperatura y vientos rápidos impactan ampliamente en la probabilidad de su ocurrencia, y en la severidad de las áreas afectadas.
Por tal motivo una de las preocupaciones de los Geografos es obtener información de los espacios que mas riesgo presentan ante la aparición de estos fenómenos, teniendo en cuenta analizar la importancia que los factores incidentes en el territorio tienen para que aumente el riesgo. Su herramienta es el Analisis Multicriterio, y para mostrar su utilidad le explicaré como fue que realicé un Mapa de Riesgos ante Incendios Forestales dentro del área de estudio en la Región de Valparaíso.
El área de estudio comprende 6 comunas:
Las variables a utilizar comprenden:
Para empezar debemos obtener estos datos desde las fuentes de recopilación de capas geográficas, la Mapoteca de la Biblioteca del Congreso Nacional permite descargar los límites comunales, mientras que para cada variable debemos buscar usando 5 fuentes:
La capa de Humedad Topográfica debe realizarse previamente la construcción del Indice de Humedad Topográfica SAGA desde QGIS (TWI), usando tanto la Pendiente como el Aspecto obtenibles desde el DEM antes descargado.
La capa de Arraigo Comunitario fué elaboración propia del autor, al geolocalizar los puntos de Iglesias, Clubes sociales y Sedes de Juntas de Vecinos desde Google Maps, para posteriormente crear buffer de 500 metros, esto para espacializar la distancia en que estos influencian al momento de mitigación y logistica pre y post incendio.
Para que el Análisis Multicriterio sea iniciado se deben tener todos los elementos bajo el mismo sistema de coordenadas, en formato raster y la extensión y resolución exactas, para ello debemos preparar todas las capas dentro de RStudio, primero realizando lo siguiente:
# Encender las librerias a utilizar.
library(tidyverse)
library(sf)
library(terra)
# Colocar nuestro directorio de trabajo.
setwd("C:/Users/franc/Downloads/SHP Y RASTERS/")
# Cargar nustras capas
DEMVALPO <- rast("DEM Cuencas Taller1.tif")
Suelo <- read_sf("Uso de Suelo CONAF2019 Gran Valpo.gpkg")
Humedad <- rast("Humedad Final.tif")
Buf_ARRAIGO <- read_sf("C:/Users/franc/Documents/Buffer Arraigo.shp")
Estruc_vege <- read_sf("C:/Users/franc/Documents/Estructura de Vegetacion.shp")
Campamento <- read_sf("C:/Users/franc/Documents/Campamentos Valpo.shp")
IUF <- read_sf("IUF Gran Valparaiso/IUF.shp")
Areas_quemadas <- read_sf("/Documents and Settings/franc/Documents/Areas Quemadas Valpo2.shp")Lo segundo a realizar, habiendo cargado las capas, es rasterizar todas las capas bajo un raster base (DEMVALPO) para que todas estén alineadas bajo la misma resolución y extensión.
r_base <- DEMVALPO*0 + 1 ## misma resolucion que el dem y con numeros 1 pixel
campas_rast <- rasterize(vect(Campamento), r_base)
arraigo_rast <- rasterize(vect(Buf_ARRAIGO), r_base, field = "id")
areaq_rast <- rasterize(vect(Areas_quemadas), r_base)
IUF_rast <- rasterize(vect(IUF), r_base)
hum_resamp <- resample(Humedad, r_base, method="bilinear", threads= T, by_util= F)Condiciones:
Pendiente <- terrain(DEMVALPO, v = "slope", unit = "degrees")# pendiente (°)
plot(Pendiente, main = "Pendientes en bruto")Los rangos de valores de cada variable debe ser ajustada según los criterios establecidos por las instituciones creadoras de las capas, o si es una variable booleana, colocar 2 clases entre 1 y 5 (Si o No).
#Clasificación Pendiente
rcmat <- rbind(
c(-Inf, 2, 1), # 0–2 Horizontal
c( 2, 5, 2), # 2–5 Suave
c( 5, 10, 3), # 5–10 Moderada
c( 10, 20, 4), # 10–20 Fuerte
c( 20, 30, 5), # 20–30 Muy fuerte
c( 30, 45, 6), # 30–45 Escarpada
c( 45, Inf, 7) # >45 Muy escarpada
)
pend_clas <- classify(Pendiente, rcmat, right = FALSE)
# Etiquetas para el plot
labs <- data.frame(
ID = 1:7,
clase = c("Horizontal (0–2°)",
"Suave (2–5°)",
"Moderada (5–10°)",
"Fuerte (10–20°)",
"Muy fuerte (20–30°)",
"Escarpada (30–45°)",
"Muy escarpada (>45°)")
)
levels(pend_clas) <- labs
# Colores para el plot
cols <- c("white",
"papayawhip",
"darksalmon",
"lightcoral",
"red",
"red3",
"darkred")
plot(pend_clas, col = cols, main = "Clases de pendiente (grados)")# Clasificación Humedad TWI
hcmat <- rbind(
c(-Inf, 9.13, 7), # Muy seco
c( 9.13, 10.02, 6), # Seco
c( 10.02, 11, 5), # Ligeramente seco
c( 11, 12, 4), # Ligeramente húmedo
c( 12, 13.2, 3), # Húmedo
c( 13.2, 19.1, 2), # Muy húmedo
c( 19.1, Inf, 1) # Cuerpo de Agua
)
hum_clas <- classify(hum_resamp, hcmat, right = FALSE)
humlab <- data.frame(
ID = 1:7,
clase = c("Cuerpos de agua",
"Muy húmedo",
"Húmedo",
"Ligeramente húmedo",
"Ligeramente suco",
"Seco",
"Muy seco")
)
levels(hum_clas) <- humlab
cols2 <- c("blue4",
"dodgerblue",
"deepskyblue",
"skyblue2",
"lightblue",
"lightblue1",
"white")
plot(hum_clas, col = cols2, main = "Grado de humedad")# Clasificación Uso de Suelo
uso_tab <- data.frame(
USO = c("Bosques",
"Praderas y Matorrales",
"Terrenos Agrícolas",
"Áreas Desprovistas de Vegetación",
"Áreas Urbanas e Industriales",
"Humedales",
"Cuerpos de Agua"),
clase = c(5, # Bosques = Baja susceptibilidad
4, # Praderas y matorrales = Media
3, # Agrícolas = Media
5, # Desprovistas = muy alta
1, # Urbanas = alta
1, # Humedales = baja-media
1) # Agua = sin evaluar
)
suelo_reclass <- Suelo |>
dplyr::left_join(uso_tab, by = "USO")
suelo_clas <- rasterize(vect(suelo_reclass), r_base, field = "clase")
usolab <- data.frame(
ID = 1:5,
clase = c("Muy Bajo",
"Bajo",
"Medio",
"Alto",
"Muy Alto")
)
levels(suelo_clas) <- usolab
cols3 <- c("darkgreen",
"greenyellow",
"seagreen1",
"lightgoldenrod2",
"coral3")
plot(suelo_clas, col = cols3, main = "Impacto de Usos de Suelo")#Clasificación Estructura Vegetación
estruc_tab <- data.frame(
ESTRUCTURA = c("Adulta",
"Adulto",
"Nativo con Exóticas Asilvestradas",
"Nativo-Plantación",
"No Aplica",
"Pradera Perenne",
"Praderas Anuales",
"Renoval"),
clase = c(5, # Adulta = Muy alta susceptibilidad
4, # Adulto = Alta
2, # Nativo Asilvestrado = Media
3, # Nativo-Plantación = Alta
1, # No Aplica = Muy baja
2, # Pra-Perenne = Baja
2, # Pra-Anuales = Media
5) # Renoval = Muy Alta
)
estruc_reclass <- Estruc_vege |>
dplyr::left_join(estruc_tab, by = "ESTRUCTURA")
estruc_clas <- rasterize(vect(estruc_reclass), r_base, field = "clase")
estrulab <- data.frame(
ID = 1:5,
clase = c("Muy Bajo",
"Bajo",
"Medio",
"Alto",
"Muy Alto")
)
levels(estruc_clas) <- estrulab
cols4 <- c("grey",
"seagreen",
"greenyellow",
"darkgreen",
"green"
)
plot(estruc_clas, col = cols4, main = "Impácto de Vegetación")#Clasificación Campamentos
campmat <- rbind(
c(1, 5), # Si hay
c(NA, 1) # No hay
)
camp_clas <- classify(campas_rast, campmat, right = FALSE)
camp_crop <- crop(camp_clas, DEMVALPO, mask = TRUE, touches = TRUE)
plot(camp_crop, main = "Presencia de Campamentos")#Clasificación Arraigo Comunitario
arraimat <- rbind(
c(1, 5),
c(NA, 1)
)
arrai_clas <- classify(arraigo_rast, arraimat, right = FALSE)
arrai_crop <- crop(arrai_clas, DEMVALPO, mask = TRUE, touches = TRUE)
plot(arrai_crop, main = "Alcance de influencia Arraigo Comunitario")#Clasificación IUF
iufnmat <- rbind(
c(1, 5),
c(NA, 1)
)
IUF_clas <- classify(IUF_rast, iufnmat, right = FALSE)
IUF_crop <- crop(IUF_clas, DEMVALPO, mask = TRUE, touches = TRUE)
plot(IUF_crop, main = "Interfaz Urbano Forestal")#Clasificación Área Quemada
areaqunmat <- rbind(
c(1, 3),
c(NA, 1)
)
areaq_clas <- classify(areaq_rast, areaqunmat, right = FALSE)
areaq_crop <- crop(areaq_clas, DEMVALPO, mask = TRUE, touches = TRUE)
plot(areaq_crop, main = "Áreas Quemadas por Incendios Forestales 2013-2024")Habiendo preparado todas las variables el siguiente paso recae en normalizar los rangos de valores, para que el mismo sea estandarizado entre 0 a 1 y así se permita hacer el cálculo de las ponderaciones, el método de la normalización se ejemplifica con el siguiente código:
# Normalizaciones
areaq_n <- (areaq_crop - 1) / (2 - 1)
pend_n <- (pend_clas - 1) / (7 - 1)
suelo_n <- (suelo_clas - 1) / (5 - 1)
hum_n <- (hum_clas - 1) / (7 - 1)
estruc_n <- (estruc_clas - 1) / (5 - 1)
arrai_n <- (arrai_crop - 1) / (5 - 1)
camp_n <- (camp_crop - 1) / (5 - 1)
iuf_n <- (IUF_crop - 1) / (5 - 1)La importancia de las variables en el cálculo del Análisis Multicriterio se debe ajustar de acuerdo a las experiencias, evidencias y discusiones sujetas al objetivo de estudio, bajo un consenso de expertos en la materia.
Condición:
Los últimos pasos constan de crear un índice que permita registrar el grado de riesgo de los incendios forestales, para ello se debe seguir lo siguiente:
# Calculo del Índice
ISR <- (w_pend * pend_n) + (w_areaq * areaq_n) + (w_hum * hum_n) + (w_suelo * suelo_n) + (w_estruc * estruc_n) + (w_arrai * arrai_n) + (w_camp * camp_n) + (w_iuf * iuf_n)
# Clasificación en clases
m_isr <- matrix(c(-Inf, 0.20, 1,
0.20, 0.40, 2,
0.40, 0.60, 3,
0.60, 0.80, 4,
0.80, Inf, 5), ncol=3, byrow=TRUE)
ISR_cl <- classify(ISR, m_isr, right = FALSE)
levels(ISR_cl) <- data.frame(
ID = 1:5,
clase = c("Muy Baja", "Baja", "Media", "Alta", "Muy Alta")
)
#Ploteo del mapa
cols_isr <- c("lightblue",
"palegreen2",
"yellow",
"orange",
"red")
plot(ISR_cl, col = cols_isr,
main = "Riesgo ante Incendios Forestales")El metodo de Análisis Multicriterio permite espacializar las áreas de riesgo que se presentan para los eventos de incendios forestales, notando que aquellos espacios en rojo demuestran altos niveles de riesgo por la frecuencia de poca Humedad, alta Pendiente, Usos forestales y matorrales junto a Estructuras renovales y exóticas, asi como a estar fuera de la influencia del Arraígo Comunitario y estar dentro de Campamentos, Interfaces Urbano Forestal y Áreas Quemadas.
La utilización de este resumen del Trabajo de Taller 1 facilitará a otros interesados en aplicar el Análisis Multicriterio en sus investigaciones, aplicando los consejos y pasos a seguir, garantizando un correcto uso de este método bajo todo tipo de casos de estudio.