Cuando se trabaja con incendios, restauración ecológica, cambio de
cobertura o análisis de cuencas, una tarea frecuente es identificar dónde
ocurrió fuego en años específicos. Google Earth Engine permite consultar el
producto MODIS MCD64A1 sin descargar manualmente archivos HDF, procesar los
meses de cada año y exportar un raster anual listo para usar en ArcGIS Pro,
QGIS u otros SIG.
El resultado de este tutorial es una serie de rasters binarios
llamados BQ_YYYY. En cada raster, el valor 1 representa píxeles quemados
durante ese año y el valor 0 representa píxeles no quemados o sin detección de
quema dentro del área de estudio.
1. ¿Qué es MODIS MCD64A1?
MCD64A1 es un producto mensual global de área quemada generado a
partir de observaciones MODIS Terra y Aqua. La versión 061 entrega información
por píxel sobre áreas quemadas y calidad del dato a una resolución aproximada
de 500 metros.
La banda principal utilizada en este tutorial es BurnDate. Esta
banda indica el día juliano aproximado en el que ocurrió la quema. Si el valor
es 0, el píxel se considera no quemado. Si el valor está entre 1 y 366, el
píxel fue identificado como quemado en ese día del año.
Ficha rápida del dataset
|
Elemento |
Descripción |
|
Colección GEE |
MODIS/061/MCD64A1 |
|
Producto |
MODIS/Terra+Aqua Burned Area Monthly L3 Global 500m SIN Grid V061 |
|
Resolución espacial |
500 m x 500 m |
|
Resolución temporal |
Mensual |
|
Banda usada |
BurnDate |
|
Interpretación para este script |
BurnDate > 0 se convierte en 1; BurnDate = 0 se interpreta como
no quemado. |
|
Nota sobre el año 2000 |
El producto inicia en noviembre de 2000; por lo tanto, 2000 no
representa un año completo. |
2. Requisitos antes de ejecutar el código
- Tener una cuenta habilitada de
Google Earth Engine.
- Abrir el Code Editor de Earth
Engine.
- Tener cargada el área de
estudio como un Asset tipo FeatureCollection. En este ejemplo se usa:
projects/dalpgis/assets/CUENCAS_AOI.
- Tener espacio disponible en
Google Drive para recibir los archivos GeoTIFF exportados.
- Saber que Earth Engine crea
tareas de exportación; desde la pestaña Tasks se deben ejecutar o confirmar las
descargas.
3. Lógica general del script
El script hace lo
siguiente, en orden:
1.
Carga tu área de estudio (AOI) desde un asset propio.
2.
Define una lista de años a procesar.
3.
Dibuja el AOI con borde rojo y relleno transparente.
4.
Por cada año, filtra MODIS, genera un raster binario
anual, lo añade al mapa y programa su exportación a Drive.
5.
Te deja una lista de tareas (Tasks) listas para
ejecutar.
4. Código completo (copiar y pegar en GEE)
Copia el siguiente código y pégalo en el Code Editor de Earth Engine. Más abajo lo explico bloque por bloque.
//
============================================================
//
DESCARGA MULTIANUAL MODIS MCD64A1.061 COMO RASTER BINARIO
//
Áreas quemadas anuales: BQ_YYYY
//
Autor: DALPGIS
//
============================================================
// 1) Definir el Área de
Interés (AOI)
var aoi =
ee.FeatureCollection('projects/dalpgis/assets/CUENCAS_AOI');
// 2) Lista de años a
procesar
var years = [2000, 2005,
2010, 2015, 2020, 2024];
// 3) Estilo del AOI:
borde rojo, relleno transparente
var aoiStyle = {color: 'FF0000', fillColor:
'00000000', width: 2};
Map.addLayer(aoi.style(aoiStyle),
{}, 'Área de Estudio (AOI)');
// 4) Centrar el mapa
sobre el AOI
Map.centerObject(aoi, 7);
// 5) Paleta de
visualización
var visParams = {min: 0,
max: 1, palette: ['000000', 'FF4500']};
// 6) Función que procesa
un año
function procesarAnio(year) {
var modis =
ee.ImageCollection('MODIS/061/MCD64A1')
.filterDate(year + '-01-01', year + '-12-31')
.select('BurnDate');
var burnedYear
= modis.map(function(img) {
return
img.gt(0);
}).max().rename('BQ_' + year).uint8();
var burnedClip
= burnedYear.clip(aoi);
Map.addLayer(
burnedClip.updateMask(burnedClip),
visParams,
'Áreas Quemadas ' + year,
false
);
Export.image.toDrive({
image:
burnedClip,
description:
'BQ_' + year,
folder:
'MODIS_MCD64A1_BQ',
fileNamePrefix: 'BQ_' + year,
region: aoi,
scale: 500,
maxPixels: 1e13
});
}
// 7) Aplicar la función
a cada año
years.forEach(procesarAnio);
// 8) Mensaje informativo
print('Tareas generadas
para los años:', years);
print('Abre la pestaña
Tasks y pulsa RUN en cada tarea.');
5. Explicación bloque por bloque
5.1. Cargar el área de estudio
var aoi = ee.FeatureCollection('projects/dalpgis/assets/CUENCAS_AOI');
La palabra var
declara una variable en JavaScript. Una variable es simplemente un nombre que
guarda un valor para reutilizarlo después. Aquí guardamos en aoi la
colección de polígonos que representa tus cuencas hidrográficas. El texto entre
comillas es la ruta a tu asset en GEE; si tu AOI está en otra ruta, solo
cámbiala.
5.2. Lista de años
var years = [2000, 2005, 2010, 2015, 2020, 2024];
Los corchetes [ ]
definen una lista (array). Aquí guardamos los años que queremos
procesar. Para añadir o quitar años, simplemente edita esta lista, por ejemplo:
[1995, 2001, 2008]. El producto MCD64A1 está
disponible desde noviembre de 2000, así que evita años anteriores.
5.3. Estilo del AOI: borde rojo, relleno transparente
var aoiStyle = {color: 'FF0000', fillColor:
'00000000', width: 2};
Map.addLayer(aoi.style(aoiStyle), {}, 'Área de Estudio (AOI)');
Los objetos entre llaves {
} guardan pares clave: valor. El color se expresa en formato hexadecimal (HEX):
•
'FF0000' es rojo puro para el borde.
•
'00000000' tiene 8 caracteres: los dos últimos ('00')
indican opacidad 0, es decir, relleno totalmente transparente.
•
'width: 2' define el grosor de la línea del borde.
Map.addLayer agrega la
capa al mapa con el nombre 'Área de Estudio (AOI)' que verás en el panel de
capas (arriba a la derecha del mapa).
5.4. Centrar el mapa
Map.centerObject(aoi, 7);
Esta línea ajusta automáticamente el mapa para que tu AOI quede centrado. El número 7 es el nivel de zoom (a mayor número, más cerca). Puedes probar valores entre 5 y 10 según el tamaño de tu zona.
5.5. Paleta de colores para el raster
var visParams = {min: 0, max: 1, palette: ['000000', 'FF4500']};
visParams le dice a GEE
cómo pintar el raster en el mapa: valores iguales a 0 se asocian al primer
color y valores iguales a 1 al segundo. Usamos negro ('000000') para 'no
quemado' y naranja-rojo ('FF4500') para 'quemado'. Más adelante enmascararemos
los ceros para que se vea transparente el fondo.
5.6. La función que procesa cada año
Una función es un bloque
de código reutilizable. La definimos una vez y la llamamos varias veces con
datos distintos (en nuestro caso, distintos años).
function procesarAnio(year) {
var modis =
ee.ImageCollection('MODIS/061/MCD64A1')
.filterDate(year + '-01-01', year + '-12-31')
.select('BurnDate');
Aquí cargamos la colección
MODIS, la filtramos al año recibido como parámetro (la concatenación year + '-01-01' forma cadenas como '2020-01-01')
y nos quedamos solo con la banda BurnDate.
var
burnedYear = modis.map(function(img) {
return
img.gt(0);
}).max().rename('BQ_' + year).uint8();
Este bloque hace tres
cosas en cadena:
•
.map(...) aplica una función a cada imagen mensual:
img.gt(0) devuelve 1 donde BurnDate > 0 y 0 en el resto.
•
.max() combina los 12 meses tomando, píxel a píxel, el
valor máximo. Si un píxel se quemó en cualquier mes, el resultado anual será 1.
•
.rename('BQ_' + year) le pone un nombre descriptivo a
la banda (por ejemplo, BQ_2020). .uint8() convierte a entero de 8 bits para que
el archivo final sea más liviano.
var
burnedClip = burnedYear.clip(aoi);
.clip(aoi) recorta el
raster a los límites de tu AOI para que no exportes información innecesaria
fuera de la zona.
Map.addLayer(
burnedClip.updateMask(burnedClip),
visParams,
'Áreas Quemadas ' + year,
false
);
Aquí añadimos cada año al
mapa como una capa independiente. Detalles:
•
.updateMask(burnedClip) hace transparentes los píxeles
con valor 0, dejando visibles solo los quemados.
•
El tercer argumento es el nombre de la capa (verás
'Áreas Quemadas 2000', 'Áreas Quemadas 2005', etc., en el panel de capas).
•
El cuarto argumento, false, deja la capa apagada por
defecto. Actívala manualmente desde el panel de capas para comparar años.
Export.image.toDrive({
image:
burnedClip,
description:
'BQ_' + year,
folder:
'MODIS_MCD64A1_BQ',
fileNamePrefix: 'BQ_' + year,
region: aoi,
scale: 500,
maxPixels: 1e13
});
}
Export.image.toDrive
programa la exportación del raster a Google Drive. No descarga nada de
inmediato: crea una tarea en la pestaña Tasks que debes ejecutar manualmente.
Parámetros importantes:
•
description y fileNamePrefix: nombres que aparecerán en
la tarea y el archivo final (por ejemplo, BQ_2020.tif).
•
folder: carpeta dentro de tu Google Drive donde se
guardará el archivo. Si no existe, se crea automáticamente.
•
region: límites espaciales de la exportación; usamos tu
AOI.
•
scale: 500: tamaño del píxel en metros (la resolución
nativa de MCD64A1).
•
maxPixels: 1e13: límite alto de píxeles para evitar
errores cuando el AOI es grande.
5.7. Aplicar la función a todos los años
years.forEach(procesarAnio);
El método .forEach() recorre la lista de años y ejecuta la
función procesarAnio una vez por cada uno. Es la línea que permite
procesar 2000, 2005, 2010, 2015, 2020 y 2024 al mismo tiempo sin repetir
código.
6. Cómo ejecutarlo en GEE paso a paso
1.
Entra a https://code.earthengine.google.com con tu
cuenta de Google registrada en Earth Engine.
2.
En el panel central, borra el código de ejemplo y pega
el script completo.
3.
Reemplaza la ruta del AOI
('projects/dalpgis/assets/CUENCAS_AOI') por la de tu propio asset, si es
distinta.
4.
Haz clic en el botón Run (arriba del editor). En unos
segundos verás el AOI en rojo y, en el panel de capas, las capas de cada año
(apagadas por defecto).
5.
Activa las capas que quieras comparar marcando su
casilla en el panel de capas, arriba a la derecha del mapa.
6.
Abre la pestaña Tasks (al lado derecho del editor) y
pulsa RUN en cada tarea BQ_YYYY. Confirma el cuadro de diálogo que aparece.
7.
Espera a que las tareas terminen (de minutos a horas
según el tamaño del AOI). Los archivos .tif aparecerán en tu Google Drive, en
la carpeta MODIS_MCD64A1_BQ.
7. Cómo personalizar el script
Edita la lista 'years'
añadiendo o quitando elementos. Recuerda que MCD64A1 inicia en noviembre de
2000.
Cambiar el color del AOI
En aoiStyle, sustituye
'FF0000' por cualquier color HEX (por ejemplo, '00FF00' para verde, '0000FF'
para azul). Para hacer el borde más grueso, sube el valor de width.
Edita visParams.palette.
Por ejemplo, ['000000', 'FFFF00'] mostrará las áreas quemadas en amarillo.
Exportar a otra carpeta
Cambia el valor de
'folder' por el nombre que prefieras dentro de tu Google Drive.
8. Conclusión
Con este script tienes una base sólida para automatizar la descarga y visualización de áreas quemadas anuales en cualquier región del mundo. La estructura con función y bucle es la misma que usarás más adelante para procesar otros productos de Earth Engine, como NDVI, precipitación o temperatura. Modifica los años, el AOI y la paleta a tu gusto y empieza a construir tus propios análisis.
Si este tutorial te fue
útil, no olvides compartirlo y suscribirte para recibir más
contenido sobre GIS, teledetección e infoproductos.

