01
A satellite photographs the coalfield
Every 8 days Landsat 8 or 9 passes over Jharia. Fire Watch reads only the coalfield window of each scene: the heat band, six colour bands and the cloud mask, about 10 to 13 MB a pass.
- Landsat Collection 2
- ST_B10 heat band
- QA_PIXEL cloud mask
- USGS new-scene alerts
Output A fresh heat image and colour photo
02
Heat becomes temperature
Band 10 is turned into land-surface temperature: radiance, then brightness temperature, then a correction for how much heat the surface gives off, estimated from its vegetation. Cloud, shadow and water are masked so they can't fake a fire.
- Brightness temperature
- NDVI emissivity
- Cloud, shadow & water mask
Output Surface temperature, within 0.10 K on test data
03
Every photo lined up with the last
Each pass is aligned to a reference so the same patch of ground is compared every time. SIFT aligns it, ALIKED with LightGlue on OpenCV 5's new DNN engine aligns it again on its own, and DISK settles any disagreement around a hotspot.
- SIFT + USAC_ACCURATE
- ALIKED + LightGlue
- DISK
- OpenCV 5
Output Passes aligned to within half a pixel
04
Hot ground found, false alarms filtered
Dark coal and bare dumps warm up in the sun, so that heat is regressed out against brightness and vegetation. What's left is compared with the local background, and hysteresis and contours outline each hotspot. Coke ovens and other industrial heat are recognised and ignored.
- Albedo & NDVI regression
- Hysteresis thresholds
- OpenCV contours
- Industrial mask
Output Hotspots, with precision 1.00 on both test worlds
05
Each fire followed and projected
Hotspots are joined into tracks from pass to pass. Optical flow measures how the hot front moved since the last pass, and an advection–diffusion ensemble projects where the fire could reach in the next 48 days.
- Track matching
- DIS optical flow
- 48-day spread cone
Output A spread cone covering 92% of the ground a fire went on to burn
06
Risk, confidence and precedent
Every hotspot gets a risk score from its heat, its spread and how close it is to a road, plus a score for how sure the system is. Similar past fires, found with OpenCV's nearest-neighbour index, show how fires like this one behaved.
- Risk score
- Confidence score
- cv2.ANNIndex precedent
Output High, medium or low risk, and how sure it is
07
The agent decides, a person stays in charge
The agent closes a road within 250 m of a fire on its own only when risk is high and it is at least 70% sure. Fires half under cloud, threats seen only in the projection and anything it can't confirm go to a person with a recommendation. After two quiet passes it proposes reopening, and only a person can reopen a road.
- Close a road
- Ask a person
- Propose reopening
- LangGraph agent
Output Matched a safety officer's call in 35 of 36 test situations
08
Everyone sees what changed
Closures and decisions appear on the dashboard and the public road-status list, with every step the agent took and why. Alerts go out through AWS, and every map layer carries a record of where it came from.
- Dashboard
- Public road status
- SNS alerts
- S3 + DynamoDB
- XMP provenance
Output Safer roads over a burning coalfield. Read the full explanation