Skip to content

Gujarat capacity map (India)

Gujarat was registered as this project's first non-Pakistan AOI to prove the pipeline runs anywhere Sentinel-2 flies, without any locally cached labels or building data (see Setup New Country). This page is its first capacity estimate, produced 2026-08-07 end to end from compose through the atlas below.

Interactive. Hover a cell for its value. Open full screen.

Segmentation-only: no evidence atlas here yet

Gujarat has no calibration quadrats (0, against Pakistan's 17 Rule-1-complete ones), so neither roofclf nor the sub-400 m2/≥400 m2-rooftop-swap instruments described on the Pakistan capacity page exist for it. This is the segmentation-only atlas earthpv atlas --aoi gujarat produces with no --sub400-*/--ge400-roof-cells flags -- per this project's documented fallback, that is still the main workflow's output for a country with no mapped quadrats yet, not a lesser product, but it means every number below carries only segmentation's own (currently uncalibrated-for-Gujarat) precision, not the two-detector cross-check Pakistan's headline figures do.

Headline

812.6 MWp Recall-uncorrected, precision-weighted total (est_mwp_rc, ≥400 m2)
197.0 MWp of which rooftop
615.6 MWp of which ground-mount
866 installations hand-mapped in OpenStreetMap (129 rooftop, 723 ground, 14 unclassified)
1,527 0.1° cells composited and inferred (100% of the building-populated AOI)

"Recall-uncorrected" is the load-bearing caveat. est_mwp_rc normally divides detected area by a measured per-size-bin recall (the Horvitz-Thompson correction Pakistan's own numbers use); Gujarat has no pipeline-independent mapped reference to measure that recall against yet (no pre-pipeline OSM snapshot exists for India the way rooftopsenti's cache does for Pakistan/Germany, and no calibration quadrat has been hand-mapped here), so earthpv calibrate-candidates --aoi gujarat --recall-reference none was used deliberately -- est_mwp_rc degenerates to est_mwp_cal, precision-only, with no recall inflation. That makes 812.6 MWp a floor, not a central estimate: every one of Pakistan's own size bins has recall well under 100% (CLAUDE.md's Density stage section), and there is no reason to expect Gujarat's is different. The precision table itself is also status: interim-mapped-only (p_unmapped = 0 in every bin, i.e. an unmapped candidate is never credited as real) for the same reason -- no glint sample or manual review has been done for this AOI yet.

check-density passes with 3 suspect regions, 0 failing (data/predictions/gujarat/ density/plausibility.csv): the AOI's bounding box spills slightly into four neighbouring states/territories (Rajasthan, Madhya Pradesh, Maharashtra, Dadra and Nagar Haveli and Daman and Diu), three of which show implausible ground:rooftop ratios on very small absolute MWp (all below the plausibility gate's 50 MWp floor for that check, hence suspect rather than fail) -- expected edge spillover, not a Gujarat-specific finding. Gujarat state itself: 168.7 MWp rooftop, 596.3 MWp ground, ratio 3.5x, suspect (same status Pakistan's own passing atlas carries for three of its provinces). 634 oversize candidates (>100,000 m2, 250.4 km2) were excluded from capacity, the same postprocess.MAX_CANDIDATE_M2 cap Pakistan's pipeline uses.

Segmentation checkpoint: an open provenance gap, not a silent substitution

This atlas was NOT built with v3_combined_india, the checkpoint used for all other current development. Gujarat's compose + infer + candidate-extraction ran to completion on 2026-07-12, three days before v3_combined_india was even trained, using whichever earlier checkpoint was current then -- almost certainly v2_combined per configs/aoi.yaml's own Gujarat comment. Neither that checkpoint nor v3_combined_india still exists on disk, so which weights actually produced this atlas can no longer be verified.

Practical consequence: treat this atlas as a placeholder proof that the pipeline runs end-to-end for Gujarat, not as a like-for-like comparison with Pakistan's v3_combined_india-based numbers. Re-running Gujarat's compose+infer with the current checkpoint and re-deriving from there is the natural next step for anyone who revisits this AOI; it needs a fresh inference pass, not a retrain, since the model itself is unaffected.

Reproducing this map

# Compose + infer + postprocess had already been run for this AOI (see the checkpoint
# note above for why they were not repeated here). From candidates.parquet onward:
pixi run earthpv calibrate-candidates --aoi gujarat --recall-reference none
pixi run earthpv density --aoi gujarat --districts --force
pixi run earthpv check-density --aoi gujarat
pixi run earthpv atlas --aoi gujarat --out docs/assets/interactive/gujarat_pv_atlas.html

No --sub400-*/--ge400-roof-cells flags: those need calibration quadrats, which do not exist for Gujarat yet. See Setup New Country for what a quadrat-mapping pass here would need, and Capacity density for what every metric in grid.geoparquet/meta.json means.