The 3: seeing three trees from your home

Does every home see at least three trees? For every tree in the province we calculated which spots within 30 metres can see it, taking buildings, hedges and terrain into account. Then every home gets the number of trees you can see just outside its facade.

85.9%of homes see ≥ 3 trees
5.0%of homes see no tree at all
1.8 millionhomes in 978,428 buildings
3.9 milliontrees calculated

Zuid-Holland, run of 8–9 October 2026.

What is measured?

The 3-30-300 rule (Konijnendijk, 2023) asks that everyone sees at least three well-established trees from their home, school and workplace. The paper does not say from what distance or from which window. For homes, we made that concrete as follows:

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. Collect the elevation model and trees per municipality. The elevation model is AHN4, 0.5 m, the raw version: a surface model that contains buildings, hedges and tree crowns, not just the ground. The trees are points from the NEO tree data. Per province all municipalities are combined into one elevation mosaic and one tree file.
  2. Cut the elevation model into tiles. Tiles of 500 × 500 m with an extra margin of 35 m. Trees and heights in that margin are included, but only the inner part is kept. That way the tiles fit without seams and a tree just across a tile or municipal boundary still counts. Holes in the elevation model (water, under bridges) are filled first (see choices).
  3. Per tree: where can it be seen? The observer stands at the top of the crown. GDAL's ViewshedGenerate determines for every 0.5 m cell within 30 m whether there is a clear line of sight to 1.8 m above the surface. Every visible cell gets +1. The result is a map in which every cell counts the number of trees visible from there.
  4. Find the homes. A BAG building is residential when at least one address (verblijfsobject) in it has a residential use and is in use. The number of homes in a building is the number of those addresses.
  5. Score per home. Around every residential building lies a ring of 1.5 m outside the facade, without the buildings themselves. The building's score is the highest value in that ring. Buildings without a free facade (fully enclosed) get no score.
  6. Summarise per municipality, district and neighbourhood. Every building goes to its current municipality and CBS neighbourhood (2025), based on its centre point. Per area: the share of homes with ≥ 3 visible trees, weighted by the number of homes per building.

Choices and why

ChoiceWhyAlternative we did not choose
Radius of 30 m The rule names no distance. 30 m is the radius of the earlier 3 analysis (QGIS/ArcGIS), so results stay comparable. At that distance a tree is still clearly recognisable as a tree. A larger radius counts distant trees you hardly experience as "a view of a tree" and makes the calculation much heavier.
Raw surface model (AHN4 DSM) Buildings, hedges and crowns must be able to block the view. In a ground model everything is open. AHN ground model (DTM): too optimistic. The classified AHN point cloud would be better, but is much heavier to process.
Observer at the top of the crown A tree is visible when you see its crown. The crown top is the highest point of the surface within 1.5 m of the tree (roofs do not count). With the observer on the tree point itself, it sits inside its own crown, which blocks the view: in Delft, 35.5% of the trees then saw practically nothing. The tree point + 1 m (ArcGIS default). One fixed tree height for all trees.
Height check: 0–35 m above the ground The elevation model does not know what a tree is. A power line or roof edge next to a tree can be measured as "crown". If the measured height above the local ground (lowest point within 5 m) is not positive or higher than 35 m, a fixed 1.7 m is used. That happens for fewer than 1 in 80,000 trees. The check is on height above the ground, not on NAP, because the province runs from −6 m to +40 m NAP. A check on NAP height (used earlier): it wrongly rejected 3% of Delft's trees.
Target height 1.8 m Eye height of a standing person. The same value as the surface offset in the ArcGIS method. Calculating per floor: not possible with one surface model (see limitations).
Score = highest value in a 1.5 m ring around the facade Within the outline of a building the surface model is the roof: "1.8 m above the roof" is not what a resident sees. Just outside the facade, 1.8 m is eye height. The highest value, because the rule asks whether you see trees from your home, not from every window. The average along the facade (penalises homes with one blind wall). Only the front facade (cannot be determined from the BAG).
Home = address in use with a residential use Homes above shops count too. Addresses still to be built ("gevormd") or out of use do not count: they are usually not in the elevation model. Buildings with a residential use in the BAG building data: too coarse for mixed buildings.
Classes 0, 1–2, 3–5, 6–7, 8+ The threshold of 3 is the rule itself; 0 and 1–2 show how far below a home is, 6–7 and 8+ how far above. The same classes as the QGIS validation project. Only meets / does not meet: hides the difference between 0 and 2 trees.
Margin of 35 m around every tile Must be at least the 30 m radius, or cells at the edge miss trees of the neighbouring tile. Without a margin, visible seams appeared in 10–12% of the area. Larger tiles without a margin: too much memory for the large municipalities.
Filling holes: interpolate small ones, lowest value for large ones GDAL treats a NoData value as a real height: a hole of −9999 becomes a cliff. Small holes (≤ 25 m) are filled from their surroundings, large open water gets the lowest point of the tile, so it never blocks the view. Interpolating everything: correct, but hours of computing time for coastal municipalities.
GDAL instead of ArcGIS Open source, scriptable and repeatable for any province. Tested against an exact line-of-sight test per cell: 95.5–99.7% of cells equal. With the same observer, ArcGIS Visibility, GDAL and the exact test give practically the same result. ArcGIS Pro (licence, hard to automate; the old engine behind Visibility fails on folder names with a digit and a hyphen).
Fewer than 10 homes: no percentage With very small numbers a percentage says little and can be traced back to individual addresses. —

Is this right for my home?

The map shows for almost 1.8 million homes how many trees are visible nearby. Per neighbourhood, district and municipality that gives a reliable picture: small deviations average out there. Per home the result is a good indication, but not a measurement on site. Is your home red or orange while you do see trees from your house? Then the difference is usually one of these:

The reverse can happen too: a home is green, but the trees cannot be seen from the living room, for example because they are at the back and the living room is at the front. The map says whether three trees can be seen somewhere around the home, not from which window.

Do you see an error that these points do not explain? Report it in the issues of the repository; that is how the map gets better.

Limitations and open issues

Code and sources

StepScript
Settings (radius, heights, tiles)etl/config.py
Download the BAG (PDOK)etl/download_bag_pdok.py
1. Cut tiles, fill holesetl/01_tile_dem.py
2. Visibility per treeetl/02_compute_viewsheds.py
3. Merge tilesetl/03_merge_tiles.py
4. Score per homeetl/04_score_buildings.py
5. Merge the provinceetl/05_merge_province.py
6. Per municipality, district, neighbourhoodetl/06_area_summaries.py
Technical backgroundARCHITECTURE.md
DataSourceAs of
Elevation modelAHN4, surface model 0.5 m, rawcaptured 2020–2022
TreesNEO tree data (purchased, not public)2020–2022
Buildings and addressesBAG via PDOK27 September 2026
Municipal boundariesAdministrative boundaries (Kadaster) via PDOK28 September 2026
Districts and neighbourhoodsCBS Wijk- en Buurtkaart 2025 via PDOK2025