Mask Gridded Data with Geometry Data

This notebook demonstrates how to mask ERA5 temperature data using a vector geometry file (e.g., a country or region boundary) using earthkit-data and earthkit-transforms. Masking allows you to focus analysis on a particular region of interest.

[1]:
from earthkit import data as ekd
from earthkit import transforms as ekt
from earthkit.transforms._tools import earthkit_remote_test_data_file

remote_era5_file = earthkit_remote_test_data_file("era5-Europe-sfc-2m-temperature-3deg-2015-2017.grib")
era5_data = ekd.from_source("url", remote_era5_file)
ds = era5_data.to_xarray()

remote_geometry_url = earthkit_remote_test_data_file("NUTS_RG_60M_2021_4326_LEVL_0.geojson")
geometry_data = ekd.from_source("url", remote_geometry_url).to_geopandas()

# Mask ERA5 data with geometry
masked = ekt.spatial.mask(ds, geometry_data)

masked

[1]:
<xarray.Dataset> Size: 715MB
Dimensions:                  (index: 37, forecast_reference_time: 4384,
                              latitude: 19, longitude: 29)
Coordinates:
  * index                    (index) int64 296B 0 1 2 3 4 5 ... 32 33 34 35 36
  * forecast_reference_time  (forecast_reference_time) datetime64[us] 35kB 20...
  * latitude                 (latitude) float64 152B 79.0 76.0 ... 28.0 25.0
  * longitude                (longitude) float64 232B -25.0 -22.0 ... 56.0 59.0
Data variables:
    2t                       (index, forecast_reference_time, latitude, longitude) float64 715MB dask.array<chunksize=(1, 4384, 19, 29), meta=np.ndarray>
Attributes:
    Conventions:  CF-1.8
    institution:  ECMWF
[ ]: