Skip to main content

Earthkit-data plugin for accessing NWP MeteoSwiss Open Data.

Project description

https://img.shields.io/pypi/v/earthkit-data-meteoswiss-opendata.svg https://img.shields.io/pypi/pyversions/earthkit-data-meteoswiss-opendata.svg https://img.shields.io/pypi/l/earthkit-data-meteoswiss-opendata.svg https://github.com/MeteoSwiss/earthkit-data-meteoswiss-opendata/actions/workflows/github-code-scanning/codeql/badge.svg https://github.com/MeteoSwiss/earthkit-data-meteoswiss-opendata/actions/workflows/CI_test.yaml/badge.svg https://github.com/MeteoSwiss/earthkit-data-meteoswiss-opendata/actions/workflows/CI_publish_dev_documentation.yaml/badge.svg

Getting Started

earthkit-data-meteoswiss-opendata is an earthkit-data source plugin for accessing MeteoSwiss numerical weather prediction data through the MeteoSwiss Open Data STAC API.

Installation

Install the released package with pip:

$ pip install earthkit-data-meteoswiss-opendata

With Poetry:

$ poetry add earthkit-data-meteoswiss-opendata

Installing the package also installs earthkit-data and automatically registers the meteoswiss-opendata source plugin. No additional plugin configuration is required.

Using the Library

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(profile="grib")
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.

Parameters

collection

MeteoSwiss Open Data collection, for example ogd-forecasting-icon-ch2.

variable

Forecast variable name, for example TOT_PREC.

perturbed

False for deterministic data or True for perturbed data.

ref_time

"latest", a timezone-aware datetime.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 include datetime.timedelta(hours=1), "PT1H", and ["PT0H", "PT1H", "PT2H"].

Development Setup with Poetry

Building the Project

$ cd earthkit-data-meteoswiss-opendata
$ poetry install

Run Tests

Run the offline unit tests:

$ poetry run pytest

Run the optional live integration test:

$ RUN_INTEGRATION=1 poetry run pytest -m integration

Run Quality Tools

$ poetry run pylint earthkit_data_meteoswiss_opendata
$ poetry run mypy earthkit_data_meteoswiss_opendata
$ poetry run ruff format --check
$ poetry run ruff check

Generate Documentation

$ poetry run sphinx-build doc doc/_build

Then open doc/_build/index.html.

Build Wheels

$ poetry build

Release the Project

The 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.rst with the release information.

  • Update doc/_static/switcher_config.json with the new documentation URL.

  • Create a new release and matching tag in the GitHub project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

earthkit_data_meteoswiss_opendata-0.1.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file earthkit_data_meteoswiss_opendata-0.1.0.tar.gz.

File metadata

File hashes

Hashes for earthkit_data_meteoswiss_opendata-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b6339f7be13a2b96960f4df45216287cd8d4fda2fdd99c735919a5678e66a01a
MD5 f8e30c00927e7339bc22ad163d11afec
BLAKE2b-256 abdbeb260383ec1adae9a48d5a853e898f0d182659d1f5e4c5f60ae0f4fc4be8

See more details on using hashes here.

Provenance

The following attestation bundles were made for earthkit_data_meteoswiss_opendata-0.1.0.tar.gz:

Publisher: CI_publish.yaml on MeteoSwiss/earthkit-data-meteoswiss-opendata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file earthkit_data_meteoswiss_opendata-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for earthkit_data_meteoswiss_opendata-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c636fbde6998ba040246aa7d337b47a91e6d423949e7dd1ab2d81877ce8630f6
MD5 3eb812db2ed2dbf439a78b2b151f6d7b
BLAKE2b-256 337d0d010478988a1eafd825af8cb351d847585a3b9b84526260e89107cff01e

See more details on using hashes here.

Provenance

The following attestation bundles were made for earthkit_data_meteoswiss_opendata-0.1.0-py3-none-any.whl:

Publisher: CI_publish.yaml on MeteoSwiss/earthkit-data-meteoswiss-opendata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page