Upper Air Weather Forecasts via API
Wind, temperature, humidity and clouds on 20 atmospheric levels
Open-Meteo Weather Forecast APIs now include forecasts on pressure levels for upper-air data!
This post explains, how to use weather forecasts on different atmospheric levels, what “pressure levels” are and why upper-air data is hard to handle.
You can now select weather variables from pressure levels with the API URL configurator. Just below the “Solar Radiation Variables” a new submenu hides all variables on pressure levels.
7 different variables for temperature, humidity, wind, cloud cover and geopotential are available. Although you could select all of them at once, the amount of data is a lot to handle.
Selecting all pressure levels for temperature yields the first graph shown above. Temperatures at those altitudes range from 20°C (68°F) at surface to -60°C (-76°F) at 22 km altitude.
Pressure levels
Pressure levels are commonly used in meteorology. They simplify many calculations and early weather models used them to work with differential equations more easily.
Large scale weather patterns happen in the upper atmospheric levels. High and low pressure systems or jet streams dominate weather for the next days. Numerical weather models calculate on 90 or even more altitude layers.
Pressure levels assume a fixed height for a given pressure level. E.g. 500 hPa (hecto pascal). Depending on high and low pressure systems and gravity, the actual altitude for 500 hPa can vary between 5,400 meter (blue) to 5,800 meter (orange) as seen below. On average it is around 5600 meter.
The API configurator shows an approximated height for each pressure level. High pressure levels are closer to surface and low pressure levels are at higher altitudes:
1013.25 hPa standard pressure at mean sea level
1000 hPa ~110 m above mean sea level (asl)
850 hPa ~1.5 km asl
700 hPa ~3km asl
500 hPa ~5.6 km asl
100 hPa ~15.8 km asl
To get the correct altitude for each pressure level, the API variable “geopotential height“ can be used. The graph below shows geopotential height at 500 hPa for one week in Berlin, Germany.
Altitude above ground and mean sea level
An important distinction is how altitude is defined. Geopotential height is given as altitude above mean sea level. Not altitude above ground.
Many places are at 500 meter above sea level or higher. For Zermatt in the Swiss Alps at 1600 meter above sea level, all pressure levels below 850 hPa (~ 1.5 km) are literally below the surface.
The 1000 hPa pressure level is approximately at 110 meter above sea level. With Zermatt at 1600 meter, this level would be 1500 meter below surface.
In the chart below are temperatures for Zermatt at 2 meters above ground and pressure levels 900-1000 hPa. Typically, temperatures get colder with higher pressure levels. In this case, pressure level temperatures are warmer than temperature at 2 meter.
In the worst case, the 1000 hPa pressure level is misinterpreted as “110 m meter above ground” and shows significantly too high temperatures for Zermatt.
If the distinction between “above sea level” and “above ground level” is not made, results are “undefined”. It is recommended to discard data from pressure levels if the geopotential height is lower then ground level.
Take away: Do not mistake geopotential height with altitudes above ground.
Examples for pressure level data
A use for pressure levels is the estimate of thunderstorm potential using K-index defined as
With temperature (T) and dew-point (Td) on pressure levels 500, 700 and 850 hPa. The higher the K-Index, the higher the atmospheric instability and more likely are thunderstorms.
With cloud cover at different pressure levels, a meteogram can be created with more detailed information about clouds in the atmosphere. This helps pilots to see at which height clouds are.
Wind speed and direction at pressure levels help balloonists to estimate their travel speed and direction. This allows accurate forecasts for the entire flight trajectory and can warn for wind sheer effects.
I am looking forward to see new data visualisations with pressure level data. Hopefully, easy access will encourage more people to show more detailed weather forecasts.
Data sources
The primary source for Open-Meteo Weather Forecast APIs are pressure level data from the German Weather Service DWD ICON weather models. 3 different models are combined:
11 km global weather model
7 km European weather model
2 km Central Europe weather model
In the near future, these models will be accompanied with data from NOAA GFS and MeteoFrance AROME. With NOAA GFS, even 28 pressure levels will become available. Afterwards Open-Meteo APIs will automatically select and combine the best weather model for different regions.
With pressure level data, the amount of data to process increased by factor 3.5! Previously, only surface level fields were used.
38 fields on surface level
95 fields on pressure level (5 variables times 19 levels)
133 fields total
It took more than 3 weeks to optimise downloading, processing and compression to accommodate all data.
In the case of GFS NOAA more than 1 TB of data will be downloaded and processed every day (compressed GRIB files, not theoretically “uncompressed“ data). For DWD ICON models, roughly 600 GB are downloaded and processed.
The largest challenge was to update in time (and running out of memory…). The global weather models update every 6 hours. Initial processing took 8 hours. For good quality weather forecasts, data should be available as soon as possible.
After many late-night coding sessions, processing time is down to 30 minutes after the last forecast time-step has been published. Pressure levels are slightly delayed, but arrive 1 hours after model finish.
The high-resolution European models update every 3 hours. For North-America the GFS HRRR model updates every hour.
A blog post with more detailed information about weather model updates and how the processing chain works will follow!
Outlook
In the next weeks NOAA GFS and MeteoFrance AROME will be published. Both include pressure level data.
With more and more weather models, Open-Meteo APIs can select the best weather model for each region and compare multiple official sources.
If you have any ideas on how to visualise weather data on pressure levels, comments or found some bugs, leave a comment here or on GitHub and don’t forget to star the repository ;-).