solar-calc

Outer Sunset, San Francisco

How much sun hits every roof in the neighbourhood

Annual sunlight, usable roof area and a rough system size for 3,700 buildings, worked out from open USGS LiDAR, DataSF footprints and a typical weather year from PVGIS.

Roofs worth a system

-

- of - buildings

Possible capacity

- MWp

median - kWp per roof

Yearly generation

- GWh

- kWh per kWp

CO₂ avoided

- t/yr

at the California grid average

Roof sunlight

Average yearly sunlight on the usable part of each roof. Tap a building for its numbers.

kWh/m² per year

Not enough usable roof

No building selected.

How it works

A python pipeline, from point cloud to per-building numbers. Once the data is downloaded it runs on a laptop in under a minute.

  1. Surface model. USGS 3DEP LiDAR (2023) points, minus noise, gridded to a 0.5 m surface model by taking the highest point in each cell.
  2. Roofs. DataSF footprints, shrunk by 0.5 m so walls drop out, cut the surface model down to roof pixels.
  3. Slope and aspect. A Sobel filter on the surface gives each pixel its tilt and which way it faces.
  4. Shading. For every roof pixel the horizon angle is found in 16 directions out to 100 m. Direct sun is cut when the sun is below that horizon, and diffuse light is scaled by how much sky the pixel can see.
  5. Sunlight. A typical year of hourly weather (PVGIS, NSRDB satellite data) is put through pvlib's Perez model for every 5° tilt and 15° direction bin, then summed to kWh/m² per year.
  6. Per building. Usable roof is tilt ≤ 45°, not north facing, and at least - kWh/m² (70% of an open flat roof). A roof needs 10 m² of that to count. Panels cover 65% of it at 20% efficiency with an 80% performance ratio, and CO₂ uses - kg/kWh (EPA eGRID 2023, California).

Checks

The numbers are rough, so they are compared with published figures for the same place.

MeasureThis modelReference

Top roofs

The ten buildings with the most yearly generation. Click one to find it on the map.

BuildingUsable m²kWpkWh/yr