Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

earth and related environmental sciences

Heatwave in Netherlands

Learn how to read, process and use Sentinel-3 Land Surface Temperature

Authors
Affiliations
Eurac Research
Eurac Research
ESA EOPF Zarr Logo

🚀 Launch in JupyterHub

Run this notebook interactively with all dependencies pre-installed

Preface

The original notebook used as a starting point for this work is a Copernicus Data Space Ecosystem example, available here.
The example has been adapted to use the data provided by the EOPF Sentinel Zarr Samples project instead of the openEO API.

Introduction

As an impact of global warming, an increase in temperature has been reported, which can lead to potential health risks and environmental stress. Several research studies have been presented over the years, such as in this paper, where they explain the change in Land surface temperature over several regions.

Thus, in this notebook, we want to showcase a tool for mapping heatwaves using Sentinel-3 products. For this, we focused on the Netherlands and used specific conditions proposed by the “National Heatwave Plan” in the Netherlands. The condition implies:

5 days >25 and 3 days >30

Moreover, in De Bilt, a municipality in the province of Utrecht had a temperature of 25°C at least five days in a row, with at least three days hotter than 30 °C.

This notebook demonstrates how to analyze and visualize heatwave events in the Netherlands using Sentinel-3 Land Surface Temperature (LST) data in Zarr format. Leveraging the EOPF (Earth Observation Processing Framework) and Jupyter Notebook template, you will learn how to efficiently access, process, and interpret large volumes of satellite data from cloud object storage.

The workflow will guide you through:

  • Accessing and filtering Sentinel-3 LST datasets for a specific time range and area of interest (AOI)

  • Grouping and reading Zarr data in parallel using Dask for scalable analysis

  • Merging measurement and quality datasets to enable robust computation

  • Preparing data for downstream tasks such as heatwave detection, cloud masking, and visualization

By the end of this notebook, you will gain practical skills for working with cloud-based geospatial time series using Python, and a deeper understanding of environmental monitoring with open satellite data.

Setup

In this section, we prepare our environment by ensuring the necessary libraries are available. Although most libraries are already imported in previous cells, this step outlines the essential packages used for data handling, visualization, and geospatial analysis.

Import Required Libraries

ERROR 1: PROJ: proj_create_from_database: Open of /home/mclaus@eurac.edu/micromamba/envs/eopf-zarr3/share/proj failed
<xarray.core.options.set_options at 0x7ff4c987f8d0>

Dask Cluster Initialization

This creates a local Dask cluster and retrieves its client for distributed parallel processing.

/home/mclaus@eurac.edu/micromamba/envs/eopf-zarr3/lib/python3.11/site-packages/distributed/node.py:187: UserWarning: Port 8787 is already in use.
Perhaps you already have a cluster running?
Hosting the HTTP server on port 36907 instead
  warnings.warn(
Loading...

Read AOI and set temporal extent

The area of interest covers The Netherlands and the temporal range covers the summer period of 2023.

Visualize Area of Interest

Loading...

Calculate the extent of geojson

Extent of the geojson: [ 3.349415 50.74755   7.198506 53.558092]

Data Access

We now want to access a time series of Sentinel-3 data to compute the daily heatwave values, remove cloudy pixels, and perform other processing steps.

List of Available Remote Files

Found 813 datasets between 2023-06-06 and 2023-09-30

Sentinel-3 Preprocessing

Subsetting, cloud masking and regridding Sentinel-3 Land Surface Temperature (LST) data.

Data Loading

Please note: the regridding operation requires to load the data (i.e. downloading it) and it will take up to 5 minutes for all the selected scenes.

Loading...

Group the data by day to merge multiple Sentinel-3 slices and take the maximum temperature for each day.
We can now visualize some of the regridded and grouped Sentinel-3 Land Surface Temperature data.
Please note that the unit of the Land Surface Temperature (LST) layer is Kelvin (0 K = -273.15 °C).

<xarray.plot.facetgrid.FacetGrid at 0x7f75fd890890>
<Figure size 1000x600 with 7 Axes>

Heatwave Algorithm

Analyze monthly heatwave events across the Netherlands in 2023 and a visualise the results

Since the previous definition of heatwave defines it with temperature values in degrees, we have to convert them firstly to Kelvin:

25°C=298,15K25 °C = 298,15 K

30°C=303,15K30 °C = 303,15 K

We are now ready to check if we had:

  1. At least five days in a row with a temperature of 25 °C or higher

  2. Three out of five days with a temperature of 30 °C or higher

Loading...

Interactive Visualization

Using Folium, we can easily create an interactive map with a background that allows us to easily spot areas affected by heatwaves.

Loading...

Static Visualization

Using cartopy, we can create a static plot.

<Figure size 640x480 with 2 Axes>