Current Analysis Date¶
January 14 2026 (Wednesday)
If we are missing data on that date for a particular operator, we will patch in data from the previous three months. Currently patching in:
{'2025-12-17': ['Bay Area 511 South San Francisco Shuttle Schedule',
'eTrans Schedule Remix',
'Lassen Schedule',
'Long Beach Schedule',
'Baldwin Park Schedule',
'Mountain Transit Schedule',
'Redwood Coast Schedule',
'Lake Schedule',
'Mendocino Schedule',
'Redding Schedule'],
'2025-10-15': ['Bay Area 511 Angel Island-Tiburon Ferry Schedule',
'Nevada County Schedule',
'El Monte Schedule'],
'2025-11-05': ['Trinity Schedule',
'Mariposa Grove Shuttle Schedule',
'UCSC Schedule',
'Amtrak San Joaquins Schedule']}Analysis Segments and Key Stops¶
We use 1,250 meter analysis segments cut from GTFS shapes.
In each segment, we identify the stop with the highest frequency and use it to assign frequency to the segment.
/Users/rae/workspace/cal-itp/data-analyses/_shared_utils/shared_utils/webmap_utils.py:128: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.
centroid = (gdf.geometry.centroid.y.mean(), gdf.geometry.centroid.x.mean())
Spatial Intersections¶
We use an azimuth (heading) approach to find intersections, segments are considered intersecting if they diverge at a 45-degree angle or greater. Our goal is to identify locations where riders have access to multiple frequent routes that can take them in different directions.
Intersections are colored in red in the map below.
Intersection Buffers and Stop Groups¶
We use a 500ft buffer around the spatial intersection to find physical stops associated with the intersection.
We consider all of these physical stops to be Major Transit Stops.