Climate#
easysnowdata.climate#
Climate and reanalysis products: ERA5 / ERA5-Land and the Köppen-Geiger classification.
Each module exposes module-level search() / load() functions with a
source= argument (design contract §2.12) and registers its catalog entry
on import.
easysnowdata.climate.era5#
ERA5 and ERA5-Land reanalysis.
Sources (companion file §B.9):
arco-era5-gcs(default)Google’s ARCO-ERA5 Zarr store on GCS: hourly ERA5 at 0.25°, 1940 → ERA5T (about one week behind real time), anonymous access, 273 variables. Only hourly ERA5 lives here.
geeEarth Engine
ECMWF/ERA5*andECMWF/ERA5_LAND*collections: the ERA5-Land route and the daily / monthly aggregates. Needs Earth Engine credentials.
import easysnowdata as esd
t2m = esd.climate.era5.load(aoi, "2020-01", variables=["2m_temperature"])
land = esd.climate.era5.load(aoi, "2020-01", version="ERA5_LAND",
cadence="daily", variables=["temperature_2m"])
esd.climate.era5.search() # variable inventory
The ERA5 / ERA5T boundary of the ARCO store is exposed in the result attrs
(valid_time_stop is the last final-ERA5 day, valid_time_stop_era5t
the last preliminary day).
easysnowdata.climate.koppen_geiger#
Köppen-Geiger climate classification (Beck et al. 2023).
One source: the figshare archive of the 2023 paper, file 61012822 (the
January 2026 release; file 45057352 was the superseded v1). The archive holds
five historical periods and the 2041-2070 / 2071-2099 CMIP6 projections at
four resolutions, so this loader exposes period= and scenario=
alongside resolution=:
import easysnowdata as esd
kg = esd.climate.koppen_geiger.load(aoi) # 1991-2020, 0.1°
kg = esd.climate.koppen_geiger.load(aoi, period="2071_2099",
scenario="ssp245", resolution="1 km")
esd.climate.koppen_geiger.search() # what is in the archive
esd.plotting.categorical(kg) # CF flags → legend
The 30 classes are returned as the source uint8 values with CF
flag_values / flag_meanings / flag_colors; 0 is ocean and is kept
as the nodata sentinel (§2.5).