West Contra CostaOpen map ↗

THE EVIDENCE BEHIND THE MAP

Build the case for
your next tree investment.

Find where shade investment deserves attention, test your priorities, and put an initial scale of planting beside the evidence. Here’s how each feature supports that decision.

For urban forestry, climate planning and public works · Methods reviewed September 13, 2026
Sources and data vintages are listed by topic.

Start here

About this study area

West Contra Costa: Richmond, San Pablo, El Cerrito, Pinole, Hercules and the unincorporated places between them, at seven times the county map’s resolution.

What it covers

The west side of Contra Costa County: five cities (Richmond, San Pablo, El Cerrito, Pinole, Hercules) and eleven unincorporated communities (North Richmond, El Sobrante, Rodeo, Crockett, Kensington, Tara Hills, Montalvin Manor, Rollingwood, Bayview, East Richmond Heights, Port Costa), as drawn by the Census. 982 ranked areas of about 0.04 square miles each, home to an estimated 271,620 people. The county map covers the same ground at 0.3 square miles per area; this build was cut from it because these places hold 60 of the county’s 100 highest-need areas and the county grid could not say where inside them.

What the data shows

Half of residents (51%) live in areas with under 10% tree cover; the population-weighted average is 13%. The highest-need areas under the recommended mix cluster in San Pablo and the Richmond flats: San Pablo SW ranks first, followed by three more San Pablo areas and Richmond NE. Home air conditioning varies more here than in any other build, from 46% to 82% of homes by Census estimate, so it carries real weight. Use the list’s “Show” menu to see one city at a time, and the “Stable top tier” filter to keep only areas whose top-tier place survives the rank-stability re-draws: of the 99 top-tier areas, 73% stay there in at least 80% of draws.

How it differs from the county map

Surface heat is scored here (35%) and not on the county map. That is a measurement, not a preference: within West County, position explains only 11% of the variation in summer surface temperature (39% county-wide), and hotter areas are the barer ones. Surface heat has the numbers. Residents are placed inside each block group by mapped building floor area, because the OpenStreetMap building mask passed its completeness check here (Population).

Where the data is weakest
Tree cover: 974 of 982 ranked areas use the 2022 aerial assessment; 7 fall back to the 2009–2020 height model, 7 to the county’s lidar vegetation map (CDFW 2025) and 1 to a satellite greenness stand-in, all labeled in the detail panel and the list. Every source was checked against that lidar map; see “Tree canopy”. Cooling: 39 mapped cool places and 3 county-listed sites (Hercules, Pinole and Richmond senior centers); the routed median walk for ranked areas is 21 minutes. No 1930s redlining map exists for Richmond, so the historical layer is absent rather than empty. Rank bands: the median area’s likely-rank band is 127 ranks wide out of 982, so treat rank differences smaller than an area’s band as noise.

Planning note This is a screening map from public data, built by a student and not reviewed by any city or county. Use it to choose where to look first; confirm ownership, existing trees, utilities and planting space on the ground.

Start here

From a map to a defensible shortlist

Find where canopy investment deserves a closer look, then explore the scale of a street-tree intervention.

Use it to

Turn a study-area canopy map into a focused conversation about where to invest. A city team can shortlist areas for field assessment, compare policy priorities, and estimate the scale of a street-tree program in one place.

Why this approach

We bring canopy, residents and home-cooling context onto the same grid so staff can compare areas without assembling separate maps. The workflow connects a priority to its evidence and a planting scenario.

Source & calculation details
1. Choose a ranked area. 2. Read its metrics. 3. Adjust the planting share. Use Explore to compare layers or change ranking weights. The map, list and score breakdown update together.

Planning note Use the shortlist to scope an assessment; confirm site feasibility and local costs before committing funds.

Priorities

Priority score & ranking

A relative 0–100 index of where canopy investment may be most needed in this study area.

Use it to

Build a first-round investment shortlist that accounts for both missing shade and the people living with it. Open any area to explain the drivers behind its position in a budget or program-scoping discussion.

Why this approach

An additive score makes each input’s contribution inspectable. Canopy carries the largest default share because this product prioritizes tree investment; A/C and age add resident context. Population adjusts potential reach. These are explicit project policy choices, not externally prescribed weights.

Source & calculation details
Defaults: 35% surface heat + 35% missing canopy + 15% lack of A/C + 15% age 65+. Inputs are scaled to 0–1; protective inputs enter as 1 − scaled value. Multiply the sum by (0.55 + 0.45 × scaled population), then rescale residential results to 0–100. The pipeline clips the low-need tail: heat and age at p2, canopy and A/C at p98; population saturates at p98. Exact endpoints ship in the GeoJSON norm object.

Planning note Scores compare residential cells within this study area; they are not health-risk probabilities or cross-city rankings.

Rank stability A rank is an estimate with a band, not an exact position. 05b_stability.py re-draws each block group’s population and residents 65+ and each tract’s A/C estimate inside their published 90% margins of error (neighbouring areas cut from the same block group move together), jitters each non-zero recommended weight by ±10 points, and re-ranks; 300 draws. The detail panel shows each area’s 5th–95th percentile rank and how often it lands in the top tier (best 99 of 982). In this build the median band is 127 ranks wide, and of the 99 top-tier areas 73% stay top-tier in at least 80% of draws. Surface temperature and tree cover are held fixed (measurement error, no per-area margin published), as is the allocation of residents within a block group. Treat rank differences smaller than an area’s band as noise; use the top-tier share to shortlist.

Priorities

Presets & custom weights

Ask a different policy question and see the shortlist change.

Use it to

Test whether a proposed focus area remains a priority when staff emphasize shade, older residents or access to cooling. Use presets to structure a policy discussion instead of treating one ranking as the only answer.

Why this approach

Editable weights expose the value judgments behind a composite index. The JRC’s guidance supports examining rankings under alternative assumptions; it does not endorse our particular presets. Normalizing weights keeps their relative contribution explicit.

Source & calculation details
Recommended mix is the shipped model. Trees only isolates tree cover and population. Heat only isolates surface heat and population. Older residents emphasizes age; Homes without A/C emphasizes A/C; Far from cooling adds walking time. Most people raises the population multiplier. Input sliders are normalized to sum to 100%; the population slider changes the separate multiplier. Reset restores the defaults.

Count people more (the population multiplier)

The four condition sliders say what counts; this slider says how much the number of residents counts. Each area first gets a need figure from its conditions. That figure is then multiplied by a factor that runs from (1 − P) for the least-populated area up to 1 for the most-populated, where P is the slider. At P = 0% every area is judged on conditions alone. At the recommended 45%, the most-populated area counts about 1.8× the least. At 100%, an area with almost no residents scores near zero whatever its heat or shade, because there is almost nobody there to help. Population is normalized between the 2nd and 98th percentile of ranked areas, so one very crowded area does not flatten everyone else.

Worked example
Two areas with the same conditions score 0.60 before population. One holds 1 resident (near the bottom of the range), the other 2,346 (near the top). At P = 45% the first is multiplied by about 0.55 and the second by about 1.0, so they score 0.33 and 0.60: the populous area ranks well ahead. At P = 0% both stay at 0.60 and tie. At P = 90% the small one falls to 0.06.

Planning note Presets represent alternative priorities. They change rankings, not planting costs.

Data

Surface heat

Satellite surface temperature, not the air temperature people breathe.

Use it to

See the outdoor thermal context around proposed investments and compare it with canopy gaps. The separate heat view helps staff distinguish a shade-priority question from a surface-heat question.

Why this approach

Landsat provides a repeatable, spatially consistent thermal record. Summer medians reduce dependence on a single scene. Heat is scored here, unlike the county map: within West Contra Costa, position explains only 11% of the variance in summer surface temperature (39% county-wide) and surface heat tracks missing greenness (r = −0.64), so a hotter area here is mostly a barer one.

Source & calculation details
Landsat 8/9 Collection 2 surface-temperature band ST_B10, via Planetary Computer; medians of summer scenes in 2022–2024. Mid-morning overpasses sample particular clear-sky days, not the hottest afternoon or a continuous record.

Planning note Surface temperature is not air temperature or a live heat alert. Current scenes cover summers 2022–2024.

Data

Tree canopy

The share of assessed ground covered by tree crowns.

Use it to

Locate shade deficits and establish a baseline for scoping a canopy assessment. Staff can compare canopy coverage across candidate areas before choosing where to investigate street-tree opportunities.

Why this approach

The USFS/CAL FIRE aerial canopy classification targets tree crowns, which fits a shade-investment question more directly than general greenness. Equal-area aggregation preserves ground-area proportions; the assessed urban boundary defines the denominator. Validation. All 980 ranked areas the map covers were compared with the CDFW 2025 lidar vegetation map (returns above 4.6 m): the aerial product tracks it at a rank correlation of 0.90 (0.95 on fully assessed areas). Seven areas the aerial product could not assess use the lidar canopy directly (“trees · lidar”); one still uses a greenness stand-in.

Source & calculation details
Primary layer: USFS/CAL FIRE California Urban Tree Canopy, 2022 NAIP aerial classification at 0.6 m native resolution. The pipeline aggregates canopy pixels in equal-area coordinates and clips denominators to assessed urban boundaries. Rural fringe uses the Meta/WRI canopy-height fallback where available. Where canopy remains missing, the pipeline retains Sentinel-2 vegetation; green_src identifies canopy versus ndvi in the exported data. The current build has 982 canopy-backed residential cells (975 from the 2022 aerial assessment, 7 from the 2009–2020 height model with tile coverage recorded) and 8 vegetation-proxy cells, all of them cells whose aerial assessment covered under 10% of the cell (canopy_quality = below-threshold), which is treated as unassessed. canopy_source distinguishes usfs-2022, chm-legacy and none; coverage_frac gives the assessed share where known. Legacy height-map tile coverage is recorded per cell (coverage_frac) since the September 13, 2026 rebuild; every cell was read in full. The tree-canopy layer renders missing canopy in gray; the separate greenness layer covers all cells.

Planning note Canopy coverage uses aerial and height-map sources; 131 ranked cells use a vegetation proxy for scoring, labeled in cell details; an aerial assessment covering under 10% of a cell is not used. Percentages describe assessed cover, not individual trees or verified planting space.

Data

Population

Estimated residents allocated into map cells from larger census areas.

Use it to

Bring the scale of resident need into investment decisions. Population helps distinguish a sparsely occupied canopy gap from an area where a similar gap affects the surroundings of many more residents.

Why this approach

ACS five-year data supplies population, age and income on a consistent small-area geography. In West Contra Costa, residents are placed within each block group by mapped residential floor area (dasymetric weighting; the OpenStreetMap building mask passed the completeness check at 0.63 coverage with no material income bias). That is the reason for this allocation choice.

Source & calculation details
ACS 2024 five-year estimates (2020–2024), at block-group level, intersected with the study area and cells. West Contra Costa allocates population within each block group by mapped residential floor area (dasymetric weighting). The OpenStreetMap building mask passed the completeness check: 0.63 buildings per housing unit study-wide, with a 1.5× richest-to-poorest coverage ratio, under the 2.0 limit.

Planning note Cell populations are allocated estimates, not household counts. Published ACS margins of error are retained with the source data; they are not yet propagated into score uncertainty.

Data

Residents aged 65+

An estimated, smoothed share of older residents.

Use it to

Bring older residents into the shortlist for shade investment and outreach planning. The seniors preset lets staff see how prioritizing this population changes the areas they would investigate first.

Why this approach

CDC identifies adults aged 65+ as more susceptible to heat-related problems, supporting age as one input. The project smooths small-cell percentages to avoid unstable extremes; the 100-person smoothing strength is a design choice, not a CDC recommendation.

Source & calculation details
Start with ACS block-group population aged 65+, allocate to cells, then smooth: (estimated residents 65+ + 100 × the study-area-wide age-65+ fraction) ÷ (cell population + 100). The displayed percentage and score use this smoothed result.

Planning note Shares are smoothed area estimates. They do not identify individual residents or their health needs.

Data

A/C access

Census estimates of occupied homes with air conditioning.

Use it to

Identify areas where limited home cooling adds a reason to investigate shade and public cooling access. This gives the investment discussion a housing dimension alongside canopy and population.

Why this approach

Census LACE combines AHS air-conditioning information with the ACS’s geographic coverage to estimate prevalence at tract scale. We chose it to use a documented, cooling-specific national product instead of treating local income rank as A/C availability.

Source & calculation details
US Census LACE 2023 AC_PE, joined by tract and aggregated using allocated occupied housing units from ACS 2024 B25003_001E. Each overlap contributes occupied homes × overlap fraction; A/C homes = that count × tract rate / 100. The cell rate is summed A/C homes ÷ summed occupied homes × 100. LACE is an experimental modeled product drawing on the American Housing Survey and ACS. The pipeline retains an income-rank fallback where estimates are unavailable; ac_src now explicitly records lace or income-model. ac_coverage records the share of allocated occupied homes with a valid LACE estimate; incomplete coverage does not become a zero-A/C observation. Every currently ranked residential cell is LACE-backed.

Planning note Experimental tract estimates, weighted by occupied homes. It does not establish working or affordable A/C in a particular home.

Data

Walking access & potential cooling sites

Estimated walking time to a discovery site, with an official county directory alongside.

Use it to

Screen for areas where residents may face a long walk to a potential cooling facility. Use the map to focus a facility-verification exercise or a discussion about where additional relief may be needed.

Why this approach

OSM provides facility locations and a pedestrian graph in a common, reproducible source. Shortest-path routing represents mapped street connections more realistically than straight-line distance alone. This is a facility-access screen, not an emergency service directory.

Source & calculation details
The study-area file contains 39 mapped sites across library, community center, pool and senior/shelter categories. The walking pipeline uses an OSM pedestrian graph, multi-source shortest paths, straight-line snap distances at both ends, and 4.8 km/h. Revised September 9, 2026: streets tagged access=private (gated and private subdivisions) are now part of the graph, because residents can walk out of their own subdivision, and each cell center and each site is joined to its eight nearest network nodes with the best door-to-door total kept, so a point no longer snaps to an isolated footpath when a street is a few meters further. A cell whose only nearby network is a fragment (fewer than 40 nodes within 2 km, such as farm tracks) is treated as off-network and shows the straight-line estimate, labeled. In this study area the routed median walk for ranked areas is 21 min; no cell needed a straight-line estimate, and 6 cells carry a detour-review flag because the route is more than three times the straight line (a barrier, or a remaining map gap). The shipped model puts no weight on walking time, so no score or rank changed. All 2,651 cells in the current overlay CSV are labeled routed.

Planning note Verify designation, hours, fees and accessibility. Category filters change markers only; walking estimates remain based on all mapped sites.

County-listed cooling locations and phone numbers ↗

The county EHSD bulletin lists 17 designated locations and asks visitors to call for hours. Its June 2026 revision says El Cerrito and Kensington libraries lack A/C; both are excluded from our discovery inventory and rerouted access calculation. The directory is not an open-now feed. access_snap_m records the straight-line cell-to-network connection; connections over 100 m are flagged for approach review, without implying that shorter approaches are verified. Walking estimates still use the remaining 39 discovery sites, not just the official directory.

Scenarios

Street planting share

Choose how much of the theoretical mapped street capacity to explore.

Use it to

Translate a priority area into a concrete program-scale question: what would planting a quarter, half or all of the mapped street capacity involve? Compare tree counts, canopy gain and indicative cost before commissioning site surveys.

Why this approach

Street length connects the scenario to a physical intervention that a public-works team can investigate. Both sides at 10 m spacing gives a transparent, repeatable capacity assumption. It is a project scenario convention, not a verified spacing requirement for every street.

Source & calculation details
Capacity = floor(mapped eligible street centerline meters × 2 ÷ 10). Trees = round(capacity × selected share / 100), capped by cell area minus known aerial canopy area, divided by 40 m². With a usable whole-cell baseline, its remaining-canopy ceiling also applies. Surviving trees = round(trees × survival share), with the share editable beside the cost (default 70%). Added canopy percentage points = surviving trees × 40 ÷ cell area × 100; cost counts every planted tree. A change from 10% to 15% canopy is +5 percentage points, not a 5% relative increase. Scenarios require mapped street capacity, not 99% accuracy. Tree counts, cost, added canopy and illustrative air cooling are conditional on feasible planting and new, non-overlapping crowns. The remaining-area ceiling subtracts known aerial canopy without extrapolating partial coverage over unassessed land. A whole-cell current-to-future canopy total is shown only with at least 99% aerial coverage; otherwise only added canopy is shown. The slider starts at 25%; zero means no planting. Choices persist during unit and weight changes for this session.

Planning note Capacity is theoretical; confirm ownership, existing trees, utilities and space. Partial and unknown canopy coverage allow conditional scenarios; they do not establish a reliable future total or verified planting capacity.

Scenarios

Trees, maturity & cost

An indicative scale of investment; no financial return is calculated.

Use it to

Put an initial scale of investment beside the shortlist. A shared unit-cost and crown-area assumption lets staff compare scenarios consistently and prepare questions for arborists and procurement teams.

Why this approach

A linear model makes every dollar and canopy increment traceable to the tree count. The cost per tree is a band, not a point: no Contra Costa contract price is published online, so the app offers three sourced presets and lets you type your own. The 40 m² mature crown is a planning assumption.

Source & calculation details
Scenario cost = planted trees × the cost per tree, planting-side only; pruning after establishment, sidewalk repair and replacement are not costed. Three presets, from published California figures (September 2026): Low $500, planting only by city crews with no separate establishment budget, which is Bakersfield’s own estimate (its $500,000 budget funds “roughly 1,000 trees”); Base $2,000, planting plus about a year of establishment care, or a grant program’s all-in average (Concord’s USDA grant: $1 million for 500 trees including a plan and workforce); High $3,500, planting plus three years of watering and program overhead (San Francisco’s 3500 Trees project: $12 million for 3,500 street trees; Los Angeles Public Works reported $4,351 per tree with five years of watering in 2022). The default is the low band so older briefings and scenario files reproduce; the number you set is written into every export. Assume 40 m² of additional mature crown per tree. Canopy and cooling are credited only to the share of planted trees assumed to reach maturity (default 70%, editable; scenario files record it). That default is a planning placeholder: the US Forest Service’s monitoring of the Sacramento Shade program found 42.4% of trees alive 22 years after planting (Ko, Lee, McPherson & Roman 2015), and Berkeley and Oakland cohorts lost 34% in two years, so a program without a watering budget should test lower values. Crown area is an assumption, not a detected tree count; additive canopy assumes no overlap.

Planning note Indicative cost at assumed maturity; not a bid, lifecycle budget or financial ROI. Growth, survival and crown overlap are not modeled.

Scenarios

Illustrative air cooling

A literature-based scale estimate of possible cooling at maturity.

Use it to

Connect tree investment to cooler streets and shade where people walk and wait. Added crowns can reduce direct sun and surface heating; the air-cooling number describes a different, area-wide effect and does not capture the full benefit of standing in shade.

Why this approach

A review of urban cooling simulations estimates about 0.3 °C of afternoon air cooling per 10 percentage points of canopy under clear-sky summer conditions. We use that relationship for an illustrative scenario, separate from the satellite surface-temperature layer.

Source & calculation details
Apply 0.3 °C air-temperature reduction per 10 percentage points of added canopy: cooling = canopy gain ÷ 10 × 0.3. Krayenhoff et al. (2021) synthesize higher-quality numerical modeling studies at this approximate scale. The coefficient describes clear-sky summer afternoons, not annual average cooling or a calibrated local response. Fahrenheit differences multiply by 1.8, without adding 32. This is air cooling, not surface cooling. For example, +5 canopy percentage points gives an illustrative 0.15 °C air reduction. Research comparing tree-covered surfaces with built surfaces does not provide a transferable per-tree forecast for this cell; no surface-temperature change is currently modeled.

Planning note Literature-based illustration at maturity, not a locally calibrated forecast or a count of residents cooled.

Data

Cells, names & unranked land

Hexagons are consistent analysis units, not census blocks or neighborhood boundaries.

Use it to

Compare the same geographic units across all map layers. A consistent grid helps staff move from a study-area overview to an identifiable area for follow-up without changing the unit of analysis.

Why this approach

H3 cells give each area a stable identifier and allow different source geographies to be combined. Keeping developed and undeveloped cells visible preserves geographic context while residential-only ranking keeps the shortlist aligned with resident priorities.

Source & calculation details
H3 resolution 9, about 0.11 km² per cell; exact geodesic areas are stored per cell. Current build: 982 residential, 228 developed without residents and 1,441 undeveloped cells (much of it Bay water inside city limits), totaling 2,651. Residential means estimated population ≥ 1. Development uses OSM street-length/building thresholds. Names are approximate OSM locators, sometimes with compass suffixes. Each cell also carries the city or census-designated community that contains its center (Census TIGERweb place polygons, step 04d); the list’s “Show” menu limits the list and fades the map to one of them, and exports carry it as city_or_community. A cell on a city line is attributed to one side at the precision of the cell itself.

Planning note Cells are not census blocks or neighborhood boundaries. Place names are approximate; gray means unranked.

Priorities

What this build found

Headline numbers for West Contra Costa, computed from the current data file.

Use it to

Open a conversation with one or two figures that are easy to check against the map, then inspect the candidate areas directly.

Why this approach

These figures use only the tree-cover and population fields shown on the map, weighted by residents so that a populous area counts for more than an empty one. They are independent of the composite score and its weights.

Source & calculation details
In this build 51% of the 271,620 estimated residents live in ranked areas with under 10% tree cover (aerial and height-model sources only; greenness stand-in areas are excluded from the count). The population-weighted average tree cover across ranked areas is 12.6%; the simple average is 13.6%. Richmond alone has 92% of its residents in areas under 10%. No income comparison has been run for this study area; the county guide’s earlier income headline does not apply here.

Planning note These are screening figures from allocated census estimates and an aerial canopy product, not a tree inventory.

Data

Historical redlining

Historical context appears only when the dataset contains usable HOLC grades.

Use it to

Keep historical context available where the data supports it, without distracting the current investment workflow with an empty layer.

Why this approach

The application checks for actual HOLC grades before offering the control. Mapping Inequality is the documented historical source; Contra Costa has no graded cells in this build.

Source & calculation details
The Contra Costa map file has no graded cells, so its historical heading and redlining control are hidden. HOLC data elsewhere comes from Mapping Inequality. Walking access remains a separate feature.

Planning note No HOLC layer does not imply no history of discrimination.

Using the map

Layers, units, basemaps & session state

Explore changes the map view; weights change the ranking; planting share changes the scenario.

Use it to

Move from a quick shortlist to detailed exploration at your own pace. Switch layers to inspect evidence, adjust weights to test priorities, and change the planting share to scope an intervention.

Why this approach

Simple and Explore separate routine review from advanced controls. Units and basemaps change presentation only. Contextual guide links preserve the map in its original tab, so checking a method does not interrupt the scenario.

Source & calculation details
Simple shows priorities and a searchable area list. Search approximate place names or cell IDs and use Previous / Next 25 to browse all 982 ranked residential cells. Explore exposes layers, presets, weights and site filters. Darker colors generally indicate greater need; tree canopy uses brown for low canopy. Gray and muted cells are unranked. Metric/imperial is display-only. Map/satellite changes background imagery. How to use reopens help at any time; the help card can be dragged, or moved with the arrow keys. Every “i” button opens a short plain-language card with a link to the matching guide topic. Explore is arranged as three numbered steps — what matters most, color the map by, places to cool off — followed by the legend and the priority list, which can be folded away; the ranked list marks how far each area moved whenever the mix is not the recommended one. Reset map returns to the zoomed-out Priority view without touching your mix. Fahrenheit and miles are the default.

Planning note Your mix of priorities and the map layer are kept for this browser tab: a reload lands where you were, and the home button returns to the start screen without resetting them. A new tab starts fresh at the start screen. Planting shares last for the current page session.

Using the map

Sorting, filtering and searching the list

Sort re-orders the Priority areas list by one measure; rank badges and the map never change.

Use it to

Read the same ranked list from a different angle: the most people first, the hottest ground first, the least tree cover first, the longest walk first. Filters narrow the list to areas that meet a threshold; search finds one area by name or cell number.

Why this approach

The rank badge is the answer to the question set under What matters most, so it stays fixed. Sorting is a reading aid, which is why the count line says what the list is sorted by and in which direction whenever it is not in rank order.

Source & calculation details
Sort options. Need: the priority score under the current mix, the same order as the rank badges. Residents: estimated people living in the area (ACS, allocated into the hexagon). Surface heat: summer late-morning land-surface temperature from Landsat (about 10:30 am overpass). Tree cover: share of assessed land under tree crowns (or the greenness index where no aerial assessment exists). Walk to cooling: estimated minutes on foot to the nearest mapped cool place along the pedestrian network. Age 65+: estimated share of residents aged 65 or older. Direction. “Most first” puts the largest value at the top; “least first” the smallest. Tree cover opens least first, every other measure most first, and either can be flipped. Filters. Walk over 15 minutes; 500 or more residents; tree cover under 10%; residents aged 65+ at 20% or more; plantable (mapped street capacity exists); full aerial tree data (drops height-model, lidar, partly assessed and greenness stand-in areas); stable top tier (in the best 10% in at least 80% of rank-stability re-draws). Filters combine, and the count line says “matching” instead of “ranked” while any is on. Areas with no value for the chosen measure sort as zero.

Planning note A sort is not a ranking. Use What matters most to change what the score rewards; use sort and filters to find areas within the ranking you already have.

Using the map

Export & reload a scenario

Take the ranked list or a single selected area into a meeting as a file that records exactly what produced it, and load it back later.

Use it to

Share a shortlist or one area with colleagues, keep a record of the weights and planting share behind a recommendation, and reopen the same view. A CSV opens in a spreadsheet; a JSON file reloads into this map. Nothing is uploaded: files are generated in the browser and saved on your computer.

Ranked list — the Export & share section

Save scenario (JSON) saves the ranked list with the full scenario header, for reopening. Spreadsheet (CSV) saves every ranked cell in the order the current weights put them, one row per cell, with plain column names (see the column key below). Open a saved scenario… reads a scenario file back in and restores the weights, population weighting, any planting shares you set and the selected area; the status line under the buttons says what was loaded and whether the data version matches.

Selected area — in the area panel

Save this area (JSON) and Spreadsheet row (CSV) save one record for the cell you have open: its metrics, where it ranks under the weights in force and under the shipped defaults, the sources and coverage behind each number, and the planting scenario at the share you chose (trees, canopy gain in percentage points, indicative cost, illustrative cooling). Reloading an area file restores the weights and reopens that area.

Why this approach

A ranking only means something with its weights, assumptions and data version attached, so every export carries them: the weights in force, the population multiplier, the preset if one matches, the planting constants, per-cell source and coverage flags, and the SHA-256 fingerprint of the data file that was loaded. Reloading says plainly if the data version differs.

Source & calculation details
rank/score are computed live from the exported weights; rank_recommended_mix/score_recommended_mix are the pipeline defaults shipped with the data. Spreadsheet rows repeat the scenario header (city, timestamp, data fingerprint and version tag, ACS year, preset, population weight and the five weights) as trailing columns so a row can never be separated from the weights that produced it. JSON files add an interpretation note list and the column key. Loading checks the export schema and the city and refuses a mismatch; a different data fingerprint loads with a visible warning because figures may not reproduce. The fingerprint is computed in the browser at load and reads “unavailable” when the page is opened from a local file rather than a server.

Column key

Spreadsheet columns use the plain names in the first column; scenario (JSON) files use the internal keys in the second and carry this key as field_key.

Spreadsheet columnJSON keyMeaning
cell_ididStable number of the hexagon area
area_namenameNearest mapped place name
area_typeplaceres = residents ranked; activity = developed, no residents; empty = undeveloped
rankrankRank under the priorities in this file (1 = most need)
priority_score_0_100scorePriority score under these priorities, relative within the study area
rank_recommended_mixrank_defaultRank under the recommended mix shipped with the data
score_recommended_mixscore_defaultScore under the recommended mix
surface_heat_clst_cSummer land-surface temperature, °C (satellite)
tree_cover_pctcanopy_pctTree cover, % of assessed land; empty where only satellite greenness is available
greenness_index_0_100greenness_indexSatellite greenness index, 0–100; filled only where tree_cover_source_type = ndvi
tree_cover_source_typegreen_srccanopy = aerial assessment; ndvi = satellite greenness stand-in
tree_cover_datasetcanopy_sourceusfs-2022 aerial classification or chm-legacy height model
tree_cover_yearcanopy_yearYear of the tree-cover dataset
tree_cover_assessed_fractioncoverage_fracShare of the area the aerial assessment covers (0–1)
tree_cover_qualitycanopy_qualityfull, partial or coverage-unknown
tree_cover_m2canopy_m2Assessed tree crown area, m²
assessed_area_m2assessed_m2Land the assessment covers, m²
residentspopEstimated residents (ACS, allocated into the area)
residents_65_plus_pctpct65Estimated share of residents aged 65+, %
homes_with_ac_pctac_pctEstimated share of homes with air conditioning, %
ac_sourceac_srclace = Census LACE; lace-pop = population-weighted LACE; income-model = fallback estimate
ac_coverage_fractionac_coverageShare of homes with a LACE estimate (0–1)
census_acs_yearacs_yearACS five-year vintage
walk_to_cooling_minaccess_minEstimated walking minutes to the nearest mapped cool place
walk_to_cooling_kmaccess_kmEstimated walking distance, km
walk_quality_flagaccess_qualitynetwork-estimate, approach-review (>100 m off-network approach) or detour-review (route far longer than the straight line)
walk_network_connection_maccess_snap_mStraight-line meters from the area center to the walking network
area_m2area_m2Area of the hexagon, m²
mapped_street_mstreet_mMapped street centerline in the area, m: theoretical capacity from OpenStreetMap, not surveyed plantable space
planting_scenario_availablescenario_oktrue when mapped street capacity exists
tree_cover_baseline_completecanopy_baseline_oktrue when the aerial assessment covers ≥99% of the area
land_coverlandDominant land cover (ESA WorldCover) for undeveloped areas
redlining_gradeholc1930s HOLC grade A–D where a map exists
planting_share_pctplanting_shareShare of street capacity planted in this scenario, %
scenario_treestreesTrees in this scenario
scenario_tree_cover_gain_pointscanopy_gain_pointsAdded tree cover at maturity, percentage points
scenario_cost_usdcost_usdIndicative cost at $500 per tree
scenario_air_cooling_ccooling_cIllustrative summer air cooling at maturity, °C
scenario_future_tree_cover_pctfuture_canopy_pctTree cover at maturity, % (only when the baseline is complete)
citycityCity slug
dataset_versiondataset_versionData version tag
population_weightpopulation_weightHow strongly population counts (0–1)
weight_hotter_groundw_heatShare of the ranking given to hotter ground
weight_homes_without_acw_acShare given to homes without A/C
weight_far_from_coolingw_accessShare given to distance from cooling
exported_atexported_atExport time (ISO 8601)
dataset_sha256dataset_sha256Fingerprint of the data file
dataset_acs_yeardataset_acs_yearACS vintage of the data file
presetpresetPreset in force, or custom
weight_fewer_treesw_greenShare given to fewer trees
weight_older_residentsw_age65Share given to older residents

Planning note An export documents an exploratory scenario. It does not verify planting sites, costs or facility status, and it carries the same limitations as the map it came from.

Field checks Each ranked area has a Field check box in its detail panel: a status (To visit; Checked · feasible, partly feasible or not feasible; Planted) and a free-text note. They are saved in the browser you typed them in, per city, and are never uploaded. Every area and shortlist export carries them as field_check_status, field_check_note and field_check_updated, and the printed briefing shows them under each shortlisted area, so a colleague can see what was verified on the ground and what was seen. Clearing the browser’s site data clears them; export first.

Data

Vegetation greenness & supporting fields

Explore satellite greenness separately from tree canopy.

Use it to

Compare living vegetation with tree cover to identify areas worth investigating for shade. A greener area can contain grass or shrubs and still need trees; the two layers help staff ask that question without confusing greenness with canopy.

Why this approach

Satellite greenness supplies broad vegetation context across the grid, including outside aerial canopy coverage. It is publicly available in Explore, leaving the default priority workflow focused. The active planting calculator uses mapped street length, not the buffered right-of-way area fields.

Source & calculation details
The greenness display rescales the legacy veg field from 0–45 to an index of 0–100. The source linearly maps clamped Sentinel-2 NDVI 0.05–0.65 to 0–45; this is an index, not a measured vegetation fraction. Subtracting canopy from it does not estimate lawn or non-tree cover; row_m2 and row_canopy describe buffered street areas in the canopy pipeline. Current planting scenarios use street_m and whole-cell area, not row_m2. canopy_m2 is pixel-derived area for usfs-2022, and an older whole-cell percentage × area estimate for chm-legacy. Assessed extent is unknown for the latter. See canopy_source and canopy_quality before combining sources.

Planning note Greenness does not establish percent cover or planting feasibility; exported street-buffer fields do not establish ownership or plantability.