-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Challenge 14 - GPU-accelerated interactive visualization of atmospheric composition forecasts
Stream 1 - Data Visualization for Earth Sciences Applications
Goal
Develop a single-page web application to display a map of global atmospheric composition forecast data. The map should use client-side GPU rendering (WebGL) for maximum performance and interactivity.
Mentors
Sebastian Steinig, Miha Razinger (all ECMWF)
Skills Required
- Frontend web development in JavaScript (React) is essential
- Experience or interest in WebGL data visualization is desirable
- Experience or interest in processing geospatial data (Python/xarray, Zarr) is desirable
Description
The Copernicus Atmospheric Monitoring Service (CAMS) provides daily global atmospheric composition forecasts of pollutants, aerosols and greenhouse gases. CAMS products are widely disseminated to the public through web applications and ECMWF's own web maps, providing quality-controlled information on air pollution and health to users worldwide. However, changes in composition and associated potential health impacts are often local or regional events. The current static web maps with limited user customisation can therefore make it difficult to effectively communicate these events to the public.
The aim of this project is to explore the possibility of creating CAMS visualisations directly in the browser, allowing users to interact with the underlying data and modify the visualisation in real time to suit their needs. Rather than fetching pre-generated maps from a server, the new application should download the underlying raster data itself for subsequent client-side rendering of the visualisation. Modern web APIs such as WebGL allow GPU-accelerated processing and mapping of the raw data to create responsive and engaging 2D and 3D map visualisations of global datasets see examples. We would like to test this exciting possibility by creating a single-page web application that gives users interactive and intuitive access to CAMS forecast data for any location in the world.
The necessary work in this project can be split into two parts:
-
Data preparation: First, the forecast data needs to be converted into a format which can be served to the browser and the WebGL API. Forecast data can be programmatically retrieved from the Atmosphere Data Store in GRIB or netCDF format. This input data should be converted to a cloud optimized format (e.g. Zarr or GeoTIFF/COG) to allow efficient access and streaming of data subsets via the browser. Complete workflows on how to convert GRIB data to Zarr stores are available from Google and CarbonPlan. Depending on your interests you could either implement a workflow for a single format, compare performance of different solutions or directly start with existing CAMS Zarr example data which can be provided by the mentors.
-
Data visualisation: We anticipate that most of the project time will be spent on developing the frontend visualisation, which should use the JavaScript React library. We can provide a React app template and component library to simplify development and to allow future reusability of the new WebGL map component within the ECMWF app ecosystem. As a minimum, the map should be able to display global fields of several CAMS forecast variables (e.g. air pollution, dust or greenhouse gases) with a time slider to select different forecast time steps. The user should be able to pan and zoom freely within the map and click on any point to get a time series of forecast values for that location.
The main challenge will be to pass the forecast data to the GPU and render it efficiently. The amount and complexity of any WebGL development work within this project can be tailored to the interests and expertise of the applicants. As a start, an existing open-source library to render interactive maps directly from a Zarr dataset could be adapted to fetch and display the CAMS data, therefore providing a possibility to start learning about client-side GPU rendering. A probably more challenging solution could be to develop a custom raster layer on top of the widely used deck.gl library (see links for more information and example code for this approach).
Please remember that the selection process will not simply be based on the complexity of the proposal, but rather on the feasibility of deliverables given the previous experience of applicants. Support and advice from the mentors for learning or experimenting with any new technologies will be available throughout the project.

Figure 1: Example of WebGL-based interactive visualisation of 10m winds. Source: https://weatherlayers.com/
Evaluation Criteria
- Feasibility
- Innovative approach
- Transferability
- Matching requirements