Project 2 — Transit Desert Analysis¶
Difficulty
🟢 Beginner+. ~8–12 hours.
Goal¶
"Which neighborhoods in [your city] are 'transit deserts' — places with high transit need but low transit supply?"
A transit desert is a place where the demand for transit (low-income, no-car, transit-dependent populations) exceeds the supply (nearby stops, frequent service).
This project tells a powerful equity story.
Data needed¶
| Layer | Source |
|---|---|
| Census tracts | TIGER/Line, your state |
| Population & demographics | ACS — pct under poverty, pct no vehicle, pct elderly |
| Transit stops | Your local transit agency's GTFS feed (download from https://transit.land) |
| (Optional) Bus routes / rail lines | Same GTFS feed |
| City boundary | OSM or local open data |
Tools used¶
- ArcGIS Pro: Buffer, Spatial Join, Calculate Field
- Possibly Network Analyst for walking time
- SQL for filtering tracts and queries
- Layout, multi-panel map
Step-by-step workflow¶
Step 1 — Define your indices¶
You'll create two scores per tract:
| Score | Components |
|---|---|
| Transit Need (TN) | % below poverty + % no vehicle + % elderly + % under 18 |
| Transit Supply (TS) | Stops per km² + (optional) average frequency |
Transit Desert = high TN, low TS.
Step 2 — Set up¶
- Project:
transit_desert_<city>. - Project all data to a local State Plane CRS.
- Clip the city boundary out of the state.
Step 3 — Compute Transit Supply¶
- Spatial Join: target = census tracts, join = transit stops, match = INTERSECT, ONE_TO_ONE.
- Field map: keep
Join_Count(stops per tract). - Calculate:
STOPS_PER_KM2 = Join_Count / AREA_KM2.
For a more sophisticated TS, run a 0.25-mile buffer around stops, then use Tabulate Intersection to compute the % of each tract within walking distance of a stop.
Step 4 — Compute Transit Need¶
In the tract layer's attribute table:
- Add field
NEED_SCORE(Double). - Calculate as a normalized sum:
def need(pov, no_veh, elderly, kids):
# standardize to z-scores or simple weighted sum
return (
(pov or 0) * 0.4 +
(no_veh or 0) * 0.3 +
(elderly or 0) * 0.15 +
(kids or 0) * 0.15
)
Expression: need(!PCT_POVERTY!, !PCT_NO_VEHICLE!, !PCT_ELDERLY!, !PCT_UNDER_18!).
Step 5 — Classify each tract¶
For each of TS and TN, classify into 5 quantile bins (1 = lowest, 5 = highest).
Then categorize:
| TN bin | TS bin | Category |
|---|---|---|
| 4 or 5 | 1 or 2 | Transit Desert |
| 4 or 5 | 4 or 5 | Well-served high-need |
| 1 or 2 | 1 or 2 | Low-need low-supply |
| 1 or 2 | 4 or 5 | Over-served low-need |
def category(tn_bin, ts_bin):
if tn_bin >= 4 and ts_bin <= 2: return "Transit Desert"
if tn_bin >= 4 and ts_bin >= 4: return "Well-served high-need"
if tn_bin <= 2 and ts_bin <= 2: return "Low-need low-supply"
if tn_bin <= 2 and ts_bin >= 4: return "Over-served low-need"
return "Mixed"
Step 6 — Symbology¶
Categorical symbology by CATEGORY. Use a bivariate choropleth if your version supports it; otherwise unique values.
- Transit Desert → bright red
- Well-served high-need → green
- Over-served → light gray
- Low-need low-supply → light blue
- Mixed → mid gray
Step 7 — Layout¶
A 2-panel layout works best:
- Left panel: Transit Desert map (the headline).
- Right panel: a small bivariate scatter chart (TN vs TS) and a tracker showing % of city population in transit deserts.
Or use a multi-panel Story Map in ArcGIS Online to walk through the methodology, then the result.
Step 8 — Write the story¶
Your README / Story Map should include:
- The question.
- The methodology (TN, TS, classification rules, sources).
- The map.
- Top 5 tracts identified as transit deserts.
- A 1-paragraph "so what" — policy implication.
Skills learned¶
- Buffers + Spatial Join
- Multi-criteria scoring (a mini suitability model)
- Quantile classification
- Categorical symbology (potentially bivariate)
- Equity / accessibility narrative
Portfolio value¶
This is the project that gets attention for transportation, planning, and policy roles. The methodology is publishable and the equity angle resonates.
Stretch goals¶
- Add walking-time service areas from transit stops (Network Analyst).
- Add frequency weighting (high-frequency stops count more).
- Compare your map to the city's existing planning documents.
- Publish as a public ArcGIS Online dashboard.
→ Next: Food Desert Analysis.