EarthPV · Sentinel-2 · OpenStreetMap · TerraMind · roofclf · SPPI

Pakistan's PV Atlas

Active development. EarthPV is a research prototype: detectors, calibration and methodology are still being tested and revised, so the figures on this page will keep moving as new experiments land.

Pakistan PV capacity, by 0.1° cell
11 km × 11 km cells · log scale
MWp / cell
hand-checked calibration area (hover for detail)
0MWp
Best estimate, the highest defensible figure
0
Training data hand-mapped in OpenStreetMap, ≥400 m²
0
Training data hand-mapped in OpenStreetMap, <400 m²
0
of 0.1° cells have density-matched sub-400 m² calibration
Capacity
The same Sentinel-2-detectable total, by installation size
Capacity per size bin, rooftop vs ground-mount
linear scale · MWp
rooftop
ground-mount
rooftop, extrapolated beyond calibration
The same total photovoltaic capacity detectable with Sentinel-2, re-cut by installation size instead of geography: rooftop bars stack across every bin, while ground-mount only shows up at ≥400 m² -- the two detectors split the total by placement and size, not size alone.
Capacity
The same total, by method
Total Capacity
0 MWp
0 MWp
roofclf alone (its own ≥400 m² replacement plus the sub-400 m² central estimate) supplies most of Best by itself; direct OSM mapping and segmentation split roughly the rest. Full breakdown with credible intervals: capacity composition.
Panel orientation
Fitted tilt & azimuth, from Sentinel-2 glint
Tilt (radius) × Azimuth (angle) 0 measured
rooftop generator ground plant unreachable by this sensor's fixed overpass time
0%
of ≥ 1,000 m² installations get a pose in this plot at all -- the rest never produce two self-consistent spikes, so there's nothing to fit
≥1 spike, no fittable pose; 0%
no glint signal at all 0%
azimuth range observed
tilt IQR observed

What is PV glint and how is it detected?

PV Glint is a brief, brighter-than-diffuse flash where a panel's specular reflection lines up with the sun and Sentinel-2's fixed overpass geometry on one date -- see the method page for the full derivation and an annotated image gallery. A single spike can't be checked for self-consistency -- 0% of installations glint once (or on dates that disagree on a panel geometry) and so are correctly detected as "PV is probably here" but carry no orientation information.

Why the plot only fills part of the circle

Sentinel-2 crosses this latitude at a fixed ~10:30 local time, so across two full years of imagery the sun's azimuth at the moment of every overpass never once swings west of due south -- a panel facing southwest, west, or north cannot glint into this sensor no matter how long you wait. That's a sensor limit, not a property of rooftops here: the shaded wedge (0° wide) marks orientations this survey cannot observe at all, not orientations known to be empty. Nothing is plotted there, because nothing was measured there.

Data: . Validated = a single (tilt, azimuth) explains ≥ 2 independent spike dates via the specular reflection condition, tolerance 3°. Point size ∝ √(installation area). Full derivation of the glint signal this pose fit is built on: the method page. Annotated Sentinel-2 / high-res examples of what a validated spike actually looks like in the source imagery: the image gallery.

Background
How to read these numbers
How confident should you be in this? preliminary results, sampling caveats, independent corroboration+

Best estimate: 18,827 MWp, with a 90% range of 16,022–24,358 MWp. That range covers three specific, measured sources of uncertainty -- but not everything that could move this number. Below: what's inside the range, what isn't, how many ground-truth areas it rests on, and how it compares to two unrelated data sources.

What's inside the range:

  • The two "panel area to power" conversion numbers. One converts rooftop panel area to kWp, the other converts open-ground solar-farm land to kWp. Both are measured against real, confirmed power plants rather than assumed, but each carries its own uncertainty.
  • How well the detection model finds panels of different sizes. Its measured precision and recall were checked installation-size by installation-size, and that check itself has a margin of error.
  • How much the small-panel corrections shift depending on which neighborhoods were ground-truthed. Two corrections -- how much of a flagged roof is actually covered in panels, and what share of real installations get flagged at all -- are fit on the same set of ground-truthed neighborhoods ("quadrats"). This source of uncertainty is measured by refitting both on random subsets of those quadrats and seeing how far the answer moves.

What's outside the range -- and can't be added back in with more arithmetic:

  • The ground-truth areas were hand-picked, not randomly sampled, so this isn't a formal statistical margin of error. That wasn't a shortcut: a genuine random sample needs every sampled location to have recent-enough reference imagery to confirm or rule out a small installation, and random locations outside the calibrated areas have so far landed on imagery too old to tell "no panels" apart from "panels installed after this photo was taken." Hand-picking was the fallback that let ground-truth areas be placed where recent-enough imagery actually exists.
  • Ground-truth "complete" means complete as of when that area was mapped, not as of the satellite image used for detection. That cuts both ways, but in the same direction: it makes the model's measured accuracy look slightly worse than it is (recent real installations get scored as false alarms) and its measured miss rate look slightly better than it is (installations built after mapping can't be missed if they were never counted as ground truth to begin with). Both effects point the same way -- this page's figure is more likely an undercount than an overcount.
  • Most of the Best estimate leans on one correction that's only lightly tested where it's applied most. That correction is fit using ground-truth areas as sparse as 124 buildings/km² at the sparsest of them, but about 13.5% of the buildings it's actually applied to nationally are still sparser than that (measured 2026-08-20; this was a much larger gap -- 872 buildings/km² sparsest, 84% of buildings sparser -- as measured 2026-08-16, before a later refit happened to admit a sparser ground-truth area into the fit). The range above only resamples the areas the correction was fit on -- it says nothing about how well that correction holds up in the sparser areas outside that fit.

Treat this as an early-stage estimate from an active research pipeline, not a finished census. What's genuinely new here -- a reproducible way to estimate distributed solar from free satellite imagery and open-source AI, in a country where official statistics are sparse -- holds regardless of whether any single number on this page turns out exactly right. Expect these figures to keep moving as more ground-truth areas get added.

The ground-truth areas: hand-picked to cover a mix of landscapes, not a random sample. All 24 quadrats behind the small-panel instruments were chosen by a researcher to span different kinds of places -- planned housing developments, dense informal urban neighborhoods, industrial estates, arid/bare land -- rather than drawn at random from a national list. Only 24 of them have had a full manual check thorough enough to trust their "no panels here" verdicts (the teal markers on the map). However many quadrats exist, hand-picked ones can't produce a formal national margin of error on their own -- that needs a genuine random sample of the country's buildings, which doesn't exist yet. More quadrats do help: each new one added so far has turned up a new way the method can go wrong.

Two independent, non-satellite data sources land in the same ballpark. Pakistan's NEPRA net-metering register -- a government administrative record with no connection to this project -- puts registered rooftop solar at 5.3–6.3 GW nationally; that's a floor, since it only counts customers who completed formal registration paperwork. Separately, Chinese customs export data puts cumulative solar-panel imports into Pakistan at roughly 50 GW by mid-2025 -- a much looser ceiling that covers the whole market, utility-scale plants included. This page's headline figure falls inside that bracket. Two unrelated, non-satellite sources agreeing on the same order of magnitude is real corroboration -- though it can't confirm any single number on this page precisely.

Data
Download the data behind this atlas
Download the underlying data capacity parquets, calibration boundaries, pose survey, raw detections, model checkpoint+
Live OSM PV, not this snapshot -- Overpass query
[out:json][timeout:180]; area ["boundary"="administrative"] ["admin_level"="2"] ["ISO3166-1"="PK"] ->.searchArea; ( nwr["power"="generator"]["generator:source"="solar"](area.searchArea); nwr["power"="plant"]["plant:source"="solar"](area.searchArea); ); out geom;
Paste into overpass-turbo.eu for an interactive map and GeoJSON export, or POST it as the data parameter to https://overpass-api.de/api/interpreter from a script. The raw-detections download above predates this page and will go stale as mappers keep editing; this query always reflects live OSM state.