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. It 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
01What the tool solves

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.

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

It is built as a reusable, parameterized geoprocessing tool, so the same workflow can be re-run for any city.

TDLI methodology workflow
Two-track workflow: transit service areas meet demographic need scoring
02Inputs and steps
  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
03Output on the Portland run
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 lines up with the vulnerability the index is meant to capture.

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.