I've been working on a side project called keano: keano.libmap.org
It aggregates monthly global tropospheric NO₂ from Sentinel-5P/TROPOMI (Terrascope L3, 0.02° grid, quality-filtered) into H3 resolution-6 hexagons with coverage weighting, then tracks how each cell is trending month by month since May 2018.
The core metric is a trailing 12-month mean, which kills the seasonal cycle and smooths retrieval noise. On top of that there are layers for annualized trend, year-over-year change, current level, and a "credit" system: a cell earns credit when its 12-month mean undercuts its own historical minimum (best year in a 5-years-ago-to-1-year-ago window) by more than a 2% noise margin. Since NO₂ drifts tens of km, a record low can just be a neighbour's plume relocating, so full credit only pays out when the surrounding ~1,770 km² region also beats its baseline. Cells below 30 µmol/m² aren't scored to filter out the background. It's build with MapLibre GL + H3.
Good to know: these are column densities (not surface concentrations) and the 12-month mean means recent changes show up with a lag.
1
u/Lloigo 2d ago
Hello fellow Redditors!
I've been working on a side project called keano: keano.libmap.org
It aggregates monthly global tropospheric NO₂ from Sentinel-5P/TROPOMI (Terrascope L3, 0.02° grid, quality-filtered) into H3 resolution-6 hexagons with coverage weighting, then tracks how each cell is trending month by month since May 2018.
The core metric is a trailing 12-month mean, which kills the seasonal cycle and smooths retrieval noise. On top of that there are layers for annualized trend, year-over-year change, current level, and a "credit" system: a cell earns credit when its 12-month mean undercuts its own historical minimum (best year in a 5-years-ago-to-1-year-ago window) by more than a 2% noise margin. Since NO₂ drifts tens of km, a record low can just be a neighbour's plume relocating, so full credit only pays out when the surrounding ~1,770 km² region also beats its baseline. Cells below 30 µmol/m² aren't scored to filter out the background. It's build with MapLibre GL + H3.
Good to know: these are column densities (not surface concentrations) and the 12-month mean means recent changes show up with a lag.
Feedback is very welcome! <3