Satellite Crop Health Scanner
A deployed geospatial application that transforms aligned Sentinel-2 red and near-infrared imagery into an explainable NDVI matrix, vegetation-health classifications, analytical maps, and GIS-ready exports.

Field inspection does not scale easily across large agricultural areas. Satellite Crop Health Scanner turns repeatable Sentinel-2 observations into an accessible, explainable workflow: upload the red B04 and near-infrared B08 bands, validate them, calculate NDVI for every shared valid pixel, and inspect the result without relying on a black-box model.
Geospatial integrity is checked before analysis. The application requires matching dimensions, coordinate reference system, transform, resolution, extent, and pixel grid. Masked division excludes zero denominators, nodata, NaN, and infinite values, while a processing-size guard rejects oversized rasters with guidance to clip the study area first.
The interface provides contrast-stretched source previews, an NDVI map, an adjustable vegetation-classification map, a histogram, a distribution chart, and summary statistics. The default interpretation separates non-vegetated values, sparse vegetation, moderate vegetation, and comparatively dense or healthy-looking vegetation, while keeping the 0.2 and 0.5 thresholds explicit and adjustable.
Results can leave the dashboard as a presentation-ready PNG, statistics CSV, or georeferenced NDVI GeoTIFF that preserves the source raster profile. The app runs locally, in Docker, or on Streamlit Community Cloud, and GitHub Actions repeats Pytest and Ruff checks on every push and pull request.
NDVI measures relative vegetation greenness and density; it cannot independently diagnose a particular crop disease. Thresholds still need calibration for crop type, growth stage, soil, weather, and season. The project keeps that limitation visible so every result remains traceable to aligned raster values and an explicit calculation.
- Validates dimensions, CRS, transform, resolution, extent, nodata values, and pixel-grid alignment before processing
- Calculates NDVI with masked division and excludes zero denominators, nodata, NaN, and infinite values
- Interactive maps, classification thresholds, histogram, distribution chart, and summary statistics
- Exports presentation PNG, statistics CSV, and georeferenced NDVI GeoTIFF while preserving raster metadata
- Automated Pytest and Ruff checks through GitHub Actions, with local, Docker, and Streamlit deployment paths
- Python
- Streamlit
- NumPy
- Rasterio
- GeoTIFF
- Matplotlib
- Pytest
- Ruff
- Docker