Numerical weather forecasting model ICON-CH1/2-EPS
MeteoSwiss uses two models, ICON-CH1-EPS and ICON-CH2-EPS, to forecast the atmospheric state in Switzerland and its surroundings over a longer period than nowcasting, providing predictions for up to five days. Both models include ensemble data assimilation, where multiple simulations with slightly perturbed initial conditions help account for forecast uncertainty. Forecasts can include the full ensemble or just the unperturbed control run.
The documentation covers the following topics:
- Getting started quickly
- Available data
- Download options
- Data structure
- Working with the forecast data
- FAQ/Troubleshooting
- Upcoming changes and changelog
Getting started quickly
Example notebooks: From retrieval to visualization
To get started quickly, explore the Jupyter notebooks, which provide hands-on examples for retrieving, processing, and visualizing numerical weather prediction (NWP) model data from MeteoSwiss.
Available data
24h availability window
Data made available through this interface is accessible for 24 hours only after its publication. After this window, it is no longer available for retrieval.
If your request returns an empty response or you encounter a 403 error, it likely means the data you're trying to access is older than 24 hours.
Models' specifications
| Attributes | ICON-CH1-EPS | ICON-CH2-EPS |
|---|---|---|
| Collection | ch.meteoschweiz.ogd-forecasting-icon-ch1 | ch.meteoschweiz.ogd-forecasting-icon-ch2 |
| Horizontal Grid Size | approx. 1 km | approx. 2.1 km |
| Ensemble Members | 11 | 21 |
| Forecast Period | 33 h | 120 h |
| Grid | Native icosahedral | Native icosahedral |
| Temporal Output Resolution | 1 h | 1 h |
| New Model Run (Initialization) | every 3 h | every 6 h |
| Output Data Format | GRIB edition 2 | GRIB edition 2 |
Available parameters
Each collection contains two parameter types: variable parameters and static parameters. Variable parameters describe time-dependent forecast quantities such as air pressure and temperature. Static parameters describe the model grid and surface characteristics for a given model run. For details about the static assets, see Model grid and static data.
Parameter overview
Moreover, each collection includes a downloadable CSV file with a continuously updated list of all available parameters. The file includes metadata such as:
- long name
- standard unit
- level type (single or multi level)
- vertical coordinate type
- temporal horizon
- aggregation type
- start time.
To access this file, open the collection page and download in the Asset section the file labeled “Overview of Parameters”. Available collections are:
Pollen data
The ICON-CH2-EPS control forecast also includes pollen concentrations. The pollen data is available exclusively
on the lowest full model level (model_level=80) representing the mean value
over approximately the first 20 m above ground. As pollen emission is a seasonal process,
each pollen type is only generated and present in the dataset during its
respective active flowering period, summarized in the table below.
| Pollen type | Variable | Season window* | Day of year |
|---|---|---|---|
| alder | ALNUsnc | Jan 8 – Mar 31 | 8 – 90 |
| ragweed | AMBRsnc | Jul 9 – Sep 30 | 190 – 273 |
| birch | BETUsnc | Mar 18 – May 25 | 77 – 145 |
| hazel | CORYsnc | Jan 8 – Mar 17 | 8 – 76 |
| grasses | POACsnc | Apr 1 – Aug 31 | 91 – 243 |
* For non-leap years; otherwise the day of year is used as the reference.
If a specific pollen variable cannot be found, it is likely that the corresponding pollen type is not currently in season. To verify which pollen parameters are currently available, please consult the parameter overview file mentioned above.
The same pollen variables are also available in the KENDA-CH1 analysis dataset. The KENDA-CH1 runs, initialized hourly, represent the best estimate of the pollen state at a past point in time.
For a practical example, see the Jupyter notebook, which demonstrates how to retrieve, convert and visualize pollen data.
Download options
- Using the Python API
- Using the REST API (HTTP POST)
- Manual download via STAC Browser
We recommend using MeteoSwiss's meteodata-lab library - a convenient tool to simplify accessing and working with numerical weather model data. The library supports downloading ICON-CH1/2-EPS GRIB2 data and loading it into xarray DataArray. It is particularly ideal for users who want a clean and easy way to integrate forecast data into Python workflows.
Users who prefer direct interaction with the REST API by issuing HTTP POST requests can retrieve datasets via the API endpoint. Following the step-by-step instructions in this section users can obtain forecast data for specific models, parameters, and other customizable variables.
Submitting a POST request
Filtering and querying forecast data must be done using a POST request. To retrieve a forecast, use a tool like curl and send the request to the API endpoint:
curl -X POST "https://data.geo.admin.ch/api/stac/v1/search" \
-H "Content-Type: application/json" \
-d '{
"collections": [
"ch.meteoschweiz.ogd-forecasting-icon-ch2"
],
"forecast:reference_datetime": "2025-03-12T12:00:00Z",
"forecast:variable": "TOT_PREC",
"forecast:perturbed": false,
"forecast:horizon": "P0DT00H00M00S"
}'
Each parameter in the request body serves the following purpose:
collections: Defines the forecast or analysis model to retrieve (ch.meteoschweiz.ogd-forecasting-icon-ch1for ICON-CH1-EPS,ch.meteoschweiz.ogd-forecasting-icon-ch2for ICON-CH2-EPS andch.meteoschweiz.ogd-analysis-kenda-ch1for KENDA-CH1).forecast:reference_datetime: Specifies the desired forecast initialization time (e.g.,2025-03-12T12:00:00Z).forecast:variable: Indicates the meteorological parameter of interest (TOT_PRECfor total precipitation, for example).forecast:perturbed: Boolean flag determining if the request is for deterministic (false) or ensemble (true) data.forecast:horizon: Defines the forecast lead time to retrieve in ISO 8601 duration format (P0DT00H00M00Sfor data at +0h lead time, i.e. initialization).
Downloading the forecast data
Upon a successful request, the response will contain a dictionary of metadata, including forecast file links under the assets key. Locate the href field containing the pre-signed URL.
Download the GRIB file containing the forecast data using the following command:
wget -O <desired_filename> "<pre-signed URL>"
After downloading your forecast data, it's good practice to verify its integrity before use.
Verifying the data integrity
To ensure that the downloaded file is not corrupted, compute its SHA-256 hash and verify it against the checksum provided in the file's header field.
Steps:
- Open a terminal and generate the SHA-256 checksum of the downloaded file:
sha256sum <downloaded_filename>
- Retrieve the checksum from the file’s header field
x-amz-meta-sha256using the following command:
curl -s -i "<pre-signed URL>" | awk -F': ' '/x-amz-meta-sha256/ {print $0}'
- Compare the two hash values. If they match, your forecast data file is safe to use.
Once the file is verified, you can proceed with reading the GRIB file, using e.g. the instructions in Decoding GRIB files with ecCodes.
Accessing static grid information: Height, longitude, latitude and surface properties
❗ NOTE: Forecast GRIB files do not contain information about height, longitude and latitude. To geolocate or interpret vertical levels, you must use the static vertical and horizontal grid parameter files provided in each collection. 💡 Tip for new users: We recommend inexperienced GRIB file users to take a look at the provided Jupyter Notebooks. The data retrieval with the Python API includes fetching longitude and latitude.
In addition to the forecast files, each collection contains a vertical constants file and a horizontal constants file. See Static grid and surface files for their contents.
Accessing horizontal constants
To retrieve the horizontal constants, follow the steps below:
- Submit a GET request specifying the collection you want to download the static horizontal files from (eg.
ch.meteoschweiz.ogd-forecasting-icon-ch1for ICON-CH1-EPS).
curl -X GET https://data.geo.admin.ch/api/stac/v1/collections/ch.meteoschweiz.ogd-forecasting-icon-ch1/assets
- Locate the
hreffield underassetsinid: horizontal_constants_icon-ch1-eps.grib2and copy the pre-signed URL. - Download the file with:
wget -O <desired_filename> "<pre-signed URL>"
Before using any constants from the static file, verify that its uuidOfHGrid (Universally Unique Identifier for the horizontal grid) GRIB key matches the one in your forecast data. This ensures the horizontal grid definitions are consistent across files.