earthkit-data-meteoswiss-opendata provides earthkit-data source plugins for accessing MeteoSwiss numerical weather prediction data through the MeteoSwiss Open Data STAC API.
Install the released package with pip:
$ pip install earthkit-data-meteoswiss-opendataWith Poetry:
$ poetry add earthkit-data-meteoswiss-opendataInstalling the package also installs earthkit-data and automatically
registers the meteoswiss-opendata and
meteoswiss-opendata-constants source plugins. No additional plugin
configuration is required.
Load the latest deterministic ICON-CH2-EPS forecast +0h, +1h & +2h for total precipitation:
import datetime as dt
import earthkit.data as ekd
forecast = ekd.from_source(
"meteoswiss-opendata",
collection="ogd-forecasting-icon-ch2",
variable="TOT_PREC",
perturbed=False,
ref_time="latest",
lead_time=[
dt.timedelta(hours=0),
dt.timedelta(hours=1),
dt.timedelta(hours=2),
],
)
dataset = forecast.to_xarray(time_dims=["forecast_reference_time", "step"], squeeze=False)
print(dataset)For ref_time="latest", the plugin selects the newest forecast run that
contains all requested lead times.
An exact reference time can be provided as a timezone-aware
datetime.datetime:
forecast = ekd.from_source(
"meteoswiss-opendata",
collection="ogd-forecasting-icon-ch2",
variable="TOT_PREC",
perturbed=False,
ref_time=dt.datetime(
2026,
7,
20,
6,
tzinfo=dt.timezone.utc,
),
lead_time=dt.timedelta(hours=1),
)ISO 8601 strings such as "2026-07-20T06:00:00Z" and "PT1H" are also
accepted.
collection- MeteoSwiss Open Data collection, for example
ogd-forecasting-icon-ch2. variable- Forecast variable name, for example
TOT_PREC. perturbedFalsefor deterministic data orTruefor perturbed data.ref_time"latest", a timezone-awaredatetime.datetime, an ISO 8601 datetime string, or an ISO 8601 datetime interval.lead_time- A
datetime.timedelta, an ISO 8601 duration string, or a list of either. Examples includedatetime.timedelta(hours=1),"PT1H", and["PT0H", "PT1H", "PT2H"].
Load the horizontal or vertical constants associated with a model collection:
horizontal = ekd.from_source(
"meteoswiss-opendata-constants",
collection="ogd-forecasting-icon-ch2",
asset="horizontal",
)
vertical = ekd.from_source(
"meteoswiss-opendata-constants",
collection="ogd-forecasting-icon-ch2",
asset="vertical",
)The asset parameter accepts "horizontal" or "vertical". The
returned data can be handled with the standard earthkit methods e.g. to_xarray() or to_target(), for example:
horizontal.to_target(
"file",
"horizontal_constants_icon-ch2-eps.grib2",
)- Plugin documentation
- earthkit-data documentation
- earthkit source plugin documentation
- MeteoSwiss Open Data documentation
- MeteoSwiss numerical weather prediction data
- MeteoSwiss constant parameters example
- MeteoSwiss Open Data NWP example notebooks
The available collection assets can be inspected in the STAC Browser:
$ cd earthkit-data-meteoswiss-opendata
$ poetry installRun the offline unit tests:
$ poetry run pytestRun the optional live integration test:
$ RUN_INTEGRATION=1 poetry run pytest -m integration$ poetry run pylint earthkit_data_meteoswiss_opendata
$ poetry run mypy earthkit_data_meteoswiss_opendata
$ poetry run ruff format --check
$ poetry run ruff check$ poetry run sphinx-build doc doc/_buildThen open doc/_build/index.html.
$ poetry buildThe project follows the GitOps concept: releases are triggered whenever a Git tag is created.
The tag must follow Semantic Versioning and PEP 440. Otherwise, the release task will fail.
Follow these steps to create a release:
- Update
CHANGELOG.rstwith the release information. - Update
doc/_static/switcher_config.jsonwith the new documentation URL. - Create a new release and matching tag in the GitHub project.