Data

Every number, and how it was made

Each layer behind the atlas as a CSV, and the Article 8 file as the GeoPackage the Commission asks for, with what it measures, how, from what source and with what threshold, so any number on the site can be recomputed from the files alone.

City
Charleroi
Layers
21
Format
CSV, GeoPackage
Join key
Statbel sector id; LAU code for the law
Manifest (JSON) ↓Open the atlas →

What changed

The trend against matched places, and each season since the 2024 baseline.

Green, canopy and built-up in 2024, and the trend against matched places

CSV287 rows51 KBcomputed 2026-⁠09-⁠26

Summer 2024 levels of greenness (NDVI) and of tree, grass and built-up cover, and the change from summers 2017–⁠19 to 2021–⁠24 against twelve matched sectors.

Threshold 0.0408CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Difference in differences: the sector's change minus the mean change of the 12 sectors most alike before (greenness and summer surface temperature), none closer than 1.5 km. A sector whose closest match differs by more than 0.04 NDVI before is refused, not compared.
Source
Copernicus Sentinel-2 (summer medians, Cloud Score+ mask), Dynamic World V1, Landsat surface temperature for the matching; income: Statbel 2023.
Threshold
Greenness 0.0408, canopy 0.0263, built-up 0.0339: the 95th percentile of this run's own null distribution — every one of the 269 comparable sectors plays “intervention” once against its own 12 matched places, and the effects it shows are pure noise.
Limits
  • Class values are probabilities, not shares of ground: compare them between sectors, do not read them as percentages of area.
  • Greenness is not tree canopy: a young planting on a meadow reads as a loss, and restoring an existing park does not show.
Licence
CC BY 4.0
Credit
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
  • Landsat Collection 2 courtesy of the U.S. Geological Survey
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
communecommune
area_haarea, hectares
populationresidents
densityresidents per hectare
incomemedian taxable income, €, Statbel 2023
ndvi_2024summer 2024 greenness (NDVI), sector mean
trees_2024summer 2024 tree cover, Dynamic World class probability
grass_2024summer 2024 grass cover, class probability
built_2024summer 2024 built-up cover, class probability
ndvi_effeffect on greenness: the sector's change minus its 12 matched places' mean change
ndvi_verdictup (greener beyond noise), down (lost beyond noise), noise, or refused (no comparable places)
trees_effeffect on tree cover, same matched places
trees_verdictthe same verdict for tree cover
grass_effeffect on grass cover
built_effeffect on built-up (sealed) cover, same matched places
built_verdictup (more built-up beyond noise: sealed), down (less beyond noise: unsealed), noise, or refused
gapgreenness before: the sector minus its matched places (above 0.04 in absolute value: refused)
comparableTrue when the matched places are comparable
ndvi_bgreenness before, summers 2017–⁠19
ndvi_agreenness after, summers 2021–⁠24
ndvi_rawchange without subtracting matched places (after − before)
lst_bsummer land surface temperature before, °C (Landsat), used for matching

Monitoring, summer 2024

CSV287 rows21 KBcomputed 2026-⁠09-⁠26

Greenness in summer 2024 against a rolling base of the three summers before, sector by sector, with the second instrument's reading of every loss.

Threshold 0.0503CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Difference in differences against the same kind of matched places, with the season's own threshold. A loss beyond the threshold is read by Dynamic World (tree cover down: canopy loss; built-up up: construction; neither: not confirmed), then by documents.
Source
Copernicus Sentinel-2, Dynamic World V1 (trees, built) for corroboration.
Threshold
0.0503: the 95th percentile of the season's own null distribution (base 2021–⁠2023 against summer 2024, every sector playing “intervention” once). A loss is published only when the second instrument (Dynamic World) agrees.
Limits
  • One season is noisier than a four-year window: a loss is named only when two instruments agree.
  • The cause is not in the numbers: it comes from documents, and without one it stays unknown.
Licence
CC BY 4.0
Credit
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
area_haarea, hectares
populationresidents
ndvi_beforegreenness, mean of the base summers
ndvi_deltasummer 2024 minus the base
effectthe change minus the matched places' mean change
gapgreenness before, the sector minus its matched places
comparableTrue when the matched places are comparable
dw_labelthe second instrument's reading of a loss beyond the threshold: construction, canopy loss or not confirmed
dw_treestree cover change, class probability (seasons from 2025)
dw_builtbuilt-up change, class probability (seasons from 2025)
bulletinthe season bulletin's reading after documents: construction, canopy loss, not confirmed or gained

Monitoring, summer 2025

CSV287 rows21 KBcomputed 2026-⁠09-⁠26

Greenness in summer 2025 against a rolling base of the three summers before, sector by sector, with the second instrument's reading of every loss.

Threshold 0.0382CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Difference in differences against the same kind of matched places, with the season's own threshold. A loss beyond the threshold is read by Dynamic World (tree cover down: canopy loss; built-up up: construction; neither: not confirmed), then by documents.
Source
Copernicus Sentinel-2, Dynamic World V1 (trees, built) for corroboration.
Threshold
0.0382: the 95th percentile of the season's own null distribution (base 2022–⁠2024 against summer 2025, every sector playing “intervention” once). A loss is published only when the second instrument (Dynamic World) agrees.
Limits
  • One season is noisier than a four-year window: a loss is named only when two instruments agree.
  • The cause is not in the numbers: it comes from documents, and without one it stays unknown.
Licence
CC BY 4.0
Credit
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
area_haarea, hectares
populationresidents
ndvi_beforegreenness, mean of the base summers
ndvi_deltasummer 2025 minus the base
effectthe change minus the matched places' mean change
gapgreenness before, the sector minus its matched places
comparableTrue when the matched places are comparable
dw_labelthe second instrument's reading of a loss beyond the threshold: construction, canopy loss or not confirmed
dw_treestree cover change, class probability (seasons from 2025)
dw_builtbuilt-up change, class probability (seasons from 2025)
bulletinthe season bulletin's reading after documents: construction, canopy loss, not confirmed or gained

Monitoring, summer 2026

CSV287 rows21 KBcomputed 2026-⁠09-⁠26

Greenness in summer 2026 against a rolling base of the three summers before, sector by sector, with the second instrument's reading of every loss.

Threshold 0.0559CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Difference in differences against the same kind of matched places, with the season's own threshold. A loss beyond the threshold is read by Dynamic World (tree cover down: canopy loss; built-up up: construction; neither: not confirmed), then by documents.
Source
Copernicus Sentinel-2, Dynamic World V1 (trees, built) for corroboration.
Threshold
0.0559: the 95th percentile of the season's own null distribution (base 2023–⁠2025 against summer 2026, every sector playing “intervention” once). A loss is published only when the second instrument (Dynamic World) agrees.
Limits
  • One season is noisier than a four-year window: a loss is named only when two instruments agree.
  • The cause is not in the numbers: it comes from documents, and without one it stays unknown.
Licence
CC BY 4.0
Credit
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
area_haarea, hectares
populationresidents
ndvi_beforegreenness, mean of the base summers
ndvi_deltasummer 2026 minus the base
effectthe change minus the matched places' mean change
gapgreenness before, the sector minus its matched places
comparableTrue when the matched places are comparable
dw_labelthe second instrument's reading of a loss beyond the threshold: construction, canopy loss or not confirmed
dw_treestree cover change, class probability (seasons from 2025)
dw_builtbuilt-up change, class probability (seasons from 2025)
bulletinthe season bulletin's reading after documents: construction, canopy loss, not confirmed or gained

The law

The Commission’s own test for leaving a commune out of Article 8, the zero measurement in hectares, and the file a country uploads.

Article 8(1) by commune, with the Commission’s method

CSV1 row1 KBcomputed 2026-⁠09-⁠26

The share of urban green and tree canopy in each commune (LAU) and in its urban centres and clusters, and whether the commune passes the exemption of Article 8(1): more than 45% green and more than 10% canopy.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The EEA and JRC script NRR_Art8 repeated on open data: LAU 2024 × the 1 km² grid of urban centres and clusters 2021; the share of a class's pixels inside the polygon, by pixel centre.
Source
Copernicus CLCplus Backbone 2021 (10 m), HRL Woody Vegetation Layer 2021 (5 m), HRL Tree Cover Density 2018 (10 m); Eurostat LAU 2024, degree of urbanisation 2024, clusters 2021.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • Green from CLCplus 2021, where the Regulation names 2023; canopy from WVL 2021, allowed for draft plans only.
  • Matching CLCplus classes to Article 3(20) is our reading; the verdict was re-checked with arable land as green and without water.
Licence
CC BY 4.0
Credit
  • © European Union, Copernicus Land Monitoring Service, European Environment Agency (CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021, HRL Tree Cover Density 2018)
  • Eurostat GISCO: LAU 2024, degree of urbanisation 2024, urban centres and clusters 2021; © EuroGeographics for the administrative boundaries
ColumnWhat it holds
lau_idLAU code (BE_ + NIS code)
namecommune
degurbadegree of urbanisation (1 = city)
populationresidents (LAU 2024)
area_km2_officialofficial area, km²
area_km2_allmeasured area, km²
green_allgreen share, whole LAU
green_with7_allgreen share counting arable land
green_no_water_allgreen share without water
sealed_allsealed share, whole LAU
canopy_wvl_allwoody vegetation share, whole LAU
tcd_allmean tree cover density, whole LAU
tcd_any_allshare of pixels with any tree cover
area_km2_ucucarea inside urban centres and clusters, km²
green_ucucgreen share inside urban centres and clusters (the test's green)
green_with7_ucucthe same, counting arable land
green_no_water_ucucthe same, without water
sealed_ucucsealed share inside centres and clusters
canopy_wvl_ucucwoody vegetation share inside centres and clusters (the test's canopy)
tcd_ucucmean tree cover density inside
tcd_any_ucucshare of pixels with any tree cover inside
exemptTrue when the commune passes the exemption
reasonwhy it does not pass, in numbers
exempt_with7the verdict counting arable land
exempt_no_waterthe verdict without water
green_ucuc_statbelgreen share with the commune built from Statbel sectors
canopy_wvl_ucuc_statbelcanopy share, the same way
exempt_statbelthe verdict, the same way
stableTrue when the verdict holds under every reading above

The zero measurement by commune, in hectares

CSV1 row1 KBcomputed 2026-⁠09-⁠26

For each commune, the area of its urban ecosystem and the green and tree canopy inside it, in hectares and per cent, for both boundaries the Commission leaves to the country: the urban centres and clusters inside the commune, and the whole commune. The form of the Dutch national zero measurement (PBL, 25 August 2026).

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The shares of the layer above multiplied by the area they were measured on: nothing is recomputed. A city of several communes adds a row for all of them together.
Source
Frondia’s repeat of the EEA and JRC script NRR_Art8 (the layer above); Copernicus CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021; Eurostat LAU 2024, urban centres and clusters 2021.
Threshold
No significance threshold: a level for one year, not a change. The Commission’s own format carries no threshold either; whether anything changed beyond noise is the layer under “What changed”.
Limits
  • 2021 data: the Commission allows the Woody Vegetation Layer 2021 for draft plans only.
  • Hectares are the pixels' area inside the 1:1M boundary, not the land register.
  • Matching CLCplus classes to Article 3(20) is our reading: see the sensitivity table.
Licence
CC BY 4.0
Credit
  • © European Union, Copernicus Land Monitoring Service, European Environment Agency (CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021, HRL Tree Cover Density 2018)
  • Eurostat GISCO: LAU 2024, degree of urbanisation 2024, urban centres and clusters 2021; © EuroGeographics for the administrative boundaries
ColumnWhat it holds
lau_idLAU code as the Commission writes it (lau2024.BE.<NIS code>); empty on the row for all communes together
namecommune
populationresidents (LAU 2024)
uea_ucuc_haurban ecosystem as urban centres and clusters inside the commune, hectares
green_ucuc_hagreen inside it, hectares
green_ucuc_pctgreen inside it, per cent (the exemption's green)
canopy_ucuc_hatree canopy inside it, hectares
canopy_ucuc_pcttree canopy inside it, per cent (the exemption's canopy)
uea_lau_haurban ecosystem as the whole commune, hectares
green_lau_hagreen in the whole commune, hectares
green_lau_pctgreen in the whole commune, per cent
canopy_lau_hatree canopy in the whole commune, hectares
canopy_lau_pcttree canopy in the whole commune, per cent
exemptTrue when more than 45% green and more than 10% canopy in urban centres and clusters
stableTrue when the verdict holds under every reading of the sensitivity table

How the exemption verdict depends on the reading

CSV4 rows1 KBcomputed 2026-⁠09-⁠26

The Article 8(1) verdict of each commune under every reading the test runs: the official one, arable land counted as green, water not counted as green, and the commune built from Statbel sectors instead of the 1:1M boundary.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The thresholds of Article 8(1), more than 45% green and more than 10% canopy, applied to the shares of each reading.
Source
Frondia’s repeat of NRR_Art8 (the layer “Article 8(1) by commune”).
Threshold
No significance threshold: a level for one year, not a change. The Commission’s own format carries no threshold either; whether anything changed beyond noise is the layer under “What changed”.
Limits
  • Only the readings the test runs: other boundaries a country may choose were not tried.
Licence
CC BY 4.0
Credit
  • © European Union, Copernicus Land Monitoring Service, European Environment Agency (CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021, HRL Tree Cover Density 2018)
  • Eurostat GISCO: LAU 2024, degree of urbanisation 2024, urban centres and clusters 2021; © EuroGeographics for the administrative boundaries
ColumnWhat it holds
lau_idLAU code (lau2024.BE.<NIS code>)
namecommune
readingofficial, with_arable, without_water or statbel_sectors
green_pctgreen in urban centres and clusters under this reading, per cent
canopy_pcttree canopy there, per cent
exemptthe verdict under this reading (empty where the reading was not computed)

The Reportnet file, centres and clusters

GeoPackage1 polygon40 KBcomputed 2026-⁠09-⁠26

t8_UEAPolygons: one polygon per commune with the area of tree canopy (area_tcc) and of urban green (area_ugs) in km², the urban ecosystem taken as the urban centres and clusters inside the commune. The schema of the Commission’s own example, field by field.

No significance threshold: a stateCC BY 4.0

Download GeoPackage ↓
Method, source and columns
Method
The commune’s LAU 2024 polygon (Eurostat GISCO, EPSG:3035) with the areas of the layers above; area_tcc as text with five decimals, as the Commission’s script rounds it.
Source
Schema: EEA and JRC, github.com/eea/NRR_Art8 (commit of 22 September 2026). Numbers: Frondia’s repeat of that script on open data.
Threshold
No significance threshold: a level for one year, not a change. The Commission’s own format carries no threshold either; whether anything changed beyond noise is the layer under “What changed”.
Limits
  • A draft on 2021 data: the Woody Vegetation Layer 2021 is allowed for draft plans only.
  • area_ugs is empty in the Commission’s example; here it is our reading of Article 3(20) in CLCplus classes.
  • uea_id is empty, as in the example: the country assigns it.
  • No R-tree spatial index (optional in GeoPackage); GIS software builds one on opening if it needs it.
Licence
CC BY 4.0
Credit
  • © European Union, Copernicus Land Monitoring Service, European Environment Agency (CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021, HRL Tree Cover Density 2018)
  • Eurostat GISCO: LAU 2024, degree of urbanisation 2024, urban centres and clusters 2021; © EuroGeographics for the administrative boundaries
ColumnWhat it holds
fidfeature id, inherited from GISCO’s LAU layer as in the example
geomthe commune’s polygon, MULTIPOLYGON, EPSG:3035
uea_idurban ecosystem id, empty
lau_idLAU code (lau2024.BE.<NIS code>)
area_tcctree canopy (Woody Vegetation Layer) in the urban ecosystem, km², text
area_ugsurban green (CLCplus, our reading of Article 3(20)) in the urban ecosystem, km²

The Reportnet file, whole commune

GeoPackage1 polygon40 KBcomputed 2026-⁠09-⁠26

t8_UEAPolygons: one polygon per commune with the area of tree canopy (area_tcc) and of urban green (area_ugs) in km², the urban ecosystem taken as the whole commune. The schema of the Commission’s own example, field by field.

No significance threshold: a stateCC BY 4.0

Download GeoPackage ↓
Method, source and columns
Method
The commune’s LAU 2024 polygon (Eurostat GISCO, EPSG:3035) with the areas of the layers above; area_tcc as text with five decimals, as the Commission’s script rounds it.
Source
Schema: EEA and JRC, github.com/eea/NRR_Art8 (commit of 22 September 2026). Numbers: Frondia’s repeat of that script on open data.
Threshold
No significance threshold: a level for one year, not a change. The Commission’s own format carries no threshold either; whether anything changed beyond noise is the layer under “What changed”.
Limits
  • A draft on 2021 data: the Woody Vegetation Layer 2021 is allowed for draft plans only.
  • area_ugs is empty in the Commission’s example; here it is our reading of Article 3(20) in CLCplus classes.
  • uea_id is empty, as in the example: the country assigns it.
  • No R-tree spatial index (optional in GeoPackage); GIS software builds one on opening if it needs it.
Licence
CC BY 4.0
Credit
  • © European Union, Copernicus Land Monitoring Service, European Environment Agency (CLCplus Backbone 2021, HRL Woody Vegetation Layer 2021, HRL Tree Cover Density 2018)
  • Eurostat GISCO: LAU 2024, degree of urbanisation 2024, urban centres and clusters 2021; © EuroGeographics for the administrative boundaries
ColumnWhat it holds
fidfeature id, inherited from GISCO’s LAU layer as in the example
geomthe commune’s polygon, MULTIPOLYGON, EPSG:3035
uea_idurban ecosystem id, empty
lau_idLAU code (lau2024.BE.<NIS code>)
area_tcctree canopy (Woody Vegetation Layer) in the urban ecosystem, km², text
area_ugsurban green (CLCplus, our reading of Article 3(20)) in the urban ecosystem, km²

Since the 2024 base, in hectares: summer 2025

CSV287 rows48 KBcomputed 2026-⁠09-⁠26

For each sector, urban green (the Regulation’s reading: trees, grass, shrub and water, not farmland), tree canopy and built-up ground in hectares in summer 2024 and summer 2025, and the change beyond noise against twelve matched places.

Threshold 0.0611CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Each summer, the class with the highest mean Dynamic World probability wins each 10 m pixel; a class’s share of the sector times its area gives hectares. The effect is the sector’s change in share minus its matched places’ mean change (the most alike in 2024 by greenness and surface temperature, none closer than 1.5 km); times the area, hectares beyond what comparable places did.
Source
Dynamic World V1; Copernicus Sentinel-2 greenness and Landsat surface temperature of summer 2024 for the matching; Statbel sectors and population.
Threshold
Green 0.0611, canopy 0.0453, built-up 0.0534 (share of the sector's area): the 95th percentile of this run's own null distribution, each class and season on its own — every sector plays “intervention” once against its 12 matched places.
Limits
  • Hectares as Dynamic World classifies the ground: not the official CLCplus and Woody Vegetation layers, and not the land register.
  • One summer against another is noisier than a four-year window.
  • The raw hectares include the classes’ shift from one summer to the next; only the effect subtracts it.
  • A park that loses trees can read as more built-up when a mixed pixel changes class.
Licence
CC BY 4.0
Credit
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Landsat Collection 2 courtesy of the U.S. Geological Survey
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
communecommune
area_haarea, hectares
populationresidents
green_2024_haurban green, summer 2024, hectares
green_2025_haurban green, summer 2025, hectares
green_raw_haurban green: summer 2025 minus summer 2024, hectares, without matched places
green_effurban green: the change in share minus the matched places’ mean change
green_eff_haurban green: that effect in hectares
green_verdicturban green: up, down, noise or refused
trees_2024_hatree canopy, summer 2024, hectares
trees_2025_hatree canopy, summer 2025, hectares
trees_raw_hatree canopy: summer 2025 minus summer 2024, hectares, without matched places
trees_efftree canopy: the change in share minus the matched places’ mean change
trees_eff_hatree canopy: that effect in hectares
trees_verdicttree canopy: up, down, noise or refused
built_2024_habuilt-up, summer 2024, hectares
built_2025_habuilt-up, summer 2025, hectares
built_raw_habuilt-up: summer 2025 minus summer 2024, hectares, without matched places
built_effbuilt-up: the change in share minus the matched places’ mean change
built_eff_habuilt-up: that effect in hectares
built_verdictbuilt-up: up, down, noise or refused
gapgreenness in 2024, the sector minus its matched places (above 0.04 in absolute value: refused)
comparableTrue when the matched places are comparable

Since the 2024 base, in hectares: summer 2026

CSV287 rows48 KBcomputed 2026-⁠09-⁠26

For each sector, urban green (the Regulation’s reading: trees, grass, shrub and water, not farmland), tree canopy and built-up ground in hectares in summer 2024 and summer 2026, and the change beyond noise against twelve matched places.

Threshold 0.0731CC BY 4.0

Download CSV ↓
Method, source and columns
Method
Each summer, the class with the highest mean Dynamic World probability wins each 10 m pixel; a class’s share of the sector times its area gives hectares. The effect is the sector’s change in share minus its matched places’ mean change (the most alike in 2024 by greenness and surface temperature, none closer than 1.5 km); times the area, hectares beyond what comparable places did.
Source
Dynamic World V1; Copernicus Sentinel-2 greenness and Landsat surface temperature of summer 2024 for the matching; Statbel sectors and population.
Threshold
Green 0.0731, canopy 0.0608, built-up 0.0616 (share of the sector's area): the 95th percentile of this run's own null distribution, each class and season on its own — every sector plays “intervention” once against its 12 matched places.
Limits
  • Hectares as Dynamic World classifies the ground: not the official CLCplus and Woody Vegetation layers, and not the land register.
  • One summer against another is noisier than a four-year window.
  • The raw hectares include the classes’ shift from one summer to the next; only the effect subtracts it.
  • A park that loses trees can read as more built-up when a mixed pixel changes class.
Licence
CC BY 4.0
Credit
  • Dynamic World V1 (Google, World Resources Institute), CC BY 4.0
  • Contains modified Copernicus Sentinel data (2016–⁠2026)
  • Landsat Collection 2 courtesy of the U.S. Geological Survey
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
communecommune
area_haarea, hectares
populationresidents
green_2024_haurban green, summer 2024, hectares
green_2026_haurban green, summer 2026, hectares
green_raw_haurban green: summer 2026 minus summer 2024, hectares, without matched places
green_effurban green: the change in share minus the matched places’ mean change
green_eff_haurban green: that effect in hectares
green_verdicturban green: up, down, noise or refused
trees_2024_hatree canopy, summer 2024, hectares
trees_2026_hatree canopy, summer 2026, hectares
trees_raw_hatree canopy: summer 2026 minus summer 2024, hectares, without matched places
trees_efftree canopy: the change in share minus the matched places’ mean change
trees_eff_hatree canopy: that effect in hectares
trees_verdicttree canopy: up, down, noise or refused
built_2024_habuilt-up, summer 2024, hectares
built_2026_habuilt-up, summer 2026, hectares
built_raw_habuilt-up: summer 2026 minus summer 2024, hectares, without matched places
built_effbuilt-up: the change in share minus the matched places’ mean change
built_eff_habuilt-up: that effect in hectares
built_verdictbuilt-up: up, down, noise or refused
gapgreenness in 2024, the sector minus its matched places (above 0.04 in absolute value: refused)
comparableTrue when the matched places are comparable

What’s missing

States, not changes: what a sector lacks today.

Everyday services within walking distance

CSV873 rows76 KBcomputed 2026-⁠09-⁠26

How well a sector serves three ways of living — a family with children, remote work, seniors — by walking access to fourteen everyday services.

No significance threshold: a stateODbL 1.0 (derived from OpenStreetMap)

Download CSV ↓
Method, source and columns
Method
Walking time from the sector's centroid on the OpenStreetMap walking graph; each service scored with a plateau-and-decay curve; public transport weighted by departures in the morning peak; a weighted sum per scenario; the percentile is Hazen's, over the city's sectors.
Source
Neighbourhood Fit Score pipeline: OpenStreetMap points of interest and walking graph, Statbel sectors, TEC timetables. OpenStreetMap from a Geofabrik extract of Belgium, data as of 2026-⁠09-⁠25T20:24:36Z.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • A state, not a measured change: never mix it with the effects above.
  • OpenStreetMap is not equally complete everywhere: a score reflects the map as well as the city.
  • The scenario weights are an editorial choice, not a measurement.
Licence
ODbL 1.0 (derived from OpenStreetMap)
Credit
  • © OpenStreetMap contributors, ODbL 1.0
  • Public transport stops and timetables: TEC open data
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
scenariofamily, remote or senior
scorethe scenario's score, 0–⁠100
percentilerank among the city's sectors, 0–⁠100
cafecafe sub-score, 0–⁠1
childcarechildcare sub-score, 0–⁠1
convenienceconvenience sub-score, 0–⁠1
gpGP sub-score, 0–⁠1
hospitalhospital sub-score, 0–⁠1
librarylibrary sub-score, 0–⁠1
parkpark sub-score, 0–⁠1
pharmacypharmacy sub-score, 0–⁠1
playgroundplayground sub-score, 0–⁠1
restaurantrestaurant sub-score, 0–⁠1
schoolschool sub-score, 0–⁠1
sportsport sub-score, 0–⁠1
supermarketsupermarket sub-score, 0–⁠1
transitpublic transport sub-score, 0–⁠1, weighted by departures

Bakeries, cafés and confectioners within reach

CSV291 rows10 KBcomputed 2026-⁠09-⁠26

The distance from a sector to the nearest bakery, café and confectioner, and how many of each lie inside it.

No significance threshold: a stateODbL 1.0 (derived from OpenStreetMap)

Download CSV ↓
Method, source and columns
Method
From the sector's representative point to the nearest venue of each kind, anywhere in the city, in a straight line (SpotFinder).
Source
SpotFinder pipeline: OpenStreetMap venues, Statbel sectors. OpenStreetMap from a Geofabrik extract of Belgium, data as of 2026-⁠09-⁠25T20:24:36Z.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • A state, not a measured change.
  • Straight-line distance, not along streets.
  • OpenStreetMap is not equally complete everywhere.
Licence
ODbL 1.0 (derived from OpenStreetMap)
Credit
  • © OpenStreetMap contributors, ODbL 1.0
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
bakery_mmetres to the nearest bakery
cafe_mmetres to the nearest café
confectionery_mmetres to the nearest confectioner
bakery_in_sectorbakeries inside the sector
cafe_in_sectorcafés inside the sector
confectionery_in_sectorconfectioners inside the sector

Summer heat

CSV291 rows14 KBcomputed 2026-⁠09-⁠26

The summer land surface temperature of each sector and how far it lies above or below the city's median sector.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The median of summer scenes 2022–⁠2025, Landsat 8/9 thermal band, cloud-masked with QA_PIXEL.
Source
Landsat Collection 2 Level 2 (ST_B10), Statbel sectors and population.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • Surface temperature, not air temperature.
  • Good for ranking sectors against each other; not for “it got cooler”: the threshold for a change in temperature came out at 1.32 °C, more than a realistic park effect, so cooling is not measured.
Licence
CC BY 4.0
Credit
  • Landsat Collection 2 courtesy of the U.S. Geological Survey
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
populationresidents
area_haarea, hectares
lst_summer_cmedian summer surface temperature 2022–⁠2025, °C
excess_over_city_cthat minus the city's median sector, °C

The 3-⁠30-⁠300 rule

CSV291 rows14 KBcomputed 2026-⁠09-⁠26

The two measurable parts of the rule: 30% tree canopy in the sector, and a park of at least one hectare within 300 m.

No significance threshold: a stateODbL 1.0 (derived from OpenStreetMap)

Download CSV ↓
Method, source and columns
Method
Canopy: the share of ESA WorldCover's tree class (10 m), pass at 30%. Parks: named OpenStreetMap polygons of 1 ha or more; a sector passes when half of its area lies within 300 m of one.
Source
ESA WorldCover v200 (2021), OpenStreetMap parks, Statbel sectors and population.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • The first part, three trees in view from every window, is not measured.
  • Private and closed gardens are not told apart from parks.
Licence
ODbL 1.0 (derived from OpenStreetMap)
Credit
  • © ESA WorldCover project 2021 / Contains modified Copernicus Sentinel data (2021) processed by ESA WorldCover consortium, CC BY 4.0
  • © OpenStreetMap contributors, ODbL 1.0
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
populationresidents
canopy_sharetree canopy share of the sector (WorldCover)
near_park_shareshare of the sector within 300 m of a park of 1 ha or more
passes_301 when canopy ≥ 30%
passes_3001 when at least half the sector is within 300 m of a park
passes_both1 when both parts pass

Residents by age

CSV284 rows16 KBcomputed 2026-⁠09-⁠26

Children under 15, adults, people aged 65 and over, and 80 and over separately.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The 2021 census by sector, sex and age, summed into four bands; 80+ is part of 65+.
Source
Statbel, Census 2021, table TF_CENSUS_2021_S01.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • The census date, not 2024.
  • Small sectors may be rounded by Statbel for privacy.
Licence
CC BY 4.0
Credit
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
population_censusresidents at the 2021 census
children_0_14children under 15
adults_15_64aged 15 to 64
seniors_65_plusaged 65 and over
seniors_80_plusaged 80 and over (included in 65+)
share_childrenchildren under 15, share of residents
share_seniorsaged 65 and over, share of residents

What to place

City Planner’s ranked places and the coverage they buy.

Where City Planner would place the next objects

CSV560 rows46 KBcomputed 2026-⁠09-⁠26

For fourteen kinds of public object, the forty best places ranked by City Planner; the first ten of each kind were named on 5 September 2026, the next ten are their comparison.

No significance threshold: a stateODbL 1.0 (derived from OpenStreetMap)

Download CSV ↓
Method, source and columns
Method
A greedy maximum-coverage solver over a demand grid weighted by deprivation, with a 500 m service radius: each next place is the one that covers the most unmet demand.
Source
City Planner pipeline: OpenStreetMap objects and points of demand, Statbel sectors, deprivation by sector. OpenStreetMap from a Geofabrik extract of Belgium, data as of 2026-⁠09-⁠25T20:24:36Z.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • A recommendation, not a measurement.
  • Ranks 11–⁠20 are slightly worse than 1–⁠10 by construction: as a comparison group they are conservative.
Licence
ODbL 1.0 (derived from OpenStreetMap)
Credit
  • © OpenStreetMap contributors, ODbL 1.0
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
  • Deprivation weights: Belgian Index of Multiple Deprivation 2011
ColumnWhat it holds
kindkind of object
rankplanner's rank, 1–⁠40
rolenamed (1–⁠10), comparison (11–⁠20) or further (21–⁠40)
lonlongitude, WGS 84
latlatitude, WGS 84
sectorStatbel sector the place falls in (empty outside the package)
scoreplanner's composite score
gap_scoreunmet demand the place covers, 0–⁠1
equity_indexdeprivation weight, 0–⁠1
named_atthe date the points were fixed
official_at_pointobjects of the same kind in the city's own register within the point's 50 m check radius (empty: no register of this kind)
official_within_500mthe same within 500 m, the planner's service radius
map_gap_500mof those within 500 m, how many the planner's OpenStreetMap did not have within 50 m: a gap of the map, not of the street (empty where that OSM was not kept)
out_of_checkTrue when an object already stood within the check radius by the register, so the point leaves the named-against-comparison check

Coverage after each of the next forty objects

CSV574 rows16 KBcomputed 2026-⁠09-⁠26

The share of demand within 500 m of an object, today (n = 0) and after each rank is placed: the curve under “What if N more?”.

No significance threshold: a stateODbL 1.0 (derived from OpenStreetMap)

Download CSV ↓
Method, source and columns
Method
From the same City Planner run as the ranked places.
Source
City Planner pipeline. OpenStreetMap from a Geofabrik extract of Belgium, data as of 2026-⁠09-⁠25T20:24:36Z.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • Coverage of demand points, not of residents.
Licence
ODbL 1.0 (derived from OpenStreetMap)
Credit
  • © OpenStreetMap contributors, ODbL 1.0
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
  • Deprivation weights: Belgian Index of Multiple Deprivation 2011
ColumnWhat it holds
kindkind of object
nobjects added, 0–⁠40
coverageshare of demand covered
service_radius_mservice radius, metres

Cross-checks

Independent instruments our tree class is checked against.

ESA WorldCover shares, a check on our tree class

CSV291 rows18 KBcomputed 2026-⁠09-⁠26

The share of each sector under trees, shrub, grass, built-up and bare ground, by a hard 10 m classification.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The mean of each class's mask inside the sector.
Source
ESA WorldCover v200, epoch 2021.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • One epoch, 2021: not a baseline and not a change.
  • Hard classes against Dynamic World's probabilities: compare the rank, not the value.
Licence
CC BY 4.0
Credit
  • © ESA WorldCover project 2021 / Contains modified Copernicus Sentinel data (2021) processed by ESA WorldCover consortium, CC BY 4.0
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
area_haarea, hectares
populationresidents
wc_treestree share
wc_shrubshrub share
wc_grassgrass share
wc_builtbuilt-up share
wc_barebare ground share

Proba-V tree cover, a third instrument

CSV291 rows9 KBcomputed 2026-⁠09-⁠26

The tree cover fraction of each sector from a different producer and sensor.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
The tree-coverfraction band, mean over the sector, 100 m grid.
Source
Copernicus Global Land Service, Land Cover 100 m (Proba-V, VITO), epoch 2019.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • Epoch 2019, and the series has ended.
  • On a 100 m grid small crowns in dense streets read as zero.
Licence
CC BY 4.0
Credit
  • Copernicus Global Land Service, Land Cover 100 m (Proba-V, VITO), epoch 2019
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
canopy_sharetree cover fraction

Sectors

The unit every file is joined on.

Statistical sectors

CSV291 rows19 KB

The unit every layer is joined on: each statistical sector with its commune, residents, area and centroid.

No significance threshold: a stateCC BY 4.0

Download CSV ↓
Method, source and columns
Method
Read from the city package: Statbel sectors with their 2024 population; the centroid is the polygon's.
Source
Statbel statistical sectors and population.
Threshold
No significance threshold: this layer is a state or a recommendation, not a measured change.
Limits
  • Sector boundaries are not included: download them from Statbel (statistical sectors, open data) and join on id.
Licence
CC BY 4.0
Credit
  • Source: Statbel (Directorate-General Statistics – Statistics Belgium), CC BY 4.0; aggregated and joined by Frondia
ColumnWhat it holds
idStatbel statistical sector code (the join key of every layer)
namesector name, as Statbel writes it
communecommune (municipality) the sector lies in
populationresidents (Statbel)
area_haarea of the sector, hectares
loncentroid longitude, WGS 84
latcentroid latitude, WGS 84