This tool relies on drag-to-orbit and pinch-to-zoom over a real 3D scene, and needs a tablet or desktop display to be usable. Please open it on a larger screen.
Joe.K · axisbim.io
STAND
NYC's Street Trees, Grown From the Census
— trees loaded
Fetching live sample from NYC Open Data…
▲N
Drag to orbit · right-click or two-finger drag to pan · scroll or pinch to zoom in for real branch structure · tap a tree for its record
What am I looking at?
Every structure in this scene is grown from one real tree record in one of NYC's decadal
Street Tree Censuses
(2005 or 2015 — pick one under Census year), fetched live from NYC Open Data. Species, trunk diameter, health, and location all come from the real record —
nothing is invented except the branch shape itself, which is procedurally grown (seeded per tree, so the same
record always grows the same shape).
Reading the map
Outlines are the official NYC borough boundaries — water is already excluded, so gaps between shapes are rivers/harbor, not missing data.
The blue underneath is a rendered water base, not photography — it's there so land reads as solid against the harbor and rivers.
The tan land beyond the boroughs — New Jersey (west), Westchester (north), and Long Island's Nassau/Suffolk counties (east) — is geographic context only, none of it has tree data of its own. Long Island's real coastline extends past the default view; pan or zoom out to see the North and South Forks.
Canopy color — Health: green = Good, ochre = Fair, red = Poor, grey = Unknown.
Canopy color — Species: each species gets a consistent hue; the legend below the map shows the top species in the current sample.
Legend swatches are toggles: click any entry in the legend to hide every tree in that category (trunk and canopy) from the map; click again to bring it back. A "reset filters" link appears once something is hidden.
Canopy color — Season: purely a display style, not real census data — each tree is recolored for Spring/Summer/Fall/Winter. Pick a season from the legend below; there's nothing to toggle here since it's not a per-tree category.
Census year switches the entire sample between the 2005 and 2015 censuses — same borough/filters, different decade. The two years have slightly different source schemas (2005 has no separate alive/dead flag, for instance), normalized to the same fields shown everywhere else in the app.
Watch it grow animates a crossfade from the 2005 census to 2015 instead of an instant swap — the old canopy fades out as the new one grows in. It's a real transition between two independently-sampled censuses, not a per-tree growth simulation: NYC's censuses don't share a consistent ID across years, so there's no way to know which 2015 tree (if any) corresponds to a given 2005 one.
Trunk size filters by real trunk diameter (Young/Semi-mature/Mature) — independent of and combinable with whatever's in the Canopy color legend above.
Branch diameter and depth scale with the tree's real trunk diameter (DBH) — bigger, older trees grow taller, more branched structures. Branch geometry only renders once you're zoomed in close; from farther out, canopy switches to a sparser, crisper dot set built specifically to stay legible at that distance rather than blur into a solid mass.
The scale bar and borough labels are derived from the real lat/long projection, not estimated.
Controls
Orbit: click/touch and drag.
Pan: right-click drag, shift+drag, or two-finger drag.
Zoom: scroll wheel or pinch.
Recenter: snaps the camera back to the current view preset, undoing any pan/orbit/zoom.
View — 3D / Plan: switch between an oblique angle and a true top-down map view.
Compass dial (top-right of the map): click to reset orientation to north-up without changing zoom or pan.
Tap a tree: any canopy point can be tapped/clicked to show that tree's real record — species, trunk diameter, health, borough, census year, and tree ID.