Skip to content

earthlens — one Python facade for 61 Earth-observation data providers

earthlens#

Docs PyPI version Conda Version PyPI - Python Version License: GPL v3 pre-commit codecov

earthlens is a Python package providing a single, unified API for downloading satellite, climate, and geospatial data from 61 providers — climate reanalysis, satellite imagery, ocean models, weather forecasts, natural-hazard feeds, air quality, biodiversity, population, and more. Pick a data_source, describe the area and dates you want, and call download(); the matching backend handles auth, catalog lookup, request shaping, and writing the output.

34 of the spacecraft behind earthlens' providers, drawn on their published orbits. Each trailing band is that instrument's real ground swath, and the trapezoid above it is the sensor's footprint sweeping it out.

The clock counts simulated orbital time at 270× real: the 20-second clip covers 1.5 hours. Earth turns 22.6° in that window and a low orbiter completes about nine tenths of a circuit, which is how its ~90-minute period can be read straight off the screen. The geostationary satellites appear frozen because they are turning at exactly Earth's rate, holding station over the same ground.

Supported data sources#

Every backend is reached through the same EarthLens facade by passing its key as data_source=.

Domain Provider (data_source key)
Climate & weather Climate Hazards Center — CHIRPS / CHIRTS / SPI / SPEI (chc) · ECMWF Copernicus CDS (ecmwf) · Open NWP forecasts — GFS / ICON / ECMWF Open Data (nwp) · CMIP6 climate projections (cmip6) · NOAA PSL teleconnection indices (climate-indices)
Satellite imagery & EO platforms Google Earth Engine (gee) · STAC — Planetary Computer / Earth Search / CDSE (stac) · Sentinel Hub server-side render (sentinel-hub) · openEO server-side processing (openeo) · EUMETSAT Data Store (eumetsat) · NASA Earthdata (earthdata) · Alaska Satellite Facility SAR (asf) · JAXA Earth observation (jaxa) · NOAA GOES-R ABI (goes)
Ocean & marine Copernicus Marine — CMEMS (cmems) · Argo float profiles (argo) · ERDDAP servers (erddap) · Bathymetry — GEBCO / ETOPO (bathymetry) · OBIS marine occurrences (obis)
Cloud-hosted archives AWS Open Data — ERA5 / Sentinel-2 / Copernicus DEM / ESA WorldCover (amazon-s3)
Natural hazards & events GDACS disaster alerts (gdacs) · FDSN earthquakes (fdsn) · FIRMS active fires (firms) · Tropycal cyclone tracks (tropycal) · NEXRAD radar (radar) · Risk indicators — ThinkHazard! / INFORM / GFW (risk-indicators) · Drought — USDM / EDO / GDO / SPEIbase (drought)
Air quality OpenAQ — global aggregator (openaq) · AirNow — US/Canada EPA (airnow) · EEA — Europe (eea-aq) · Sensor.Community — crowdsourced (sensor-community)
Population & settlement JRC Global Human Settlement Layer (ghsl) · WorldPop (worldpop)
Hydrology USGS Water — NWIS (usgs-water) · NOAA National Water Model (nwm)
Terrain, soil & cryosphere Copernicus DEM (dem) · ISRIC SoilGrids (soilgrids) · Glaciers — RGI / GLIMS / WGMS (glaciers)
Energy resource PVGIS — EU JRC (pvgis) · NREL NSRDB / WIND Toolkit (nrel) · Global Solar & Wind Atlas (solar-wind-atlas)
Biodiversity & conservation GBIF species occurrences (gbif) · IUCN Red List (iucn) · Protected Planet — WDPA (wdpa)
Vector, admin & humanitarian Overture Maps basemap (overture) · OpenStreetMap features (osm) · Administrative boundaries (admin) · Humanitarian Data Exchange — HDX (hdx)
Hold "Ctrl" to enable pan & zoom
graph LR
    EarthLens --> Climate["Climate & weather<br/>chc · ecmwf · nwp<br/>cmip6 · climate-indices"]
    EarthLens --> Imagery["Satellite imagery<br/>gee · stac · sentinel-hub · openeo<br/>eumetsat · earthdata · asf · jaxa · goes"]
    EarthLens --> Ocean["Ocean & archives<br/>cmems · argo · erddap<br/>bathymetry · obis · amazon-s3"]
    EarthLens --> Hazards["Hazards & events<br/>gdacs · fdsn · firms · tropycal<br/>radar · risk-indicators · drought"]
    EarthLens --> People["Air, population & water<br/>openaq · airnow · eea-aq · sensor-community<br/>ghsl · worldpop · usgs-water · nwm"]
    EarthLens --> Earth["Terrain, soil & energy<br/>dem · soilgrids · glaciers<br/>pvgis · nrel · solar-wind-atlas"]
    EarthLens --> Life["Biodiversity<br/>gbif · iucn · wdpa"]
    EarthLens --> Vector["Vector, admin & humanitarian<br/>overture · osm · admin · hdx"]

See Supported providers for the full matrix, and the per-provider pages under Data Sources for catalogs, authentication, and usage.

A satellite orbiting Earth, its data resolving down through a pyramid of raster overview tiles onto the globe

A satellite captures Earth-observation data, which resolves down through a pyramid of raster overview tiles — the pyramids lineage — onto a living globe.
The name is the story: earth + lens.

Quick Start#

from earthlens.core import EarthLens

earthlens = EarthLens(
    data_source="chc",
    temporal_resolution="daily",
    start="2009-01-01",
    end="2009-01-10",
    variables=["precipitation"],
    lat_lim=[4.19, 4.64],
    lon_lim=[-75.65, -74.73],
    path="examples/data/chirps",
)
earthlens.download()

Installation#

conda install -c conda-forge earthlens
pip install earthlens
pip install git+https://github.com/serapeum-org/earthlens.git