Spatial Analysis · Python Tool

Transit Dependency Likelihood Index

A custom ArcGIS Python tool that combines demographic need with real transit service coverage to find neighborhoods in Portland, Oregon that are highly transit-dependent yet poorly served by bus stops — and outputs the exact streets where the gap is worst.

ArcPyNetwork AnalystPython z-scores · VIFReusable tool
Transit Dependent Areas and Unserved Streets, Portland
High transit-dependency areas (TDI ≥ 0.5) and the unserved streets that fall outside bus service
01The problem

Portland has a strong transit system overall, yet service is not evenly distributed. Some neighborhoods with the highest dependence on public transit still fall outside the walking-distance service area of any bus stop.

This tool quantifies that mismatch and outputs the specific street segments where the gap is worst, so planners can target investment.

Built as a reusable, parameterized geoprocessing tool — the same workflow can be re-run for any city.

TDLI methodology workflow
Two-track workflow — transit service areas meet demographic need scoring
02Method
  1. Read a polygon layer and user-selected demographic fields with ArcPy.
  2. Standardize each variable with z-scores, reclassify into weighted scores.
  3. Compute a weighted Transit Dependency Index per polygon.
  4. Run a multicollinearity (VIF) check on the variables.
  5. Build Network Analyst service areas around bus stops at a walking-distance threshold.
  6. Use symmetric difference + clip to isolate high-need areas outside coverage and output the unserved streets.

PORTLAND RUN · SETTINGS

ParameterValue
Variablesage 65+, poverty, minority, disability, vehicle access, education
WeightingEqual
Service distance800 ft around active stops
High-need thresholdTDI ≥ 0.5
03Results
35%+Disability share in the highest-TDI area
19%+Disabled residents in TDI 0.50–0.54 zones
7.2%In poverty in those same zones

High transit-dependency areas concentrate in the northern part of the city, and many fall outside the 800-ft service area of existing stops — a clear, mappable service gap. The demographic profile of those zones confirms the index is capturing genuine vulnerability.

The output unserved-street layer gives planners a direct, actionable target for new stops, routing changes, or micro-transit.

04Limitations & next steps
  • Single accessibility radius for all transit modes (next: mode-specific radii).
  • Ignores service frequency and reliability (next: schedule-based weighting).
  • Add data-quality and CRS checks; package as a .pyt Python toolbox.

Read the code

Full ArcPy tool, toolbox, README, and maps on GitHub.