Emissiv · Remote Sensing · UK Study AOI

The Roof
Intelligence Report

What began as a roof-albedo study has grown into a full roof record: solar reflectance, authoritative material, LiDAR geometry, a thermal model of how hot each roof runs, and the building behind it (use, age and EPC), all from free satellite and open data, then turned into the cooling prize, building by building. An honest account of what is measured, what is modelled, and where the engine stops.

Measured, not asserted. Cited, not guessed.
Why this matters to Emissiv →
served artifact · sentinel-2 l2a + scl 12 areas · 4,744 roofs OS 91.95% · EPC 37.82% · geometry 88.68% live model-only scan active for new UK areas
01The journey so far

Where we started, where we are

Every gain below was made on free data alone. No labels bought, no third parties waited on. The current served artifact is SCL-masked and internally consistent: 4,744 roofs, no invalid albedo/SRI, no stale area metadata.

02Material classification

The classifier's ceiling

The starting point, before the real-label retrain in section 08: how separable were the legacy synthetic model's 14 textbook classes under its own best case, and where it broke. Production has since moved to 5 classes trained on real labels.

Fig 02.a, the dark roofs the model most often mixes up.
Fig 02.b, accuracy vs pixel purity. Cleaner (higher-res) pixels raise the ceiling.
03Solar reflectance

Separate vs hybrid reflectance

This section is the historical albedo audit that changed the serving path. Production now serves NTB physics over clear in-footprint Sentinel-2 pixels; the material lookup table is kept here only to explain why it was retired.

Fig 03.a, Albedo distributions. The LUT prior shifts the population brighter than the pixels warrant.
04Imagery resolution

The resolution wall

On real UK building geometry: how many roofs yield a clean pixel at each ground sample distance, and which sensors carry the SWIR albedo needs.

Fig 04.a, Addressable buildings by resolution. ✦ marks SWIR-capable sensors.
The cruelty of the trade-off: the only column with SWIR (Sentinel-2, ✦) resolves almost nothing. Every sensor that resolves the roof loses the bands albedo is built on.
05Beyond spectra · free LiDAR

Geometry breaks the wall

The resolution wall is a wall for colour. Roof shape is a second, independent signal, and it is free: Environment Agency 1m LiDAR, pulled live per area, gives pitch, orientation, height and form for every roof.

1m LiDAR, free
National DSM+DTM (OGL), fetched per bounding box in ~5s, now UK-wide: England (EA), Wales and Scotland behind one router. An axis entirely independent of the optical sensor.
88.68% geometry
Pitch, orientation, height or form is present on 4,207 of 4,744 served roofs across the 12 areas. OS NGD owns flat/pitched and height where present; LiDAR owns pitch angle, azimuth and form.
15 → 7
Physically-impossible material/shape combinations on a held-out tile, halved by feeding geometry into the classifier as a constraint.

Geometry corrects the spectral guess

Roof shape physically constrains material: slate and tile are pitched coverings, membranes and GRP are flat-deck systems. A geometry plausibility prior multiplied into the spectral class probabilities re-ranks implausible guesses. On a held-out UK tile it corrected 4% of materials and removed more than half the impossible combinations, GRP on a 30° gable, rooflights on a steep hip, both fixed.

We also tried geometry as a learned feature: on an in-distribution split it looked like a lift (+8 points accuracy, +14 macro-F1 on n=88), but it did not hold out of distribution, only 16% of roofs carry LiDAR at train time, so the feature model imputed medians for the rest and collapsed (84% glass) under a leave-one-city-out test. So geometry ships as the post-hoc constraint above, not a feature. The weak material signal is now lifted instead by authoritative OS NGD data (section 08); pitch and orientation remain the solar-exposure axis the cooling story needs.

A drop-in superset of the Google Solar API

The roof record now mirrors the Google Maps Solar API schema, per-segment pitchDegrees, azimuthDegrees, planeHeightAtCenterMeters and area, and adds an emissiv block: solar reflectance, SRI, modelled surface temperature, material, roof form, cooling candidate. Google owns geometry-for-solar in the UK; material, reflectance and thermal/MRV are the white space nobody else holds. We match their fields and extend them.

Google Solar API · roofSegmentStats[ ]
{
  "pitchDegrees": 3.0,
  "azimuthDegrees": 174.0,
  "planeHeightAtCenterMeters": 12.4,
  "stats": { "areaMeters2": 540 }
}
Emissiv record · same schema, plus emissiv{ }
{
  "pitchDegrees": 3.0,
  "azimuthDegrees": 174.0,
  "planeHeightAtCenterMeters": 12.4,
  "stats": { "areaMeters2": 540 },
  "emissiv": {
    "solarReflectance": 0.14,
    "sri": 12,
    "surfaceTempC": 71, // modelled (E1980)
    "material": "flat_membrane", // OS NGD
    "roofForm": "flat",
    "coolingCandidate": true,
    "epcBand": "D",
    "floorAreaM2": 1840, // EPC certificate
    "co2PerM2Yr": 24,
    "energyPerM2Yr": 252,
    "buildingUse": "commercial"
  }
}

Same four geometry fields, identical names. The emissiv block is the white space nobody else holds: solar reflectance, SRI and modelled surface temperature (the cooling metrics), authoritative material, and the building context that qualifies a target. A team already integrated against Google Solar reads our record with zero schema change.

Free geometry answers the resolution wall without buying a single image: an independent signal, a correction to the weak one, and the solar axis, all from open LiDAR.

Production upgrades: real labels, enrichment, and the coating number

The spectral model trains on real OpenStreetMap roof-material labels rather than synthetic spectra, but production material now comes from OS NGD authoritative roof data wherever it exists (section 08). The spectral model is the hedged fallback, not the headline product. Each roof is enriched with free, no-key datasets joined by location: planning.data.gov.uk (listed building, conservation area, flood zone), PVGIS horizontal solar yield, EA LiDAR geometry, and the National Grid live carbon intensity. From albedo, roof area and a 95%-reflective coating we compute the prize per roof: the solar heat rejected and the peak surface-temperature cut are physics, every roof; the cooling cost (£) and CO2 follow a three-tier ladder. Tier A (measured): the building’s own EPC/SBEM cooling demand. Tier B (estimated): no EPC cooling, but OS NGD building use implies cooling, so we apply a published UK cooling-intensity benchmark from BEES 2014-15 through the same sol-air formula and cap. Tier C (physics only): no cooling signal, so we report heat rejected and peak-temperature cut and claim no pounds. The cooling cut counts both coating levers: reflecting sunlight and radiating heat to the sky through the coating’s measured 95% emittance.

The building behind the roof: use, age and EPC

OS NGD does not just give material, each building also carries its UPRN, its use (residential / retail / commercial / industrial), its construction year and its floors, all free in the same record. The UPRN is the join key into the GOV.UK Energy Performance of Buildings service, so we pull the full EPC certificate per building by UPRN, across the domestic and non-domestic registers: the energy rating (A-G), and from the certificate record the total floor area (m²), the CO₂ and energy intensity (per m²/yr), plus the potential band and main heating on domestic certificates. Floor area is the field that actually backs the commercial prize, who carries a real cooling load, not just "air-conditioned buildings only", and it is the one number OS NGD does not hold (OS gives the floor count, never the area), so the certificate earns its second call. Every roof still gets a use and age from OS NGD even where no certificate exists. Coverage is England and Wales; in the current 12-area served artifact, 37.82% of roofs carry an EPC band and floor-area-backed certificate fields. Scotland uses a separate register we have not wired, so Glasgow's roofs carry use and age but no EPC. One framing point, to pre-empt the obvious diligence question: targeting stays reflectance-led. Roofs are ranked on measured albedo and area; these building signals (use, EPC band, climate) are a modelled overlay that sharpens the ranking, not a gate. A roof with no resolved EPC band is not dropped, it simply carries less qualification, so the 38% EPC coverage caps how much we can refine the list, not how much of it we can see.

How hot the roof actually runs

Absorbed sunlight is only half the heat story. A roof that absorbs a lot can still stay cool if it radiates that heat back to the sky, so a metal roof and a slate roof at the same reflectance run very different temperatures. The record now carries thermal emittance assigned per OS NGD material class (most roofs ~0.90, bare metal ~0.45, hedged because the finish is unrecorded), and SRI is computed from the full ASTM E1980 surface-temperature balance using reflectance and emittance rather than reflectance alone, so the card shows a modelled peak surface temperature and the absorbed solar load (MWh/yr). On the explore map a Heat view colours each roof by how much hotter it runs than its albedo predicts, so the deceptively-hot low-emittance metal roofs, the ones a reflectance-only scan walks past, light up as the heat (and cooling-coating) targets they are. Honest limit: for the existing stock, emittance is assigned by material, not measured (the finish is unrecorded). The coating’s own optics, though, are now characterised for an opaque coating: measured 95% solar reflectance plus 95% thermal emittance, with the full cured-film characterisation in progress, so the coated-roof temperature is grounded physics, not a guess.

Ground truth, and its honest limit. On a single clear day we pulled free Landsat thermal (Collection-2 Level-2, scene LC08_…_20260525) over one UK estate: 179 roofs at a 41.4°C mean, peaking 44.8°C, far above the air around them. The heat is measured, not asserted. But the same scene shows what a thermal satellite cannot do: at 100 m per pixel the darkest third and brightest third of roofs come back within 0.1°C of each other (albedo–temperature r = 0.12), because each pixel smears dozens of roofs together, the same resolution wall as albedo. So the per-roof temperature spread is the ASTM E1980 model's job, badged modelled, precisely because the free thermal pixel is far too coarse to separate one roof from the next. We validate the heat with the satellite and resolve the roof with the physics.
06Databases · APIs · methods

The sourcing cabinet

Imagery, footprints and methods, researched and cited. Recommended rows carry a blue margin.

Imagery, the SWIR / resolution dilemma
Building footprints & attributes
Methods & published accuracy
07New free data, run live today

The free frontier

Three free sources and techniques we had not used, pulled live and sampled at the same real roofs. How far can we get today, with no labels, no paid imagery and no waiting on anyone?

Fig 07.a, Landsat vs Sentinel-2 albedo, same day. Aggregate agreement, per roof scatter from 30m blur.
Fig 07.b, radar brightness by roof group. An axis independent of colour.
08Real labels, free, run live

Closing the loop

The deepest fix, run today: harvest real roof-material labels free from OpenStreetMap, train on those instead of textbook spectra, and fuse the free radar. The first measured accuracy this project has had.

Fig 08.a, accuracy on the same held-out real roofs. Synthetic, to free labels, to free fusion.
Fig 08.b, what the trained model confuses. Slate and tile, both pitched, still blur.

Authoritative material, free: OS NGD

The spectral guess at 10 m is structurally weak, so we benchmarked it against an authoritative source: Ordnance Survey's National Geographic Database (NGD Features API, bld-fts-building-4), which carries a per-building roofmaterial_primarymaterial derived from OS's high-resolution aerial pipeline. It is free under the OS Data Hub Premium plan, the first £1,000 of usage each month is free and our 12-city pull costs a few pounds against that allowance, so it stays at £0, with no contract lock-in and national coverage.

The benchmark was damning for our guess and decisive for the switch. OS matched 97% of our roofs, and our model agreed with it only 49% of the time. We were over-calling glass roughly tenfold (we said 7%, OS says 0.7%); of the roofs we labelled glass, OS confirmed only 4 of 249. Our metal totals were about right but landed on the wrong roofs (61 of 294 confirmed). And we under-called flat: city centres are ~47% flat commercial decks, we had said 32%.

So we now serve OS material where it exists (91.95% of the 4,744 roofs across all 12 areas, badged OS NGD on the card and shown without the uncertainty hedge), and fall back to the spectral model only where OS is absent or ambiguous. The served distribution snapped to reality: glass no longer inflates the product, flat commercial decks appear as flat, and pitched stock stays separate. One honest cost: OS lumps tile, stone and slate into one class, so we dropped our slate-versus-tile split, which we could not support anyway. Albedo, area and the headline physics (solar heat rejected, peak-temperature cut) are unchanged, computed from reflectance and roof area. The cooling £/CO2 is grounded per building in EPC/SBEM or BEES-tiered cooling demand and additionally credits the coating’s emittance gain over the bare roof, so low-emittance metal correctly earns more, the one place roof material enters the savings.

OS NGD is itself ML-derived (a "silver" label, not a ground survey), but it is built on high-resolution aerial imagery and is far more authoritative than a 10 m spectral guess. The next move is to train on these ~3,400 authoritative labels rather than only override with them, turning a sparse OSM training set into a national one. Source: Ordnance Survey NGD Features API, collection bld-fts-building-4, OS Data Hub.
09Recommended architecture

Inching toward quality

The lane-separated architecture and the ordered moves that convert this prototype into a defensible product.

Ordered moves
10Tier-1 product & analysis

To Silicon-Valley tier

Beyond fixing the prototype, the moves that make this a category-defining product, not a script.

11Teach the work

Glossary & sources

Every term, data source and model on this page in plain English, enough to explain what we do to someone new.