Skip to content

Repository files navigation

easysnowdata

PyPI conda-forge DOI CI

A Python package to easily retrieve data relevant to snow science.

easysnowdata unifies access to a wide range of snow-relevant geospatial datasets — weather stations, satellite imagery, snow products, climate reanalysis, DEMs and a hillshade, basins, and boundaries from countries and counties to mountain ranges and glacier outlines — under a consistent API that returns xarray objects (and GeoDataFrames for vector products). The emphasis is on minimising downloads and local computation by leveraging cloud-optimised data formats wherever possible.

Gallery

easysnowdata example gallery

One executed script per product — browse them, each with the code, the figure, and a downloadable notebook.

Data Source Status

Every route of every product is probed weekly. A failure opens an issue labelled data-source and a recovery closes it; latency and DMR++ readiness are on the status page.

What a probe cannot see — a reprocessed collection, a republished file, a new release (the next Census year, a new RGI version) — is caught by a weekly upstream watch that opens one digest issue labelled upstream-watch and closes the previous one, carrying its unticked to-dos forward.

Last updated: 2026-09-29 22:45 UTC
⚠️ = skipped (credentials not available in this run). Latency and virtualization probes are on the status page.

Stations (esd.stations)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
AWDB stations (NRCS REST API) ✅ ✅ ✅ ✅
CDEC stations (JSON data servlet) ✅ ✅ ✅ ✅
BC snow stations (DataBC WFS) ✅ ✅ ✅ ✅
NVE stations (HydAPI) ✅ ✅ ✅ ❌
Yukon stations (AquaCache API) ✅ ✅ ✅ ✅
Snow station Zarr archive (global_snow_networks) ✅ ✅ ✅ —
Snow station inventory (global_snow_networks) ✅ ✅ ✅ ✅
Snow station archive tarball (global_snow_networks) ✅ ✅ ✅ ✅
Snow station CSV (global_snow_networks) ✅ ✅ ✅ ✅

Snow (esd.snow)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
MODIS snow cover MOD10A1F (NASA NSIDC) ✅ ✅ ✅ ✅
MODIS snow cover MOD10A1 (Planetary Computer) ✅ ✅ ✅ ✅
Mountain snow mask (Zenodo) ✅ ✅ ✅ ✅
SNODAS (NSIDC G02158) ✅ ✅ ✅ ✅
SNODAS (GEE/Climate Engine) ✅ ✅ ✅ ✅
Sturm & Liston snow classification (NSIDC-0768) ✅ ✅ ✅ ✅
Sturm & Liston snow classification (Azure) ✅ ✅ ✅ ✅
UCLA Snow Reanalysis (NASA NSIDC) ✅ ✅ ❌ ✅
HMA Snow Reanalysis (NASA NSIDC) ✅ ✅ ❌ ✅
VIIRS snow cover VNP10A1F (NASA NSIDC) ✅ ✅ ✅ ✅

SAR (esd.sar)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
Sentinel-1 RTC (Planetary Computer) ✅ ✅ ✅ ✅
Sentinel-1 RTC OPERA (CMR-STAC ASF) ✅ ✅ ❌ ✅
Sentinel-1 RTC OPERA (Earth Engine) ✅ ✅ ✅ ✅
Sentinel-1 static layers (CMR-STAC ASF) ✅ ✅ ❌ ✅
Copernicus DEM for the incidence angle (Planetary Computer) ✅ ✅ ✅ ✅
Sentinel-1 GRD angle band (Earth Engine) ✅ ✅ ✅ ✅

Optical imagery (esd.optical)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
HLS L30 (CMR-STAC LPCLOUD) ✅ ✅ ❌ ✅
HLS S30 (CMR-STAC LPCLOUD) ✅ — — —
HLS L30 COG read (CMR-STAC LPCLOUD, Earthdata Login) ✅ — — —
HLS S30 COG read (CMR-STAC LPCLOUD, Earthdata Login) ✅ — — —
HLS L30 (Planetary Computer) ✅ — — —
HLS S30 (Planetary Computer) ✅ ✅ ✅ ✅
PlanetScope (Planet Data API) ✅ ✅ ✅ ❌
Sentinel-2 L2A (Planetary Computer) ✅ ✅ ✅ ✅
Sentinel-2 L2A (Earth Search) ✅ ✅ ✅ ✅

Terrain (esd.terrain)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
CHILI (GEE/CSP ERGo) ✅ ✅ ✅ ✅
Copernicus DEM (Planetary Computer) ✅ ✅ ✅ ✅
Copernicus DEM (Earth Search) ✅ ✅ ✅ ✅
Copernicus DEM (Earth Engine) ✅ ✅ ✅ —
NASADEM (Planetary Computer) ✅ ✅ ✅ —
NASADEM (Earth Engine) ✅ ✅ ✅ —
SRTM GL1 (Earth Engine) ✅ ✅ ✅ —
3DEP seamless (Planetary Computer) ✅ ✅ ✅ —
3DEP 10 m (Earth Engine) ✅ ✅ ✅ —
ALOS World 3D (Planetary Computer) ✅ ✅ ✅ —
ALOS World 3D (Earth Engine) ✅ ✅ ✅ —
Natural Earth hillshade (S3) ✅ ✅ ✅ —

Land cover (esd.land)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
Forest cover fraction (Zenodo) ✅ ✅ ✅ ✅
Forest cover fraction (GEE/CGLS-LC100) ✅ ✅ ✅ ✅
ESA WorldCover (Planetary Computer) ✅ ✅ ✅ ✅
ESA WorldCover (AWS bucket) ✅ ✅ ✅ ✅
Annual NLCD (GEE community asset) ✅ ✅ ✅ ✅
NLCD (GEE/USGS) ✅ ✅ ✅ ✅

Hydrography (esd.hydro)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
HUC geometries (USGS WBD REST) ✅ ✅ ✅ ✅
HUC geometries (GEE/USGS WBD) ✅ ✅ ✅ ✅
HydroATLAS basins (figshare) ✅ ✅ ✅ ✅
HydroBASINS (HydroSHEDS regional zip) ✅ ✅ ✅ ❌
HydroBASINS (GEE/HydroATLAS) ✅ ✅ ✅ ✅
GRDC major river basins (World Bank) ✅ ✅ ✅ ✅
GRDC WMO basins ✅ ✅ ✅ ✅

Boundaries (esd.boundaries)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
Natural Earth countries (naciscdn) ✅ ✅ ✅ —
geoBoundaries countries (ADM0, gbOpen) ✅ ✅ ✅ —
Natural Earth states and provinces (naciscdn) ✅ ✅ ✅ —
US Census states (cartographic boundaries) ✅ ✅ ✅ —
geoBoundaries states and provinces (ADM1, gbOpen) ✅ ✅ ✅ —
US Census counties (cartographic boundaries) ✅ ✅ ✅ —
geoBoundaries admin units (ADM2, gbOpen) ✅ ✅ ✅ —
RGI 7.0 glacier outlines (NSIDC) ✅ ❌ ✅ —
RGI 6.0 glacier outlines (NSIDC) ✅ ❌ ✅ —
RGI 6.0 glacier outlines (OGGM mirror) ✅ ✅ ✅ —
GMBA mountains (EarthEnv) ✅ ✅ ✅ —
Natural Earth vector layers (naciscdn) ✅ ✅ ✅ —

Climate (esd.climate)

Data Source Latest (Sep 29) Sep 28 Sep 23 Sep 21
ARCO-ERA5 (GCS anonymous) ✅ ✅ ✅ ✅
ERA5 (Google Earth Engine) ✅ ✅ ✅ ✅
Köppen-Geiger classification (figshare) ✅ ✅ ✅ ✅

Installation

pip install easysnowdata
conda install -c conda-forge easysnowdata
mamba install -c conda-forge easysnowdata

Development install (with pixi)

git clone https://github.com/egagli/easysnowdata.git
cd easysnowdata
pixi install --all                    # every environment (plain `pixi install` sets up only the default one)
pixi run -e test-py313 test-unit      # offline tests (no network, no credentials)
pixi run -e test-py313 test-live      # live tests against the data providers (credentialed ones skip without secrets)
pixi run -e docs docs-fast            # build the site without running the gallery
pixi run -e docs docs-serve           # serve the built site at http://localhost:8000

Services that require account setup

Some data sources need free accounts and credentials passed as environment variables:

Service Env vars Sign-up
Google Earth Engine EARTHENGINE_TOKEN (or ~/.config/earthengine/credentials from ee.Authenticate()) earthengine.google.com
NASA Earthdata EARTHDATA_USERNAME + EARTHDATA_PASSWORD (recommended), a ~/.netrc entry from earthaccess.login(persist=True), or EARTHDATA_TOKEN. A token alone does not reach NSIDC's on-premises files (RGI glacier outlines, the NSIDC-0768 snow classification) or ASF's OPERA datapool, and user tokens expire after about 60 days urs.earthdata.nasa.gov
NVE HydAPI (Norwegian stations) NVE_API_KEY hydapi.nve.no
Planet (PlanetScope, commercial) PL_API_KEY, or planet auth login planet.com

35 of the 41 products have at least one route that needs no account; each product's catalog page says which.

What is in it

41 products across 9 themes, each with one or more access routes:

theme products open without an account
stations awdb-stations, cdec-stations, databc-stations, nve-stations, snow-station-archive, yukon-stations 5 of 6
snow modis-snow, mountain-snow-mask, snodas, snow-classification, ucla-snow-reanalysis, viirs-snow 4 of 6
sar sentinel-1-local-incidence-angle, sentinel-1-rtc 2 of 2
optical hls, planetscope, sentinel-2-l2a 2 of 3
terrain 3dep, alos-dem, chili, copernicus-dem, gedtm30, hillshade, nasadem, srtm 7 of 8
land esa-worldcover, forest-cover-fraction, nlcd 2 of 3
hydro grdc-major-river-basins, grdc-wmo-basins, huc, hydrobasins 4 of 4
boundaries admin-boundaries, countries, gmba-mountains, natural-earth-vectors, rgi-glaciers, states-provinces, us-counties 7 of 7
climate era5, koppen-geiger 2 of 2

Every product's routes, resolution, credentials, licence, and health are on its own page: https://egagli.github.io/easysnowdata/catalog/.

Quick Start

import easysnowdata as esd

aoi = (-121.94, 46.72, -121.54, 46.99)          # Mount Rainier; any AOI form works

# Snow stations: which are here, then one water year of observations
inv_gdf = esd.stations.inventory(aoi, daily_only=True)
obs_ds = esd.stations.load(inv_gdf, variables=["swe", "snwd"], time="2023-10/2024-09")

# Terrain, SAR, and snow water equivalent — lazy, Dask-backed, CRS attached
dem_da = esd.terrain.dem.load(aoi)                          # Copernicus GLO-30 (default)
dem_da = esd.terrain.dem.load(aoi, product="3dep")          # or NASADEM, SRTM, 3DEP, ALOS
dem_da = esd.terrain.dem.load(aoi, product="gedtm30")       # global bare-earth DTM (OpenTopography)
s1_ds = esd.sar.sentinel1.load(aoi, "2024-03", units="dB")  # Sentinel-1 RTC
snodas_ds = esd.snow.snodas.load(aoi, "2024-03")            # SNODAS, no account

# Boundaries as GeoDataFrames: states, counties, mountain ranges, glaciers
wa_gdf = esd.boundaries.admin.states(aoi)                   # Washington (US Census)
ranges_gdf = esd.boundaries.mountains.load(aoi)             # GMBA Mountain Inventory v2
glaciers_gdf = esd.boundaries.glaciers.load(aoi)            # RGI 7.0 (Earthdata username + password); RGI 6.0 from source="oggm-mirror" needs none

# Optical, masked, and a snow index written out rather than hidden in a helper
s2_ds = esd.optical.sentinel2.load(aoi, "2024-03", mask="scl-default")
ndsi_da = (s2_ds["green"] - s2_ds["swir16"]) / (s2_ds["green"] + s2_ds["swir16"])

# Maps with equal aspect, a scale bar, and a graticule; legends from CF flags
ax = esd.plotting.map(dem_da, cmap="terrain")
esd.plotting.add_outline(ax, glaciers_gdf)                  # vectors in the map's CRS
esd.plotting.categorical(esd.land.landcover.load(aoi))
esd.plotting.timeseries(obs_ds["swe"])                      # calendar dates, units in [ ]

# What is available, and what it needs
esd.catalog.search("swe")
esd.catalog.describe("snodas")
esd.auth.status()

Coming from 0.0.x? The old module API (remote_sensing.get_*, automatic_weather_stations.StationCollection, …) was deprecated in 0.2 and removed in 0.3; the migration guide maps every old name to its replacement.

Documentation

Executed example gallery, data catalog, and API reference: https://egagli.github.io/easysnowdata

Contributing

Contributions welcome! See CONTRIBUTING for guidelines.

Citing

If you use easysnowdata in your research, please cite the Zenodo archive:

DOI

About

package for snow science data, providing streamlined access to satellite imagery (Sentinel-1/2, HLS, MODIS, etc), weather station data, climate reanalysis, land cover data, DEMs, and derived snow products as xarray objects.

Topics

Resources

Contributing

Stars

16 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages