The 30: at least 30% tree canopy in every neighbourhood

How much of a neighbourhood's land lies under a tree crown? We measured the area under crowns on a map with 25 by 25 cm cells from 2024, and divided it by the neighbourhood's land area.

8.1%of the land in Zuid-Holland lies under a tree crown
102of the 2,509 neighbourhoods reach 30%
0 of 50municipalities reach 30%; Wassenaar comes closest (27.9%)
2.5%lowest municipality (Kaag en Braassem)

Zuid-Holland; crowns in 2024, neighbourhoods and land area from CBS (2025).

What is measured?

The paper asks for at least 30% canopy cover in every neighbourhood, and adds that it is about the neighbourhood, not the city average. We calculate:

canopy cover = area under tree crowns ÷ land area × 100%

What the result assumes

The paper leaves open from where and how far to measure. The choices below fill that in and make the most difference to the figures. Each says which way it pushes the result; the reasons are under "Choices and why".

Steps

  1. Where are the crowns? Friedenau Society's Boomkroonbedekking 2024 (BKB 2024) divides all of the Netherlands into cells of 25 by 25 cm and says for each cell whether a tree crown hangs over it. The map was made from lidar: laser height measurements from an aircraft.
  2. Neighbourhoods. The municipalities, districts and neighbourhoods are those of the map, from the CBS Wijk- en Buurtkaart 2025, so the 3, the 30 and the 300 are shown on exactly the same polygons.
  3. Count the crowns per neighbourhood. Each cell belongs to the neighbourhood that holds its centre. A crown on a boundary therefore counts for the part that lies in each neighbourhood, and nowhere twice. Districts and municipalities are the sum of their neighbourhoods; for Delft we checked that this gives exactly the same result as clipping the districts and the municipality themselves.
  4. Divide by the land area. The land area also comes from CBS (2025). Area under crowns ÷ land area × 100%.

Choices and why

ChoiceWhyAlternative we did not choose
Per CBS neighbourhood The paper asks for 30% per neighbourhood. The CBS buurt is the smallest official unit that comes closest to that, and it is the same nationwide, so comparable between municipalities and provinces. A grid or a radius around every home: more precise per home, but no longer "the neighbourhood" of the rule.
A crown map from lidar The rule is about cover: how much ground lies under a crown. The map measures that directly. Overlapping crowns count once, just as the ground under them exists only once. Adding up crown polygons per tree (the earlier calculation, see below): overlapping crowns then count twice.
The centre of a cell decides the neighbourhood Every bit of crown counts in exactly one neighbourhood. With 25 cm cells a boundary is at most 12.5 cm off; in Delft the counted area differs from the true area by at most 4 m² per neighbourhood. Counting a whole crown in every neighbourhood it touches.
Dividing by land area No trees grow on open water. A neighbourhood with a lake or river would otherwise come out unfairly low. Total area including water.
Crowns 2024, neighbourhoods 2025 The crowns and the areas are from almost the same year, and the neighbourhoods are the same as on the map. Older neighbourhood boundaries, which would first have to be carried over.
Colours: < 10, 10–20, 20–30, ≥ 30% 30% is the rule's threshold; the steps in between show how far a neighbourhood is from it. —

Compared with the earlier calculation

The 30 used to come from a calculation with the crown polygons of the NEO trees (2020–2022), on the CBS neighbourhoods of 2023. It always gave higher values: higher in all 39 municipalities for which that calculation was complete, usually by about 23% (median). In Delft it was 24.7% against 21.0% now. The pattern does agree: which municipalities score high and low is almost the same (correlation 0.99).

The difference probably comes mostly from how crowns were counted. The old calculation counted every crown that touched a neighbourhood in full, so crowns on a boundary counted in two neighbourhoods, and it added up the areas of overlapping crowns. In Delft the difference per neighbourhood grows with the length of its boundary and with the amount of crown in it. The years also differ: the NEO crowns are from 2020–2022, the crown map from 2024. The old calculation also had no values for Voorne aan Zee and parts of Schiedam, Leiderdorp, Westland, Pijnacker-Nootdorp and Delft, because of an error with neighbourhood codes; those areas now have a value.

Limitations

Code and sources

StepScript
Count crown cells per neighbourhoodetl/bkb_per_gebied.py
Per neighbourhood, district and municipality, with land areaetl/kroonbedekking_gebieden.py
Map tilesweb/build_tiles_30_300.py
DataSourceAs of
Tree crownsBoomkroonbedekking 2024 (BKB 2024), Friedenau Society, from lidar, 25 cm cells2024
Municipalities, districts, neighbourhoods and land areaCBS Wijk- en Buurtkaart 2025 via PDOK2025