barograph-met
Wind (u, v) and temperature (t) at aircraft positions — time, latitude,
longitude and barometric altitude — from:
| Source | Class / function | Period | Vertical |
|---|---|---|---|
| ERA5, ARCO-ERA5 on Google Cloud | arco_model_levels() |
1940 → ~3 months ago | 137 model levels, actual surface pressure |
| ERA5, ARCO-ERA5 | arco_pressure_levels(levels=...) |
1940 → ~6 days ago | 37 pressure levels or a subset |
| Météo-France ARPEGE open data | ArpegeSource(resolution="01" \| "025") |
last ~14 days (+ forecast) | 24 / 34 pressure levels |
| ARPEGE, Open-Meteo archive | OpenMeteoSource("meteofrance_arpege_europe") |
from 2023-12-01 | 24 / 34 pressure levels |
| AROME, Open-Meteo archive | OpenMeteoSource("meteofrance_arome_france0025") |
from late December 2023 | 24 pressure levels |
| IFS, Open-Meteo archive | OpenMeteoSource("ecmwf_ifs025") |
from January 2024 | available pressure levels, 3-hourly |
| Compatible sources with the same fields and time step | SourceChain(a, b, ...) |
union | — |
from baro.met import Enricher, arco_model_levels
res = Enricher(arco_model_levels(), cache_dir="~/data/era5-cache").enrich(
time_utc, lat, lon, altitude_ft=baro_alt_ft
)
res["u"], res["v"], res["t"], res.flags, res.stats
Start with the tutorial, or jump to a how-to guide. The IFS guide explains its three-hour archive and forecast provenance, and AROME-PI/PIAF access shows how to keep Météo-France API keys in private files outside the repository.
For surface weather, SurfaceEnricher accepts time, latitude and longitude
without altitude. OpenMeteoSurfaceSource reads archived 10 m wind, gusts,
precipitation and 2 m temperature; AromeSurfaceSource retains the initialization
and lead time of an explicit AROME forecast run. Stitched archives do not
retain that provenance. Period totals and maxima keep their native intervals
rather than being linearly interpolated in time.
Installation
Requires Python 3.12+ on a POSIX system (Linux or macOS). The shared disk cache uses POSIX file locks; native Windows is not supported.
With uv, in an activated virtual environment:
uv pip install barograph-met
uv pip install 'barograph-met[grib,pandas,openmeteo]' # optional GRIB, DataFrames and archives
Or with pip:
For a uv-managed project, use uv add barograph-met and select extras as needed.
The tutorial includes environment setup and a
complete first-flight example.
SourceChain requires identical output fields, matching time steps and distinct
source IDs. In particular, hourly ERA5/ARPEGE sources cannot be chained with
the three-hourly IFS archive.
Why another tool
FastMeteo pioneered lightweight
ERA5/ARPEGE enrichment of ADS-B trajectories, and this package builds on it.
The ARCO-ERA5 stores keep a global field in every chunk, so tools that read
whole chunks transfer the whole globe for any flight. barograph-met reads
only the compressed blocks covering the needed levels and latitude band,
interpolates on ERA5's native model levels with each column's surface
pressure, and never extrapolates silently. See the
benchmarks.
Fixes found while comparing the two tools (Météo-France's new ARPEGE host, longitudes around Greenwich) were contributed to FastMeteo (open-aviation/fastmeteo#5), and this engine is intended to become available to FastMeteo as an optional backend.
Data sources and licences
barograph-met redistributes no data: it reads the providers' public stores on your behalf, and what you download stays under their terms. Credit them in work that uses the values:
| Source | Licence and attribution |
|---|---|
| ERA5 (Copernicus Climate Change Service, ECMWF) | Copernicus licence: "Contains modified Copernicus Climate Change Service information [year]. Neither the European Commission nor ECMWF is responsible for any use that may be made of the Copernicus information or data it contains." Cite Hersbach et al. (2020), doi:10.1002/qj.3803. |
| ARCO-ERA5 (Google Research, Google Cloud public datasets) | Same ERA5 terms; cite Carver & Merose (2023), ARCO-ERA5. |
| Météo-France ARPEGE open data | Licence Ouverte / Open Licence 2.0 (Etalab): credit "Source: Météo-France". |
| Open-Meteo archive | CC BY 4.0: credit "Weather data by Open-Meteo.com" and the model's producer (Météo-France for ARPEGE). |
| OpenSky Network (benchmark flights only) | Cite Schäfer et al. (2014), Bringing up OpenSky, IPSN; see the OpenSky terms of use. |