# 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](https://www.gee.hidraulicafacil.com.mx/evapotranspiracion-con-datos-modis-desde-google-earth-engine)).

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](https://code.earthengine.google.com/4d4311419d3189b139c38bf7a29a8441):

Puedes modificar el codigo o compartirlo, dejanos tus comentarios de que variable quiere y cual es el objetivo.
