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 →
live · sentinel-2 l2a scene 2026-05-25 · cloud 0.002% 184 roofs · 1.13 km² read the right rail for plain english →
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. All figures MEASURED this run.

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

Measured on 184 real roofs. Physics (NTB) is material-independent; the lookup table (LUT) inherits every classification error.

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.
31° median pitch
Derived per roof, alongside orientation, height and flat / gabled / hipped form. 3,970 of 4,954 roofs now carry LiDAR geometry across the 12 cities.
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 (5 validated classes: slate, tile, concrete, metal, glass) rather than synthetic spectra, and the served material now comes from OS NGD authoritative roof data wherever it exists (section 08), with the spectral model as the fallback, the single biggest data-quality lift. Each roof is enriched with free, no-key datasets joined by location: planning.data.gov.uk (listed building, conservation area, flood zone, the coating-eligibility flags), PVGIS solar yield, EA LiDAR geometry UK-wide (England, Wales, Scotland), 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 that mirrors the material ladder (authoritative → published benchmark → unknown). Tier A (measured): the building’s own EPC cooling demand (the SBEM kWh/m² cooling and cooling efficiency), the best path. Tier B (estimated): only ~38% of roofs carry an EPC, so where there is no EPC cooling but the OS NGD building use implies cooling (office, retail, commercial, health and the like) we apply a published UK cooling-intensity benchmark for that use class (BEES 2014-15, the BEIS Building Energy Efficiency Survey) through the same sol-air formula and cap, badged on the card as estimated from building type, a distinct lower-confidence tier, never shown as certificate-backed. Tier C (physics only): no cooling signal, so we report only the heat rejected and the peak-temperature cut. The cooling cut counts both coating levers via the ASTM sol-air balance: reflecting sunlight and radiating heat to the sky through the coating’s measured 95% emittance, which is the dominant term on low-emittance bare metal. Uncooled buildings (an EPC assessed with no air-conditioning, or a non-cooling use) correctly get no pounds.

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 (across the 12 cities ~84% of roofs resolve a UPRN, 86% carry a use, and 38% of all roofs, 1,875 of 4,954, carry an EPC certificate, every one of those with its floor area); 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 (opaque): 95% solar reflectance modelled at 0.95 and reference-paint-measured (300-1400 nm), 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 (92% of the 4,954 roofs across all 12 cities, 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 7% → 1.6%, flat 32% → 46%, pitched 57% → 39%, metal steady at 9%. 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 (it never generalised across cities). 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 its EPC cooling demand and additionally credits the coating’s emittance gain over the bare roof, so a low-emittance metal roof 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.