| Component | MWp | 90% low | 90% high |
|---|
| Province | This atlas, Best | Reference | Ratio |
|---|
Data: . Validated = a single (tilt, azimuth) explains ≥ 2 independent spike dates via the specular reflection condition, tolerance 3°. Point size ∝ √(installation area). Hover a point to see which installation it is; click it to open that installation in OpenStreetMap. The CSV download lists every point with its OSM id and coordinates. 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.
Best estimate: 34,142 MWp, with a 90% range of 28,863–41,207 MWp. The range covers three measured sources of uncertainty, not everything that could move this number. Below: what is inside the range, what is not, what calibration areas it rests on, and how it compares with other sources.
Inside the range:
Outside the range, and not something more arithmetic can add back:
Treat this as an early estimate from an active research pipeline, not a census. What it offers is a reproducible way to estimate distributed solar from free satellite imagery and open-source models where official statistics are thin or missing. Expect the figures to move as the evidence behind them grows.
The calibration areas: hand-picked to cover a mix of places, not a random sample. The 30 calibration areas this page's small-rooftop figures use are drawn on the map as diamonds, a few square kilometres each in which volunteers mapped every panel. A researcher chose them to span different kinds of places, from planned housing and dense urban blocks to industrial estates and bare land, rather than drawing them at random. All of them have been checked thoroughly enough to trust their "no panel here". Hand-picked areas, however many, cannot give a national margin of error; randomly drawn ones can, and where randomly drawn candidates exist the map shows them as hollow diamonds. More areas of either kind help: each one added so far has turned up a new way the method can go wrong.
Other sources give context, not a check. Pakistan publishes no count of installed solar. What is registered, about 6.8 GW of net-metered rooftops by September 2025 plus about 0.8 GW of utility-scale parks, is a floor, since most systems are never registered. Solar panels imported from China since 2017 add up to about 51 GW by the end of 2025 (Ember customs data), a loose ceiling: some are still in stock or were re-exported, and earlier imports are missing. The only independent estimate of installed capacity, 27–33 GW in January 2026 (Renewables First, derived from the import figures), sits just below this page's Best estimate and overlaps its 90% range. Agreement in order of magnitude is all these show; none of them can confirm a number on this page. Sources: pv magazine, 20 January 2026; Ember.
Layers. "Show" picks the quantity the cells are coloured by: the Best estimate, the OSM-mapped capacity alone, the satellite detections above 400 m², rooftop PV below it, farm ground PV below it (arrays beside fields, where the farm detector has run), or the gap between the Best estimate and what is already mapped, which is where mapping effort pays off most. Each cell shows its total in MWp. The colour scale is logarithmic and is refitted to whichever quantity is shown; the legend always states its range.
Your own data. "Layers" → "Add a layer" overlays a GeoJSON file, a
CSV with latitude/longitude columns, a GeoJSON URL, an XYZ raster tile URL or a WMS
(use {bbox-epsg-3857} in its GetMap URL). Files are read in your browser
and are not uploaded anywhere. The live OpenStreetMap overlay queries the public
Overpass API for the area in view when you zoom in, so it shows mapping done after
this page was built.
Exports. Every figure downloads as PNG (for slides), SVG (vector, for papers) and CSV (the numbers behind it); the map as PNG with its legend and attribution, and the grid as GeoJSON or CSV. Basemap imagery and tiles keep their own providers' terms: OpenStreetMap data is © OpenStreetMap contributors (ODbL), the grey canvas and the satellite imagery © Esri and its partners.
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.
The capacity per grid cell shown on the map, as CSV. One row per 0.1°
cell, generated in your browser from the data this page is drawing, so it is exactly
the numbers above. lon0/lat0 are the south-west corner of
the cell. The GeoParquet carries the cell polygon in EPSG:4326, so it opens directly
in QGIS or GeoPandas.