HLS Vegetation Index Pipeline
An 11-step pipeline that turns NASA Harmonized Landsat & Sentinel-2 imagery into analysis-ready vegetation index time series.

NASA’s Harmonized Landsat and Sentinel-2 (HLS v2.0) product merges two satellite constellations into one 30 m surface-reflectance record with a 2–3 day revisit. That’s powerful for vegetation science, but getting from raw granules to a clean, study-area-wide time series takes a lot of work. This pipeline automates all of it with a single command.
What it does
- Acquisition: queries and downloads only the MGRS tiles a study area needs, adapted from NASA’s bulk-download script.
- Quality masking: bitwise Fmask decoding with configurable cloud, shadow, snow/ice, water and aerosol flags.
- Indices: NDVI, EVI2 and NIRv per granule, written as cloud-masked GeoTIFFs.
- Time series: CF-1.8 compliant NetCDF stacks per tile, with sensor metadata.
- Mosaics and composites: study-area temporal-mean mosaics, reprojected to a target CRS, plus user-defined seasonal stacks.
- Outlier detection: raster summaries and a GeoPackage of anomalous pixels for QA.
Engineering
Steps 01–03 work one tile at a time to keep peak disk use low. Dask-chunked xarray and streaming rasterio mosaics let the same code run on a state-sized study area (Pennsylvania) and on a biodiversity hotspot (South Africa’s Cape Floristic Region). Any subset of steps can be re-run by name, and the whole thing is driven by one config file per project.
Where it’s used
- NASA BioSCape: the first building block of the NetCDF phenology datacubes I delivered for this NASA-funded project in South Africa, which were used as model inputs for the project. See the BioSCape Phenology Explorer.
- Pennsylvania mountain laurel and rhododendron mapping: leaf-off composites that separate evergreen understory shrubs from the deciduous canopy.
Maps



