Skip to content

pySDP

Native Python interface for the RMBL Spatial Data Platform — curated, high-resolution geospatial datasets covering Western Colorado (USA) around Rocky Mountain Biological Laboratory.

pySDP gives you lazy, cloud-native access to cloud-optimized GeoTIFFs (COGs) hosted on S3, plus the ergonomics you'd expect from the modern scientific Python stack: xarray.Dataset returns, geopandas.GeoDataFrame extraction, pystac catalog access, and dask compatibility.

Why pySDP

  • No downloads needed — open a 1 GB COG and extract 500 point samples without ever pulling the full raster to disk. GDAL VSICURL handles the range reads.
  • Sensible types — every function returns standard xarray / geopandas / pandas objects that compose with the rest of the PyData ecosystem.
  • Feature parity with rSDP — the R client pySDP ports. Same catalog, same data, same vocabulary; idiomatic Python where it diverges.
  • Staleness-aware — the packaged product catalog warns when it's older than 6 months; source="live" always hits fresh.

Status

Pre-alpha. v0.1.0 is the initial feature-complete release covering catalog discovery, lazy raster access, point/polygon extraction, and bulk download. See the changelog for details.

Longer-term work (JupyterHub / Dask Gateway integration, distributed extraction recipes, benchmark harness) is tracked in the roadmap.

30-second tour

import pysdp
import geopandas as gpd

# Find datasets in the Upper Gunnison vegetation catalog
sdp_cat = pysdp.get_catalog(domains=["UG"], types=["Vegetation"])
sdp_cat[["CatalogID", "Product", "Resolution"]].head()

# Open a landcover raster lazily (no download)
landcover = pysdp.open_raster("R3D018")  # UG basic landcover, 1 m

# Extract values at three field sites
sites = gpd.GeoDataFrame(
    {"site": ["Roaring Judy", "Gothic", "Galena Lake"]},
    geometry=gpd.points_from_xy(
        [-106.853186, -106.988934, -107.072569],
        [38.716995, 38.958446, 39.021644],
    ),
    crs="EPSG:4326",
)
samples = pysdp.extract_points(landcover, sites)
samples

Head to Getting started for install instructions and a deeper walkthrough, or API reference for the full surface.

Citation

If pySDP supports your research, please cite the RMBL Spatial Data Platform. A formal citation for pySDP itself will be added at the 0.1.0 release.