ET promedio historico en Google Earth Engine


En una entrada anterior vimos cómo obtener la evapotranspiración (ET) acumulada en un año agrícola utilizando el conjunto de datos de evapotranspiración/flujo de calor latente MOD16A2 versión 6 (ver entrada anterior).
En esta nueva publicación vamos a ir un paso más allá: aprenderemos a calcular la ET promedio anual histórica, es decir, el valor promedio de evapotranspiración en un lugar determinado a lo largo de varios años.
Este análisis es útil para:
Estimar el consumo promedio de agua en diferentes regiones o cultivos.
Evaluar la disponibilidad hídrica en el largo plazo.
Comparar condiciones normales con años específicos (por ejemplo, para detectar sequías o excesos de lluvia).
Podemos definir el período histórico según nuestras necesidades: 5, 10, 15 años, o incluso usar todos los años disponibles del conjunto MOD16A2 (que comienza en el año 2000).
En esta entrada exploraremos cómo hacerlo paso a paso en Google Earth Engine (GEE), filtrando los datos, calculando promedios y visualizándolos en el mapa o exportándolos para su análisis.
1. Definir capas de referencia, país y años de analisis
Usamos una capa de límites nacionales de México y dos módulos personalizados (de VICAL) para agregar estilos y leyendas. Ademas, ingresamos una lista con los años que queremos analizar.
var NA = ee.FeatureCollection("USDOS/LSIB\_SIMPLE/2017") .filter(ee.Filter.eq('country\_co', 'MX')); // México
var imp = require('users/InifapCenidRaspa/VICAL:Exportaciones');
var St = require('users/InifapCenidRaspa/VICAL:Style');
var anuario = ee.List(\[2010, 2011, 2012, 2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023\]);
var fechas = anuario.map(function(y) {
return ee.Date.fromYMD({
year: y,
month: 1,
day: 1
});
});
2. Importar las colecciones MODIS, y seleccionar la banda ET y unir Agregamos las dos colleciones de imagenes y lo unimos en uno solo para poder generar la serie de tiempo de cualquier punto que desemos
var collection_i = ee.ImageCollection("MODIS/061/MOD16A2")
.filterDate('2022-01-01', '2025-12-31')
.select('ET');
var collection_f = ee.ImageCollection('MODIS/006/MOD16A2')
.filterDate('2010-01-01', '2021-12-31')
.select('ET');
var collection2=collection_i.merge(collection_f).sort('system:time_start')
3. Suma anual de ET por cada año Aquí filtramos los datos de cada año, sumamos los valores de ET para obtener la ET anual acumulada por píxel y guardamos la propiedad year para poder filtrar después.
var compuestos = ee.ImageCollection.fromImages(anuario.map(function(y) {
var anual = collection2.filter(ee.Filter.calendarRange(y, y, 'year'));
return anual.sum()
.set('year', y)
.set('system:time_start', ee.Date.fromYMD(y, 1, 1).millis());
}));
4. Calcular la media histórica y convertir unidades
var etPromedioHistorico = compuestos.mean().multiply(0.1).clip(NA).float();
5. Filtrar años individuales para visualización Puedes visualizar años individuales seleccionando con el filtro por propiedad year.
var media2020 = ee.Image(compuestos.filter(ee.Filter.eq('year', 2020)).first());
6. Crear gráfico de serie de tiempo de ET Esto genera una gráfica para una región de interés (geometry) mostrando la ET anual a lo largo de los años. cabe recordar que los valores en la gráfica los debe afectar por 0.1 que es la escala a lo que esta la colección imagenes
var chart = ui.Chart.image.series({
imageCollection: compuestos.select('ET'),
region: geometry,
reducer: ee.Reducer.first(),
scale: 30
});
var options = {
title: 'Serie de tiempo de Evapotranspiración x 10',
hAxis: { title: 'fecha' },
vAxis: { title: 'ET (mm/año' },
series: {
0: { color: 'green' }
}
};
// Configure las opciones del gráfico e imprímalo.
chart = chart.setOptions(options);
print(chart);
7. Visualizar y exportar resultados
var paletaCl = {min: 100, max: 600, palette:St.ETO};
var panL = imp.Leyenda('ET (mm)', paletaCl);
//Mostrar en el mapa
Map.centerObject(NA)//centrar a la region
Map.addLayer(etPromedioHistorico, paletaCl, 'ET promedio 2010–2022');
Map.addLayer((media2020.multiply(0.1)).clip(NA), paletaCl, ' Suma_ET2020');
Map.add(panL);// leyenda
//Exportar Img
Export.image.toDrive({
image: etPromedioHistorico.select('ET'),
description: 'ET_promedio_historico_2010_2025',
folder: 'earthengine',
fileNamePrefix: 'ET',
scale: 500,
maxPixels: 1e10,
crs: 'EPSG:4326',
formatOptions: {
cloudOptimized: true
}
})
El codigo completo lo puedes encontrar aqui:
Puedes modificar el codigo o compartirlo, dejanos tus comentarios de que variable quiere y cual es el objetivo.
Subscribe to my newsletter
Read articles from SERGIO IVÁN JIMÉNEZ JIMÉNEZ directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
