How it works
From a single map click to a habitat score — every step is deterministic and grounded in remote-sensing conventions.
1 · Sentinel-2 imagery
When you click a location, a serverless function requests a small tile of Sentinel-2 L2A surface-reflectance imagery around that point from the Sentinel Hub Process API (via the Copernicus Data Space Ecosystem), filtered to low cloud cover. Five bands are requested:
The multiband GeoTIFF is parsed in pure Python with tifffile — no GDAL
or rasterio — which keeps the function bundle small enough for serverless limits.
2 · Spectral indices
Three normalized-difference indices are computed per pixel, each ranging −1 … +1:
Each index is also rendered as a color heatmap so you can visually inspect vegetation, water and urbanization across the tile.
3 · Land-cover classification
Land-cover is assigned deterministically from index thresholds — no black-box model:
NDWI > 0.2→ Water / WetlandNDBI > 0andNDVI < 0.3→ Urban / Built-upNDVI ≥ 0.6→ Dense ForestNDVI ≥ 0.3→ Moderate Vegetation / Cropland- otherwise → Barren / Sparse
4 · Habitat health & decline risk
Mean NDVI over the tile drives two 0–100 scores. Healthy vegetation supports richer bird habitat, so habitat health scales with NDVI, and decline risk is its complement:
5 · Time-series & report
The NDVI time-series tab samples the archive roughly monthly across a date range to reveal seasonal cycles or gradual degradation. Any analysis can be exported as a documented PDF report.