Improving weather forecasts with elevation models
90 meter satellite-based Digital Elevation Model (DEM)
Weather models calculate forecasts for large areas, but getting data for even just one location is more complicated than you might expect.
Detailed terrain data is an important input for every weather model. Elevation, vegetation types or surface reflectivity influence weather. Because of the enormous computational power required to solve all numerical equations, weather models run at a lower resolution, e.g. 11 kilometers, to calculate global forecasts.
Especially in mountainous terrain, this can worsen forecast quality. Consider Zermatt in Swiss Alps. At 1’603 meter above sea level, it is surrounded by 4’000 meter peaks. With a 9 kilometers alpine tour and a short night sleep in a mountain hut, you can reach Matterhorn at 4’478 meter above sea level.
For a low resolution weather model, the forecast for Zermatt and Matterhorn is the same. You will have a bad surprise when you show up in shorts and t-shirt for alpine hikes, as weather upper in the mountain could be much colder and more windy than in the valley.
One grid-cell of a low resolution weather model covers 11 by 11 kilometer and is averaging the elevation inside this box. At Zermatt the low resolution model’s elevation is 3’015 meter above sea level. This is a 1’412 meters difference to Zermatt! With a typical temperature gradient, the temperature forecast will differ by 9.8°C (1412 m * 0.7°C / 100 m).
Higher-resolution models with 2 kilometer resolution, should do a better job. The 2 kilometer high-resolution model that is used by Open-Meteo, has an elevation at Zermatt of 2026 meter above sea level (only 423 meter difference).
Although the high resolution model is close to the 1’603 meter elevation of Zermatt, it can still be improved. The grid-cell with 2’026 meter elevation is the closest, but the second closest grid-cell matches the altitude even better, with 1’878 meter (275 meter difference).
The nearest grid-cell is not always the providing the best information for a particular location. To achieve slightly better forecast accuracy, the terrain needs to be evaluated before weather data for one point is used. Often using the second or third closest grid-cell works well.
To make the situation even more complicated, high resolution weather models only offer 2 days forecast. After 2 days, a medium 7 kilometer model is used until 5 days and a low resolution 11 km model for up to 7 days. For each model, the terrain needs to be analysed to find an adequate grid-cell.
Although this example is rather rare, the same principle applies to other locations as well.
Digital Elevation Models (DEM)
To automate grid-cell selection and improve weather forecasts, first we need to know the exact surface elevation of locations.
In Open-Meteo APIs you can supply this information as an optional parameter (&elevation=1603), or let the API automatically use a Digital Elevation Model (DEM).
DEMs are based on satellite and airplane measurements of the elevation, recorded for every point on earth with less than 4 meters error. The European Copernicus program offers different spatial resolution DEMs with 10, 30 and 90 meters resolution.
At Open-Meteo only a 90 meter resolution model is in use. For improving weather models output, this is more than enough.
Adapted weather forecast
With more detailed elevation data, temperatures can be adjusted accordingly. With increasing altitude, temperature decreases. This rate is roughly 0.7°C per 100 meters.
To adapt temperature forecast for Zermatt, the elevation difference between the town at 1’609 meters and the optimal grid-cell at 1’878 meters must be multiplied with 0.7°per 100 meter. The result: 1.9° temperature correction. The optimal grid-cell shows a raw forecast of 23.1°C. With temperature gradient correction: 25°C.
The uncorrected forecast for the closest grid-cell to Zermatt is 20.6°C instead of 25°C. A quick check with measurement stations confirms: 25.2°C. Selecting the optimal grid-cell and applying the temperature gradient correction works!
Corrections like temperature altitude or merging multiple weather models are automatically applied to all Open-Meteo forecast APIs as well as Historical Weather APIs.
Elevation API
Terrain information is interesting for many other use cases. Although, it is relatively simple to work with Digital Elevation Models as they are only a couple of gigabytes of data, sometimes you just need the elevation for just a few points.
There is now a simple Elevation API that you can use for free for non-commercial use.
You can even fetch multiple coordinates at once. A list of GPS points from a bike ride, can be annotated with elevation to get the elevation profile. Or calculate the height above ground of a paragliding track.
With 90 meters resolution, most cases should be covered. If you are interested in working with 30 meters resolution DEM data, the Copernicus DEM on AWS managed by Sinergise is a good source.
There are plenty of new features coming up in Open-Meteo. Stay up to date with the Open-Meteo newsletter:
Great article! Does this also apply to other variables like wind speed or wind direction, where there's no such a simple gradient with height? I guess it's better to take the nearest grid cell for these to get the most accurate values?