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.
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.