Copahue is an active volcano in the Andes on the Chile-Argentina border. It erupted in 2016 and a plume of smoke was visible in many Sentinel-2 images during that period. Looking at these pictures I thought it would be fun to use that plume as a giant anemometer to evaluate climate model data.

Sentinel-2 image of Copahue Volcano on 2016-11-07

I extracted the wind vector from ECMWF ERA5 climate reanalysis available at the hourly time step in Google Earth Engine. Since Sentinel-2 overpass time is approximately 14h30 UTC in that area, I queried only ERA5 data corresponding to the 14h time step.

// Copahue volcano crater
var pt = ee.Geometry.Point([-71.18,-37.86]);

// filter a year of ERA5 collection at 14:00 UTC
var uv = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY")
.filter(ee.Filter.calendarRange(14, null, 'hour'))

// Plot U,V 


I downloaded this figure as a table, then extracted the wind vector of a few dates corresponding to cloud-free Sentinel-2 images in 2016.



ERA5 wind vector at Copahue Volcano at 14h UTC and Sentinel-2 images

The wind vector matches the plume direction only on 22 Jan and 21 Sep… That is a score of 2/7, ECMWF you can do better!

Note from ECMWF

Care should be taken when comparing this variable with observations, because wind observations vary on small space and time scales and are affected by the local terrain, vegetation and buildings that are represented only on average in the ECMWF Integrated Forecasting System.

[1] a more elegant solution would be to draw the wind arrows in GEE directly but I felt that would led me to catch Mrs-Armitage-on-Wheels Syndrom)

2 thoughts on “Evaluating ERA5 wind direction with Copahue Volcano plume

  1. Dear Simon Gascoin,

    Thank you for this post.
    Could you share the EE code to « download this figure as a table »?

    Many thanks

    1. You just have to open the chart in a new tab by clicking on the icon in the upper right corner of the chart. Then select « Download CSV » from the menu.

      To avoid clicking (and also to export longer time series), you have to map the values extracted from the « uv » collection to a feature collection, which can be exported as a CSV table to your google drive. In this example I create a geometry containing the extraction point (« ee.Feature(pt) ») but it could be an empty geometry to save memory.. The most important is that the scale parameter in the reducer is lower than the ERA5 cell size to make sure that the extraction is done from the original product and not a resampled version at the upper pyramid level.. Here I use the fastest available reducer ee.Reducer.first().

      var bandName = ‘u_component_of_wind_10m’;

      var myFeatures = ee.FeatureCollection({
      var band =
      return ee.Feature(pt, {

      collection: myFeatures,
      description: bandName,
      folder: ‘GEE’,
      fileNamePrefix: bandName,
      fileFormat: ‘CSV’

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.