
Proyecto Peridotita #11: Mapa de Vulnerabilidad de Sierra Bermeja — Aplicando la Inteligencia Artificial a Google Earth Engine y propuestas para Climate Detectives
1. De los algoritmos de Python al territorio real
En la entrada anterior (Entrada #10), dimos un salto cualitativo al entrenar un algoritmo de Árbol de Decisión (Decision Tree Classifier) en Google Colab con scikit-learn. La Inteligencia Artificial analizó las muestras de Sierra Bermeja y extrajo de forma autónoma los umbrales numéricos de salud vegetal ($NBR$) que separan el terreno según su grado de riesgo:
- 🔴 Riesgo Alto (Clase 0): $NBR \le 0,15$
- 🟡 Riesgo Medio (Clase 1): $0,15 < NBR \le 0,349$
- 🟢 Riesgo Bajo (Clase 2): $NBR > 0,349$
En esta Entrada #11, cerramos el círculo de nuestro proyecto de investigación: traducimos las reglas lógicas aprendidas por la IA en un script de Google Earth Engine (GEE) para generar el Mapa de Vulnerabilidad Global de Sierra Bermeja, superpuesto sobre una imagen satelital en color real (RGB) y calculando la superficie exacta afectada en hectáreas.
2. Manual Paso a Paso: Cómo reproducir este trabajo en el aula
Para que cualquier alumno, docente o investigador pueda replicar este proceso en cualquier momento, la metodología se sintetiza en los siguientes pasos:
Paso 1: Configurar el entorno y el perímetro en GEE
- Abrimos code.earthengine.google.com y cargamos la geometría del perímetro oficial del incendio (
EMSR545). - Filtramos las imágenes de Sentinel-2 para el periodo estival reciente con menos de un 15% de nubosidad.
Paso 2: Generar la base de color real (RGB) y la capa NBR
- Seleccionamos las bandas visibles ($B4, B3, B2$) para construir la ortofoto compuesta en color real que servirá de fondo topográfico.
- Calculamos el índice normado de vegetación $NBR = \frac{B8 – B12}{B8 + B12}$ sobre el perímetro recortado.
Paso 3: Crear máscaras booleanas con los umbrales de la IA
- Para evitar fallos de memoria gráfica y permitir un zoom fluido en el mapa, aplicamos las reglas de la IA en forma de máscaras lógicas independientes (
.lte(),.gt(),.selfMask()). - Esto nos permite ajustar la transparencia de cada nivel de riesgo por separado sobre el mapa base.
Paso 4: Cuantificación espacial de hectáreas (reduceRegion)
- Convertimos la superficie de cada píxel a hectáreas dividiendo el área entre $10.000\,m^2$.
- Ejecutamos
reduceRegionagrupando los píxeles por categoría de riesgo para obtener el cómputo cuantitativo exacto.
3. El Código Completo en Google Earth Engine
JavaScript
// ================================================================
// PROYECTO PERIDOTITA #11 - MAPA DE VULNERABILIDAD GLOBAL (IA + GEE)
// IES Monterroso / MonteSteam - Climate Detectives
// ================================================================
// 1. Cargar el perímetro oficial del incendio
var perimetroOficial = ee.FeatureCollection('projects/gen-lang-client-0168288728/assets/perimetro_oficial_emsr545');
var aoi = perimetroOficial.geometry();
// 2. Colección Sentinel-2 reciente (Verano)
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(aoi)
.filterDate('2024-06-01', '2025-09-01')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 15));
// Imagen base en Color Real (RGB: B4, B3, B2)
var rgbReal = s2.select(['B4', 'B3', 'B2']).median().clip(aoi);
// Mediana del índice NBR
var nbr = s2.map(function(img) {
return img.normalizedDifference(['B8', 'B12']);
}).median().clip(aoi);
// 3. REINSERTAR UMBRALES APRENDIDOS POR LA IA EN COLAB (MÁSCARAS INDEPENDIENTES)
var riesgoAlto = nbr.lte(0.15).selfMask();
var riesgoMedio = nbr.gt(0.15).and(nbr.lte(0.349)).selfMask();
var riesgoBajo = nbr.gt(0.349).selfMask();
// 4. VISUALIZACIÓN EN EL MAPA INTERACTIVO DE GEE
Map.centerObject(aoi, 12);
// Capa Base: Foto satelital en color real
Map.addLayer(rgbReal, {min: 0, max: 2500, bands: ['B4', 'B3', 'B2']}, '01. Foto Satelital Color Real (RGB)');
// Capas de Riesgo Semaforizadas con Opacidad Regulable
Map.addLayer(riesgoBajo, {palette: ['1e8e3e']}, '🟢 Riesgo Bajo (NBR > 0.349)', true, 0.45);
Map.addLayer(riesgoMedio, {palette: ['f9ab00']}, '🟡 Riesgo Medio (0.15 < NBR <= 0.349)', true, 0.55);
Map.addLayer(riesgoAlto, {palette: ['d93025']}, '🔴 Riesgo Alto (NBR <= 0.15)', true, 0.75);
// Perímetro del incendio en línea blanca fina
Map.addLayer(perimetroOficial.style({color: 'ffffff', fillColor: '00000000', width: 2}), {}, '05. Perímetro EMSR545');
// 5. CÁLCULO DE HECTÁREAS EXACTAS POR CATEGORÍA
var mapaCategorico = nbr.expression(
"(nbr <= 0.15) ? 0 : (nbr <= 0.349) ? 1 : 2",
{'nbr': nbr}
).clip(aoi);
var areaImagen = ee.Image.pixelArea().divide(10000).addBands(mapaCategorico);
var conteoHectareas = areaImagen.reduceRegion({
reducer: ee.Reducer.sum().group({
groupField: 1,
groupName: 'Clase_Riesgo',
}),
geometry: aoi,
scale: 10,
maxPixels: 1e9
});
print('📊 RESULTADOS DE SUPERFICIE EN HECTÁREAS (HA):', conteoHectareas);
4. Resultados Obtenidos: Balance de Superficie Afectada
(📌 Nota para la publicación: Insertar aquí las capturas de pantalla del mapa semaforizado superpuesto y del resultado de la consola de GEE).
Al ejecutar la reducción por regiones (reduceRegion) a una resolución espacial de 10 metros, la consola de Google Earth Engine nos devuelve los siguientes datos cuantitativos dentro del perímetro analizado:
| Clase de Riesgo | Nivel de Vulnerabilidad | Umbral NBR (IA) | Superficie (ha) | Porcentaje (%) |
| Clase 0 | 🔴 Riesgo Alto | $NBR \le 0,15$ | 5.565,10 ha | 17,96% |
| Clase 1 | 🟡 Riesgo Medio | $0,15 < NBR \le 0,349$ | 12.402,15 ha | 40,02% |
| Clase 2 | 🟢 Riesgo Bajo | $NBR > 0,349$ | 13.023,78 ha | 42,02% |
| TOTAL | — | — | 30.991,03 ha | 100,00% |
Interpretación Científica de los Datos:
- Las zonas críticas (17,96% / 5.565,10 ha): Se concentran principalmente en las laderas empinadas orientadas al sur y sudoeste. La pérdida acelerada de la fina capa orgánica sobre el sustrato peridotítico ha impedido la fijación biológica, manteniendo el índice de vegetación en niveles muy bajos.
- La franja de recuperación (40,02% / 12.402,15 ha): Representa el ecosistema de matorral seral (alcornoque, junqueras, aulagas) que está colonizando el terreno. Es una masa vegetal frágil ante la erosión hídrica.
- Zonas consolidadas (42,02% / 13.023,78 ha): Corresponden a áreas perimetrales o de fondo de valle donde la cobertura vegetal ha recuperado densidad o el fuego tuvo un impacto menor.






