Skip to content

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

  1. Project: transit_desert_<city>.
  2. Project all data to a local State Plane CRS.
  3. Clip the city boundary out of the state.

Step 3 — Compute Transit Supply

  1. Spatial Join: target = census tracts, join = transit stops, match = INTERSECT, ONE_TO_ONE.
  2. Field map: keep Join_Count (stops per tract).
  3. 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:

  1. Add field NEED_SCORE (Double).
  2. 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:

  1. The question.
  2. The methodology (TN, TS, classification rules, sources).
  3. The map.
  4. Top 5 tracts identified as transit deserts.
  5. 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.