Skip to content

ARPEGE, live and archive

Météo-France publishes ARPEGE as open data for about 14 days; older runs are available from Open-Meteo's archive (stitched from the most recent run at each hour, values stored as scaled integers: we measured 0.035 m/s and 0.08 K RMS against the official files).

Live open data

from baro.met import ArpegeSource, Enricher

src = ArpegeSource(resolution="01", index_dir="~/data/grib-index")   # 0.1°, Europe
res = Enricher(src).enrich(time_utc, lat, lon, altitude_ft=alt_ft)
  • resolution="025" is the global 0.25° grid.
  • run="latest" (default) takes the most recent published run (00/06/12/18 UTC) not after each interval, falling back to older runs; run="daily" uses the 00 UTC run of the day (FastMeteo's behaviour); a date fixes the run.
  • Files are GRIB2 without an inventory: an index of message offsets is built once per file (a few seconds) and cached in index_dir. Only the messages of the needed variables, levels and steps are then downloaded.
  • Decoding needs ecCodes: pip install 'barograph-met[grib]'.

Archive (from December 2023)

from baro.met import OpenMeteoSource

with OpenMeteoSource("meteofrance_arpege_europe") as archive:   # 0.1°, from 2023-12-01
    res = Enricher(archive).enrich(time_utc, lat, lon, altitude_ft=alt_ft)

"meteofrance_arpege_world025" is the global grid (from 2023-12-22). Needs pip install 'barograph-met[openmeteo]'.

Both, with a seamless hand-over

from baro.met import SourceChain

arpege = SourceChain(ArpegeSource(resolution="01"), OpenMeteoSource("meteofrance_arpege_europe"))

For each time interval the first source that serves it is used; both cubes bracketing a point always come from the same source. On a flight covered by both, the two differ by 0.035 m/s (wind) and 0.08 K (temperature) RMS — the archive's quantisation. Points before the archive starts are flagged OUT_OF_COVERAGE and reported in a warning.