Sign in

Swale

the ground paints itself, then it grows

Grow a planting on ground you actually measured, with the base layer painted by the site's own water. Gardener asks you to brush the moisture on; here the landform hands it over — Surveyor's 3DEP surface comes across the site pipe, priority-flood and D8 flow routing find where the water collects and where it leaves, and a wetness index, a heat-load proxy read off the aspect and a deposition proxy sort the plot into eight habitat bands. Then an individual-based stand plays out over decades ON that painting: nobody places a plant, so willows end up in the swale and bur oak on the dry south shoulder because that is what the ground allows. Your Eco Lounges field loads in beside it — plinths mask the planting, and every lounge reads back the band it stands in, how much of its footprint is in the wet, how far it is from the nearest channel and how much canopy has closed over it. Draw it either way: a 2-D PLAN, north up, with shaded relief, contours at a stated interval and a scale bar — the drawing a studio actually works in — or the 3-D model, for the section through the stand a plan cannot show. Both are the same run and the same marks, literally: every habitat band carries a hatch drawn the way a landscape drawing chooses one — broken horizontals for marsh, a running diagonal for a channel, stipple for the dry shoulder, tight cross-hatch for a steep face — and because every hatch is specified in WORLD METRES rather than pixels, the sheet is composed once and the model WEARS it, so the marks run down the slopes they describe instead of floating in front of them. Every field says its own algorithm on hover. Landform hydrology, not a drainage study. Client-side, no account.

Client-side: the terrain comes from your own Surveyor survey in this browser, and nothing is uploaded.

Demo landform
loading…

ft
% of plot

how much ground must drain through a cell before it counts as a channel

The sheet itself, flat and measurable: the hatch, shaded relief, contours, a scale bar. Drag to pan, scroll to zoom, double-click to fit.

How each band is hatched — method: Drawing convention, not data: each habitat band carries a hatch chosen the way a landscape drawing chooses one — broken horizontals for standing water and marsh, a running diagonal for a channel, an ordinary diagonal thinning as the ground dries, stipple for the dry shoulder and the ridge, tight cross-hatch for a steep face. Density falls as the ground dries, so the sheet lightens toward the ridge and the site's own gradient is visible without reading a legend. EVERY dimension — spacing, line weight, dash length — is in WORLD METRES, so the hatch is a texture ON the ground: it scales with the plot, holds its density at any zoom, and foreshortens correctly where the sheet is mapped onto the 3-D landform. The lattice is anchored to the world origin, so the pattern belongs to the site rather than to the window, and stipple is jittered by a hash of its own lattice index so it never crawls between frames.

How the landform is shaded — method: Shaded relief, not data: the standard hillshade — cos(zenith)·cos(slope) + sin(zenith)·sin(slope)·cos(azimuth − aspect) — lit from the north-west (315°) at 45° above the horizon, the cartographic convention; lighting it from anywhere else makes valleys read as ridges. This is the SAME function the 3-D ground is tinted by (lib/swale/marks.ts), not a second copy, so both views shade a given slope identically. It shades the RAW survey, hollows included, not the depression-filled surface the flow router runs on.

How a plant is drawn in plan — method: Each plant drawn at its own crown RADIUS for the year on screen, from the species' authored allometry — the plan mark a planting drawing uses. Shortest drawn first, so a canopy tree covers the sward beneath it. Overlap is real overlap: nothing is nudged apart to keep the drawing tidy.

How this wash is computed — method: Each cell is sorted into one of eight habitat bands in this order of precedence: what the ground refuses first (standing water, then slope too steep to hold soil), then whether it carries a channel, then how wet it ranks, then how hot it faces. Because the wetness is a rank within this plot, the bands describe THIS ground's own gradient — the wettest end of a dry site still paints as its marsh. The thresholds are authored teaching bands, not a published classification.

yr
/acre

stems sown per acre in year 0 — what the ground does with them is its business

Seed mix (16 of 16)

Where each row's numbers come from — method: Sixteen Eastern-tallgrass species laid along the moisture gradient. TWO of the four traits are sourced: shade tolerance and drought tolerance are the USDA PLANTS Characteristics database's own ORDERED CLASSES (Intolerant / Intermediate / Tolerant, None / Low / Medium / High), mapped onto 0–1 by the single table at the top of this file. EVERYTHING ELSE IS AUTHORED — the Gaussian moisture optimum and its width, the growth coefficient, the mature height and crown allometry, the longevity in years, the seed rain and the dispersal distance. They are a teaching model tuned to behave, not published figures, and nothing here should be cited as USDA data. Each species row repeats which half is which.

  • shrub · wants wet ground · to 10 ft — method: Moisture optimum 0.97 of 1 (± 0.12), shade tolerance 0.5, drought tolerance 0.1, mature 10 ft, lifespan ~40 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • sedge · wants wet ground · to 3 ft — method: Moisture optimum 0.95 of 1 (± 0.14), shade tolerance 0.5, drought tolerance 0.1, mature 3 ft, lifespan ~18 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants wet ground · to 66 ft — method: Moisture optimum 0.90 of 1 (± 0.16), shade tolerance 0.15, drought tolerance 0.3, mature 66 ft, lifespan ~65 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants wet ground · to 89 ft — method: Moisture optimum 0.82 of 1 (± 0.19), shade tolerance 0.5, drought tolerance 0.3, mature 89 ft, lifespan ~110 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants wet ground · to 108 ft — method: Moisture optimum 0.78 of 1 (± 0.18), shade tolerance 0.15, drought tolerance 0.55, mature 108 ft, lifespan ~220 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants mesic ground · to 79 ft — method: Moisture optimum 0.74 of 1 (± 0.17), shade tolerance 0.5, drought tolerance 0.55, mature 79 ft, lifespan ~300 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • shrub · wants mesic ground · to 9 ft — method: Moisture optimum 0.72 of 1 (± 0.17), shade tolerance 0.5, drought tolerance 0.3, mature 9 ft, lifespan ~30 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants mesic ground · to 98 ft — method: Moisture optimum 0.56 of 1 (± 0.16), shade tolerance 0.85, drought tolerance 0.55, mature 98 ft, lifespan ~300 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants mesic ground · to 85 ft — method: Moisture optimum 0.55 of 1 (± 0.15), shade tolerance 0.85, drought tolerance 0.55, mature 85 ft, lifespan ~180 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants mesic ground · to 26 ft — method: Moisture optimum 0.50 of 1 (± 0.18), shade tolerance 0.5, drought tolerance 0.55, mature 26 ft, lifespan ~60 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants mesic ground · to 72 ft — method: Moisture optimum 0.48 of 1 (± 0.20), shade tolerance 0.15, drought tolerance 0.55, mature 72 ft, lifespan ~120 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants dry ground · to 82 ft — method: Moisture optimum 0.38 of 1 (± 0.21), shade tolerance 0.5, drought tolerance 0.85, mature 82 ft, lifespan ~350 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants dry ground · to 89 ft — method: Moisture optimum 0.40 of 1 (± 0.16), shade tolerance 0.5, drought tolerance 0.55, mature 89 ft, lifespan ~250 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • tree · wants dry ground · to 46 ft — method: Moisture optimum 0.26 of 1 (± 0.20), shade tolerance 0.15, drought tolerance 0.85, mature 46 ft, lifespan ~150 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • grass · wants dry ground · to 7 ft — method: Moisture optimum 0.42 of 1 (± 0.22), shade tolerance 0.15, drought tolerance 0.85, mature 7 ft, lifespan ~20 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
  • grass · wants dry ground · to 4 ft — method: Moisture optimum 0.20 of 1 (± 0.20), shade tolerance 0.15, drought tolerance 0.85, mature 4 ft, lifespan ~16 yr. class from USDA PLANTS; the numeric niche + growth curve are authored.
No Eco Lounges field in this browser yet. Place some in Eco Lounges and re-read.
How the two tools meet — method: The lounges are read from the Eco Lounges tool's own autosaved field (ecolounges.field.v1) — the same plinth and wall footprints it draws, by the same corner maths. Built ground plus a 4 ft apron is masked out of the planting: nothing seeds on a plinth. Each lounge KEEPS the floor datum Eco Lounges gave it — both tools cut their terrain with the same extractor, which re-datums so the site centre sits at z = 0, so the two elevations are directly comparable — and its height above grade on THIS ground is reported rather than assumed. That comparability holds when both tools took the same Surveyor survey; on the demo landform each tool generates its own synthetic surface at its own span, so a lounge can sit well off this grade, and the read-back says so when it does. Swale never writes that field back.
Open Eco Lounges ↗
Reading the ground…
yr
Year 0 of 80
Canopy cover — method: ALL crowns first, then the woody half. A closed sward is itself a canopy by this measure, so the first figure counts grasses and sedges and runs high; the woody number is the one a planting plan is about. Estimated closure: crowns are splatted onto the grid mass-conservingly (so the figure reads the same at any resolution) and each cell's covered share is taken as 1 − e^(−crown layers). That is the Poisson expectation for randomly placed crowns, not a measured overlap — perfectly tiled crowns one layer deep would read 63%, not 100% — so read it as closure, not a planimetric count.
—
Live stems — method: Every living stem on the plot, then the woody half of it. The ground layer is counted in CLUMPS, not culms — a tussock or a bunchgrass crown is one stem here — so a closed sward is tens of thousands of them and the woody number is the one a planting plan is about.
—
Honest limits. This is landform hydrology, not a drainage study: D8 over a screening-resolution DEM says where water would run on a bare surface, and knows nothing about soil infiltration, storm sewers, culverts or tile drains. The moisture and fertility washes are a RANK WITHIN THIS PLOT — the wettest ground here, not wet ground in absolute terms. Terrain alone cannot say more without rainfall, soil and a water table, none of which this tool reads, so a bone-dry site still has a “marsh” band at its wet end. The species pool is small and stylised — the tolerance classes are USDA’s, the growth curves are ours. Nothing here is a planting plan.
Swale · Good Tools