PlantMeteo helps plant-model workflows get from raw weather inputs to model-ready meteorological tables. It gives you one set of tools to download weather from coordinates and dates, standardize local files, inspect typed weather rows, aggregate to daily summaries, sample to model-specific time windows, and write cleaned weather back to disk.
From the Julia package REPL:
] add PlantMeteoThen load it with:
using PlantMeteoIf you do not already have cleaned station files, start with the API interface. PlantMeteo exposes get_weather and ships with an OpenMeteo backend so you can go from coordinates and dates to a usable weather table quickly:
using PlantMeteo, Dates
period = Date(2025, 7, 1):Day(1):Date(2025, 7, 3)
weather = get_weather(48.8566, 2.3522, period; api=OpenMeteo())
weather[1]Open-Meteo is a good default when you want broad geographic coverage, hourly variables, and minimal setup. PlantMeteo uses the Open-Meteo forecast endpoint for recent/future data and its historical archive endpoint for older periods, which makes it practical for both forward-looking runs and retrospective analyses. See the Open-Meteo guide for strengths, limits, and caveats.
If you already have station data, project weather files, or archived CSVs, use read_weather to map source-specific columns and units into PlantMeteo's canonical variables:
using PlantMeteo, Dates
file = joinpath(dirname(dirname(pathof(PlantMeteo))), "test", "data", "meteo.csv")
weather = read_weather(
file,
:temperature => :T,
:relativeHumidity => (x -> x ./ 100) => :Rh,
:wind => :Wind,
:atmosphereCO2_ppm => :Cₐ,
date_format = DateFormat("yyyy/mm/dd")
)- A typed weather table built on
TimeStepTable,Weather, andAtmosphere - API retrieval through
get_weather - Local file ingestion and export through
read_weatherandwrite_weather - One-row-per-day summaries with
to_daily - Model-aligned weather sampling with
prepare_weather_sampler,sample_weather, andmaterialize_weather