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.

gee

Earth Engine ECMWF/ERA5* and ECMWF/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).

search

Inventory of the selected route: one row per variable.

load

Load ERA5 / ERA5-Land as a lazy xarray.Dataset (time, latitude, longitude).

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).

search

What the archive holds: one row per (period, scenario, resolution) raster.

load

Load the Köppen-Geiger classes as a categorical xarray.DataArray.