Rooftop-solar analyses are usually demonstrated on US cities with high-quality airborne LiDAR. In much of the world, including Nepal, that data does not exist: there is no open LiDAR for Kathmandu.
I ran the same method in both settings: Austin, where 1 m LiDAR is available, and Kathmandu, where a 30 m open DSM is the best available surface.
The comparison measures how much elevation-data resolution distorts a solar estimate, and in which direction.
The Austin side starts from a raw 24.6-million-point USGS 3DEP LiDAR tile. In ArcGIS Pro I filtered and rasterized the point cloud into two 1 m surfaces: a DSM from first returns (roof and canopy tops) and a ground-filtered DTM (bare earth). Both surfaces are in EPSG 6343 with metre units and NAVD88 heights, so slope and area compute without unit conversion.
Deep diveThe complete workflow, from LAZ-to-LAS conversion through the LAS Dataset to Raster parameters, ground filtering, and CRS verification, documented step by step with screenshots.
Read the full LiDAR processing methodology →

- Austin: process raw LiDAR (LAZ → LAS dataset → 1 m DSM/DTM) in ArcGIS Pro; verify CRS (EPSG 6343, metres).
- Kathmandu: download an open Copernicus GLO-30 DSM, reproject to UTM 45N (EPSG 32645) in Python.
- Both: derive slope and aspect from the DSM, pull OpenStreetMap building footprints, and aggregate per building (rasterio + geopandas).
- Estimate annual rooftop kWh per building: usable area × irradiation × aspect score × panel efficiency × performance ratio, using the same shared module for both cities.
Identical code runs both cities; only the input surface and its resolution change.
| Metric | Austin · 1 m LiDAR | Kathmandu · 30 m DSM |
|---|---|---|
| Buildings analyzed | 1,728 | 947 |
| Footprint survival | 96.3% | 13.0% |
| Mean roof slope | 40.3° | 3.7° |
| Usable roof fraction | 0.47 | 1.00 |
| Median kWh / building | 7,404 | 14,355 |
The 30 m DSM introduces directional bias through two mechanisms. It flattens roof pitch (40° → 4°), so nearly every roof reads as flat and usable area is over-credited. It also drops small buildings: only 13% of Kathmandu footprints survive, which skews the sample toward large roofs.
Together these effects inflate Kathmandu's per-building median above Austin's. That gap is an artifact of resolution, not a real difference between the cities.
Deep diveThe full statistical comparison: distribution tests, the slope-flattening and footprint-survival mechanisms, and an advantages/disadvantages breakdown of each data environment.
Read the full comparative analysis →

- Global horizontal irradiation values are long-term annual GHI from the Global Solar Atlas (Austin 1,751; Kathmandu 1,775 kWh/m²/yr). The energy model is first-order, so absolute totals are indicative only; the relative within-city and cross-resolution findings are the robust results.
- The Kathmandu result is a footprint-level screen; a 30 m DSM cannot resolve individual roof planes.
- First-order energy model; no inter-building shading in the Python step.
- OSM footprint completeness and the choice of footprint dataset materially affect Kathmandu totals.
Open the code & methodology
Reproducible Python pipeline, the full LiDAR processing methodology, and the comparative analysis on GitHub.