Controls
Opens the Green Corridor Planner and carries the selected location and any generated isochrones with you.
Map
Biodiversity Access Score
Transit Access Score
Isochrone-Benchmarked Biodiversity Access Index
Closest Greenspace
Closest RSF Program
Citywide Biodiversity Access Profile — BAI Dimensions
Each polygon is one independently scored isochrone. The spoke labels state exactly what is being ranked. Species richness uses the total number of unique GBIF species. Equity is oriented so farther outward means lower EJ burden. Percentiles are always calculated against the matching SF mode × travel-time reference; profiles are never averaged or pooled.
Transit access · Muni route access
Species richness · GBIF sampling density
Vegetation NDVI · Greenspace cover
SF EJ context · outward = lower burden
Data Confidence / Observation Coverage
BAI Dimensions — Raw Values + Citywide Percentiles
Summary Data
Biodiversity & Transit Metrics by Mode
Compare two locations side by side
Place two points (click a map or search an address), pick one transport mode and travel time for each, then press Compare. Each point is scored independently against its own matching mode × time reference before the spider plot and difference table are shown.
Point A
Point B
Biodiversity Access Profile — Point A vs Point B
Each point is ranked independently against the SF reference matching its own selected mode and travel time. The chart compares relative citywide standing, while the difference table below pairs the raw values with their citywide percentiles.
Transit access · Muni route access
Species richness · GBIF sampling density
Vegetation NDVI · Greenspace cover
SF EJ context · outward = lower burden
Difference (Point B − Point A)
Point B minus Point A for each metric. Percentile differences are percentile-point differences after each point has been independently benchmarked against its own matching mode × time reference. Raw values are also retained.
Green Corridor Planner
Draw a proposed street corridor, habitat patch, pocket park, or other green intervention. The planner compares it with mapped existing San Francisco greenspace, identifies potential habitat links, and estimates nearby population and equity context.
Scenario Controls
1. Draw the intervention
Use the line tool on the map for a street corridor or the polygon tool for a park, garden, or habitat patch.
2. Choose the connection rule
3. View the result
The report card is a self-contained HTML file. Open it in a browser and choose Print → Save as PDF if needed. Download Corridor HTML report card
Corridor Scenario Map
What This Proposal Connects
Existing Greenspaces Reached
These are existing mapped greenspaces within the selected connection rule. They are highlighted in orange and numbered on the map.
Potentially Reached Residents
Planned Conservation Action — BAI Before vs After
Transit access · Muni route access
Species richness · GBIF sampling density
Vegetation NDVI · Greenspace cover
SF EJ context · outward = lower burden
Detailed BAI Change — Selected Isochrone
Detailed standardized BAI dimensions for the selected Explorer isochrone (0–100 scale).
Green Investment & Displacement Context
Use this view to identify places where a greening opportunity overlaps with greater environmental-justice burden, and therefore where community governance and anti-displacement safeguards may deserve explicit consideration. Do not interpret the plot as evidence that a proposed greening action will cause displacement.
Selected Isochrone Context
Greenspace Access Gap × EJ Burden Context
Each point is one independently scored isochrone. Farther right means a larger relative greenspace-access gap; farther up means greater EJ burden context. The 50/50 guide lines are descriptive visual references, not validated risk thresholds.
What Is Still Needed for Displacement-Risk Screening?
A defensible displacement or green-gentrification screen should add housing and tenure indicators rather than infer risk from EJ or income alone.
- Renter share / tenure
- Rent burden
- Eviction notices or displacement events
- Recent rent and home-value change
- Subsidized / permanently affordable housing
- Housing production and loss
- An established displacement-vulnerability classification
NGO / Grant Reporting Language
Exploring equitable access to urban biodiversity across San Francisco
Green Corridor Scenario Planner
The corridor workflow links three questions: where habitat is fragmented, where a proposed corridor or stepping-stone intervention could be placed, and how ecological connectivity and equitable human access change under that scenario.
Conceptual values shown in the figure are illustrative; the app reports results calculated from the user's drawing and selected thresholds.
About This Tool
The SF Biodiversity Access Decision Support Tool is an interactive web application developed by the Reimagining San Francisco (RSF) Data Working Group to investigate how equitably San Francisco residents can reach urban biodiversity depending on their transportation options and socioeconomic context.
Users select any location in San Francisco — by clicking the map or geocoding an address — choose one or more transport modes and travel-time thresholds, and the app generates isochrones (reachable-area polygons). Within each isochrone the app computes biodiversity, greenspace, transit, socioeconomic, environmental quality, and equity metrics, and synthesises them into the Biodiversity Access Index (BAI) .
- Diego Ellis Soto
- Avery Hill
- Lizzy Edson
- Álvaro Casanova
- Christopher J. Schell
- Carl Boettiger
- Rebecca Johnson
Reimagining San Francisco
Reimagining San Francisco is an initiative integrating ecological, social, and technological dimensions to shape a sustainable future for the Bay Area. The RSF Data Working Group co-develops frameworks that bring together multiple sources of socio-ecological biodiversity information for decision-support.
California Academy of SciencesSource Code
diego-ellis-soto/SF_biodiv_access_shiny
Why Biodiversity Access Matters
Access to urban biodiversity is deeply unequal. Legacies of redlining, disinvestment, and car-centric planning have concentrated green, biodiverse spaces in wealthier neighbourhoods, while lower-income and environmental-justice communities often face longer travel distances and fewer transit options to reach them.
Areas with higher biodiversity support essential ecosystem services — pollinators, carbon sequestration, urban heat mitigation — and provide documented cultural, recreational, and mental health benefits to local residents.
Cities are complex socio-ecological systems shaped by ongoing human pressures and historical decisions. The RSF initiative integrates multiple facets of biodiversity with variables used by city planners, public health practitioners, and equity advocates to support a more integrative, justice-oriented lens for urban sustainability.
This tool is designed to make those inequities visible, quantifiable, and actionable — surfacing where the gaps are largest and where investment could make the greatest difference.
How to Use
- Go to the Isochrone Explorer tab in the left sidebar.
-
Pick a location.
- Click on Map: click anywhere in SF; a red marker confirms selection.
- Address (Geocode): type a street address in the search box.
- Select transport modes. Driving, Walking, Cycling, and Driving with Traffic use Mapbox. Transit and Walk + Transit use the SF Muni GTFS timetable. Extra sliders appear for departure hour and first/last-mile walking budgets.
- Choose time budgets — 5, 10, and/or 15 minutes.
- Click Generate Isochrones. Shaded polygons appear for each mode × time combination. Click a polygon for a summary popup.
- Toggle map layers (top-right layer control) to overlay income, species richness, greenspace, CalEnviroScreen, EJ communities, transit routes, and NDVI.
-
Explore the panels below the map:
- Score boxes: biodiversity access percentile, transit density, and BAI.
- Closest Greenspace: nearest OSM green area, distance, and % greenspace cover.
- Spider / Radar Plot: independently benchmarked per-isochrone profiles; mode × time combinations are never averaged or pooled.
- Summary Table: full per-isochrone metrics.
- Metric Plots: species, population, GBIF institutions, and transit by mode.
- Green Corridor Planner tab — draw a corridor or habitat patch, identify existing greenspaces reached, and compare the proposal with Explorer isochrones.
- Click Clear to reset the map for a new query.
Map Layers
All layers are toggled in the map's layer-control panel (top-right). The default base map is CartoDB Positron; you can switch to Street or Satellite.
| Layer | Description | Source |
|---|---|---|
| Income | Median household income per census block group | ACS 5-yr |
| Greenspace | OSM parks, gardens, and public green areas | OpenStreetMap |
| Greenspace Distance | Raster showing distance (m) to the nearest greenspace pixel | Derived from OSM |
| RSF Program Projects | Partner project polygons from the Reimagining SF Initiative | RSF Initiative |
| RSF Program Distance | Raster showing distance (m) to the nearest RSF program polygon | RSF Initiative |
| Hotspots (KnowBR) | Block groups with anomalously high species richness relative to sampling effort | KnowBR / GBIF |
| Coldspots (KnowBR) | Block groups with anomalously low species richness relative to sampling effort | KnowBR / GBIF |
| Species Richness | Unique GBIF species per census block group | GBIF |
| Data Availability | Total GBIF occurrence records per block group | GBIF |
| CalEnviroScreen (CI Score) | Cumulative environmental and health burden by census tract | OEHHA |
| SF EJ Communities | SF Environment Dept. environmental justice community burden scores | SF Environment |
| Transit Routes | All SF Muni routes from GTFS shapes, coloured by official SFMTA route colour | SFMTA GTFS |
| Transit Stops | All SF Muni stops with AM peak headway and departure frequency | SFMTA GTFS |
| Isochrones | Generated travel-time polygons (one per mode × time combination) | Mapbox / gtfsrouter |
| NDVI Raster | Sentinel-2 NDVI cropped and masked to the isochrone union | Sentinel-2 |
Transportation Modes
Six modes are supported across two routing engines. Walk + Transit is an approximation combining a Mapbox first-mile walk, GTFS stop-to-stop reachability (SF Muni), and a last-mile walk buffer — not a full door-to-door multimodal isochrone.
| Mode | Engine | Data Source | Notes |
|---|---|---|---|
| Driving | Mapbox | OSM road network | Free-flow speed |
| Walking | Mapbox | Pedestrian network | Pedestrian paths and crossings |
| Cycling | Mapbox | Bicycle network | Dedicated cycle lanes where available |
| Driving with Traffic | Mapbox | Traffic-aware road network | Real-time + historical congestion |
| Transit (GTFS) | gtfsrouter | SF Muni GTFS | Timetable-based stop-to-stop reachability from nearest stop |
| + Walk + Transit | Mapbox + gtfsrouter | Pedestrian + SF Muni GTFS | First-mile walk → Muni ride → last-mile walk within one total time budget |
Biodiversity Access Index (BAI) & Spider Plot
The Biodiversity Access Index (BAI) is calculated separately for each generated isochrone. Where a comparable Step-5 reference metric exists, the raw value is converted to a percentile using only the precomputed 100 m SF origins with the same transportation mode and same travel-time budget . Walking 10-minute results are therefore compared only with Walking 10-minute references; different modes and travel times are never pooled. The validated reference contains 24,182 SF 100 m origin cells in each supported mode × time group. For each metric, the percentile uses all finite comparable values from that full matching citywide group. Raw scored metrics use the same explicit 100 m grid support as Step 5: a cell contributes when its projected centroid falls within that one isochrone.
| # | BAI Dimension | Variable | What it measures | Direction |
|---|---|---|---|---|
| 1 | Mobility Access |
Transit_Access_Score
|
Muni stops per km² across the isochrone's 100 m grid support | Higher = better |
| 2 | Route Access |
Unique_Muni_Routes
|
Distinct Muni route IDs intersecting the selected 100 m support cells | Higher = better |
| 3 | Biodiversity Potential |
GBIF_Species
|
Unique GBIF species assigned to selected 100 m support cells | Higher = better |
| 4 | Sampling Density |
SamplingDensity_km2
|
GBIF records per km² across the selected 100 m support cells — proxy for observation coverage | Higher = better |
| 5 | Environmental Quality |
MeanNDVI
|
Area-weighted mean of 100 m cell NDVI values selected by the isochrone | Higher = better |
| 6 | Greenspace Cover |
Greenspace_percent
|
OSM greenspace area as % of the selected 100 m grid-support area | Higher = better |
| 7 | Equity Context |
SF_EJ_Score (inverted)
|
Lower EJ burden → more favourable access context | Lower burden = better |
The displayed isochrone-benchmarked BAI is calculated only when all seven percentile-standardised dimensions are available for that single isochrone. Unsupported dimensions remain missing and are not replaced with census-block-group benchmarks. The score box reports how many comparable reference dimensions are available; an incomplete seven-axis profile returns BAI = N/A rather than silently changing the denominator.
For each isochrone i: percentile(metric_i) = rank within SAME mode × SAME time reference BAI_i = mean(all 7 percentile-standardised dimensions for isochrone i) if any required axis is unavailable: BAI_i = N/A No averaging or union across different isochrones occurs.
Data Sources & Cyberinfrastructure
| Dataset | Source | Format | Use in App |
|---|---|---|---|
| GBIF occurrences | Global Biodiversity Information Facility | Parquet | Species richness, sampling density, taxonomic breakdowns |
| ACS / Census | US Census Bureau (tidycensus) | .Rdata | Population and median income per census block group |
| NDVI raster | Sentinel-2 (pre-processed) | GeoTIFF | Vegetation quality within isochrones |
| OSM Greenspace | OpenStreetMap | GeoPackage | Greenspace cover %, distance raster, map layer |
| SF Muni GTFS | SFMTA | CSV / ZIP | Transit isochrones, stop density, route access, headways |
| CalEnviroScreen 4.0 | OEHHA | File GDB | Cumulative environmental burden scores |
| SF EJ Communities | SF Environment Dept. | Shapefile | Environmental justice burden and equity context |
| Hotspots / Coldspots | KnowBR analysis on GBIF | Shapefile | Under- and over-observed biodiversity areas |
| RSF Program Projects | RSF Initiative | GeoPackage | Partner project areas overlay |
Greenspace, CBG, hotspots, NDVI, and GBIF data are hosted on
HuggingFace (boettiger-lab/sf_biodiv_access)
. The cloud deployment streams these via GDAL's
/vsicurl/
virtual filesystem — no large files need to be bundled in the Docker image.
GBIF occurrence records (~3M rows for SF) are stored as a local
.parquet
file and queried on-the-fly using
DuckDB
with the spatial extension. SQL
ST_Intersects
filters records to the isochrone without loading the full dataset into memory.
Full source code, data pipeline scripts, and setup instructions are available at:
github.com/diego-ellis-soto/SF_biodiv_access_shiny
Status & Roadmap
This tool is a decision-support prototype co-developed with the RSF Data Working Group. The BAI should be treated as an exploratory indicator; variable weights and reference distributions are subject to revision through ongoing stakeholder engagement.
- Impervious surface coverage layer
- National Walkability Index integration
- CDC Social Vulnerability Index
- NatureServe biodiversity and rarity maps
- Frequency-weighted multimodal transit accessibility score
- Pre-cached transit isochrones for faster querying
- Stakeholder-driven BAI dimension weighting
- Historical and comparative isochrone analysis