diff --git a/_shared_utils/shared_utils/gtfs_analytics_data.yml b/_shared_utils/shared_utils/gtfs_analytics_data.yml
index 878d09ae6..db0b364d4 100644
--- a/_shared_utils/shared_utils/gtfs_analytics_data.yml
+++ b/_shared_utils/shared_utils/gtfs_analytics_data.yml
@@ -119,9 +119,10 @@ speedmap_segments:
trip_stop_cols: ["trip_instance_key", "stop_sequence", "stop_sequence1"]
shape_stop_cols: ["shape_array_key", "shape_id"]
stop_pair_cols: ["stop_pair", "stop_pair_name", "segment_id"]
- route_dir_cols: ["route_id", "route_short_name"]
+ route_dir_cols: ["route_id", "direction_id"]
segments_file: "segment_options/speedmap_segments"
shape_stop_single_segment: "rollup_singleday/speeds_shape_speedmap_segments"
+ shape_stop_single_segment_detail: "rollup_singleday/speeds_shape_speedmap_segments_detail"
route_dir_single_segment: "rollup_singleday/speeds_route_dir_speedmap_segments"
route_dir_multi_segment: "rollup_multiday/speeds_route_dir_speedmap_segments"
min_trip_minutes: ${speed_vars.time_min_cutoff}
diff --git a/_shared_utils/shared_utils/rt_utils.py b/_shared_utils/shared_utils/rt_utils.py
index 11e21e0dd..c207f50f8 100644
--- a/_shared_utils/shared_utils/rt_utils.py
+++ b/_shared_utils/shared_utils/rt_utils.py
@@ -45,8 +45,8 @@
MPH_PER_MPS = 2.237 # use to convert meters/second to miles/hour
METERS_PER_MILE = 1609.34
# Colorscale
-ZERO_THIRTY_COLORSCALE = branca.colormap.step.RdYlGn_10.scale(vmin=0, vmax=30)
-ZERO_THIRTY_COLORSCALE.caption = "Speed (miles per hour)"
+# ZERO_THIRTY_COLORSCALE = branca.colormap.step.RdYlGn_10.scale(vmin=0, vmax=30)
+# ZERO_THIRTY_COLORSCALE.caption = "Speed (miles per hour)"
ACCESS_ZERO_THIRTY_COLORSCALE = branca.colormap.step.RdBu_10.scale(vmin=0, vmax=30)
ACCESS_ZERO_THIRTY_COLORSCALE.caption = "Speed (miles per hour)"
VARIANCE_COLORS = branca.colormap.step.Blues_06.colors[1:] # actual breaks will vary
@@ -562,6 +562,13 @@ def categorize_time_of_day(value: Union[int, dt.datetime]) -> str:
return "Evening"
+def time_of_day_durations() -> pd.Series:
+ """
+ Get duration in hours of each time of day classification.
+ """
+ return pd.Series([categorize_time_of_day(x) for x in range(25)]).value_counts()
+
+
@jit(nopython=True) # numba gives huge speedup here (~60x)
def time_at_position_numba(desired_position, shape_array, dt_float_array):
if desired_position < shape_array.max() and desired_position > shape_array.min():
diff --git a/ca_transit_speed_maps/01_new_speedmaps.ipynb b/ca_transit_speed_maps/01_new_speedmaps.ipynb
index 02442997c..387c7fb81 100644
--- a/ca_transit_speed_maps/01_new_speedmaps.ipynb
+++ b/ca_transit_speed_maps/01_new_speedmaps.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 62,
"id": "46898b5c-b5cc-4096-ab68-8c3e42fab870",
"metadata": {},
"outputs": [],
@@ -12,8 +12,9 @@
"warnings.filterwarnings('ignore')\n",
"\n",
"import calitp_data_analysis.magics\n",
+ "from calitp_data_analysis import calitp_color_palette\n",
"\n",
- "from rt_analysis import rt_filter_map_plot\n",
+ "# from rt_analysis import rt_filter_map_plot\n",
"import build_speedmaps_index\n",
"\n",
"from IPython.display import display, Markdown\n",
@@ -21,18 +22,23 @@
"import geopandas as gpd\n",
"from siuba import *\n",
"\n",
- "from segment_speed_utils.project_vars import (\n",
- " COMPILED_CACHED_VIEWS,\n",
- " PROJECT_CRS,\n",
- " SEGMENT_GCS,\n",
- ")\n",
- "\n",
- "import shared_utils"
+ "import shared_utils\n",
+ "import segment_speed_utils"
]
},
{
"cell_type": "code",
"execution_count": 2,
+ "id": "cf3d8814-6f22-4a22-8b03-429ebb63a397",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "catalog = shared_utils.catalog_utils.get_catalog('gtfs_analytics_data')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
"id": "9f15ed6a-5ab7-4f57-9695-3f762781b74c",
"metadata": {
"tags": [
@@ -42,30 +48,18 @@
"outputs": [],
"source": [
"## parameters cell\n",
- "itp_id = 4"
+ "itp_id = 300"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"id": "a639fd84-29ca-4678-b568-2b1022701e14",
"metadata": {},
"outputs": [],
"source": [
"analysis_date = build_speedmaps_index.ANALYSIS_DATE\n",
- "import datetime as dt\n",
- "# if itp_id == 293:\n",
- "# analysis_date = dt.date(2023, 9, 13)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "d0cdaf1a-2c6d-452a-a5cc-210aa2fac2cb",
- "metadata": {},
- "outputs": [],
- "source": [
- "analysis_date = shared_utils.rt_dates.DATES['aug2024']"
+ "import datetime as dt"
]
},
{
@@ -77,164 +71,86 @@
},
"outputs": [],
"source": [
- "speedmap_index = pd.read_parquet(f'_rt_progress_{analysis_date}.parquet') >> filter(_.organization_itp_id == itp_id)\n",
- "# speedmap_index = pd.read_parquet(f'_rt_progress_{analysis_date}.parquet') >> filter(_.organization_name.str.contains('Torr'))"
+ "speedmap_index = pd.read_parquet(f'_rt_progress_{analysis_date}.parquet') >> filter(_.organization_itp_id == itp_id)"
]
},
{
"cell_type": "code",
"execution_count": 6,
- "id": "c54b78fd-de92-45d9-b54d-49c5b88945c7",
+ "id": "1b9762c8-0235-4d8f-b7a4-20a3213eb45e",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " organization_name | \n",
- " organization_itp_id | \n",
- " organization_source_record_id | \n",
- " caltrans_district | \n",
- " _is_current | \n",
- " analysis_date | \n",
- " schedule_gtfs_dataset_key | \n",
- " status | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 89 | \n",
- " Alameda-Contra Costa Transit District | \n",
- " 4 | \n",
- " recOZgevYf7Jimm9L | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " speedmap_segs_available | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " organization_name organization_itp_id \\\n",
- "89 Alameda-Contra Costa Transit District 4 \n",
- "\n",
- " organization_source_record_id caltrans_district _is_current analysis_date \\\n",
- "89 recOZgevYf7Jimm9L 04 - Oakland True 2024-08-14 \n",
- "\n",
- " schedule_gtfs_dataset_key status \n",
- "89 c499f905e33929a641f083dad55c521e speedmap_segs_available "
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
- "speedmap_index"
+ "path = f'{catalog.speedmap_segments.dir}{catalog.speedmap_segments.shape_stop_single_segment_detail}_{analysis_date}.parquet'"
]
},
{
"cell_type": "code",
"execution_count": 7,
- "id": "76edaa5c-039e-419a-ade6-15ebdc018b3c",
+ "id": "9302c0ad-1201-4c5a-8267-ec52719cf777",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'gs://calitp-analytics-data/data-analyses/rt_segment_speeds/'"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
- "SEGMENT_GCS"
+ "speedmap_segs = gpd.read_parquet(path) # aggregated"
]
},
{
"cell_type": "code",
"execution_count": 8,
- "id": "28317d9e-9f9e-493c-889e-78b8099004e5",
+ "id": "9f3c4c93-a5f5-40d7-9315-63e4fecbd738",
"metadata": {},
"outputs": [],
"source": [
- "# speedmap_segs = gpd.read_parquet(f'{SEGMENT_GCS}segment_options/speedmap_segments_{analysis_date}.parquet')` # non-aggregated"
+ "speedmap_segs = speedmap_segs >> filter(_.schedule_gtfs_dataset_key == speedmap_index.schedule_gtfs_dataset_key.iloc[0])"
]
},
{
"cell_type": "code",
"execution_count": 9,
- "id": "9302c0ad-1201-4c5a-8267-ec52719cf777",
+ "id": "edc84eda-ce2b-481f-ac78-6b7209cb25f4",
"metadata": {},
"outputs": [],
"source": [
- "speedmap_segs = gpd.read_parquet(f'{SEGMENT_GCS}rollup_singleday/speeds_shape_speedmap_segments_{analysis_date}.parquet') # aggregated"
+ "# TODO to utils\n",
+ "def time_period_and_arrowize(gdf, time_period):\n",
+ " \n",
+ " gdf = gdf >> filter(_.time_of_day == time_period)\n",
+ " gdf = gdf.to_crs(calitp_data_analysis.geography_utils.CA_NAD83Albers)\n",
+ "\n",
+ " ## shift to right side of road to display direction\n",
+ " gdf.geometry = gdf.geometry.apply(shared_utils.rt_utils.try_parallel)\n",
+ " gdf = gdf.apply(shared_utils.rt_utils.arrowize_by_frequency, axis=1, frequency_col='trips_hr_sch')\n",
+ "\n",
+ " gdf = gdf >> arrange(_.trips_hr_sch)\n",
+ "\n",
+ " return gdf"
]
},
{
"cell_type": "code",
"execution_count": 10,
- "id": "19dbeff0-faf6-43e3-9edf-6e68dfeceeac",
+ "id": "6af2c7fd-b769-4fbf-bbcf-75080972cc67",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['schedule_gtfs_dataset_key', 'shape_array_key', 'shape_id',\n",
- " 'route_short_name', 'route_id', 'stop_pair', 'stop_pair_name',\n",
- " 'segment_id', 'time_period', 'p50_mph', 'n_trips', 'p20_mph', 'p80_mph',\n",
- " 'name', 'caltrans_district', 'organization_source_record_id',\n",
- " 'organization_name', 'base64_url', 'geometry'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
- "speedmap_segs.columns"
+ "peak_test = time_period_and_arrowize(speedmap_segs, 'AM Peak')"
]
},
{
"cell_type": "code",
"execution_count": 11,
- "id": "9f3c4c93-a5f5-40d7-9315-63e4fecbd738",
+ "id": "cedc030e-8d19-4a0b-b3a5-5a3d6c0dce23",
"metadata": {},
"outputs": [],
"source": [
- "speedmap_segs = speedmap_segs >> filter(_.schedule_gtfs_dataset_key == speedmap_index.schedule_gtfs_dataset_key.iloc[0])"
+ "cmap = shared_utils.rt_utils.ACCESS_ZERO_THIRTY_COLORSCALE\n",
+ "url = shared_utils.rt_utils.ACCESS_SPEEDMAP_LEGEND_URL"
]
},
{
"cell_type": "code",
"execution_count": 12,
- "id": "33038798-16a0-46b5-a50e-2609c5729534",
+ "id": "87c7db4f-3da9-4ba4-915b-88432a841b39",
"metadata": {},
"outputs": [
{
@@ -261,15 +177,14 @@
" schedule_gtfs_dataset_key | \n",
" shape_array_key | \n",
" shape_id | \n",
- " route_short_name | \n",
" route_id | \n",
+ " direction_id | \n",
" stop_pair | \n",
" stop_pair_name | \n",
" segment_id | \n",
- " time_period | \n",
+ " time_of_day | \n",
" p50_mph | \n",
- " n_trips | \n",
- " p20_mph | \n",
+ " ... | \n",
" p80_mph | \n",
" name | \n",
" caltrans_district | \n",
@@ -277,119 +192,103 @@
" organization_name | \n",
" base64_url | \n",
" geometry | \n",
+ " n_trips_sch | \n",
+ " trips_hr_sch | \n",
+ " route_short_name | \n",
" \n",
" \n",
" \n",
" \n",
- " 309219 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " c2251ab196e84946d73773d8a60437cb | \n",
- " shp-217-53 | \n",
- " 217 | \n",
- " 217 | \n",
- " 57211__53699 | \n",
- " Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr | \n",
- " 57211-53699-1 | \n",
- " offpeak | \n",
- " 21.17 | \n",
- " 13 | \n",
- " 17.13 | \n",
- " 27.51 | \n",
- " Bay Area 511 AC Transit Schedule | \n",
- " 04 - Oakland | \n",
- " recOZgevYf7Jimm9L | \n",
- " Alameda-Contra Costa Transit District | \n",
- " aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... | \n",
- " LINESTRING (-121.97141 37.55901, -121.97125 37... | \n",
- "
\n",
- " \n",
- " 309220 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " c2251ab196e84946d73773d8a60437cb | \n",
- " shp-217-53 | \n",
- " 217 | \n",
- " 217 | \n",
- " 57211__53699 | \n",
- " Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr | \n",
- " 57211-53699-1 | \n",
- " peak | \n",
- " 20.13 | \n",
- " 12 | \n",
- " 15.24 | \n",
- " 25.49 | \n",
- " Bay Area 511 AC Transit Schedule | \n",
- " 04 - Oakland | \n",
- " recOZgevYf7Jimm9L | \n",
- " Alameda-Contra Costa Transit District | \n",
- " aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... | \n",
- " LINESTRING (-121.97141 37.55901, -121.97125 37... | \n",
+ " 10501 | \n",
+ " 0666caf3ec1ecc96b74f4477ee4bc939 | \n",
+ " fedc605c108af558e4e545806741ea0f | \n",
+ " 510358_JUNE24 | \n",
+ " 51-13183 | \n",
+ " 0.0 | \n",
+ " 283__8824 | \n",
+ " Avalon / Imperial__Avalon / 111th | \n",
+ " 283-8824-1 | \n",
+ " AM Peak | \n",
+ " 12.34 | \n",
+ " ... | \n",
+ " 12.34 | \n",
+ " LA Metro Bus Schedule | \n",
+ " 07 - Los Angeles | \n",
+ " recPnGkwdpnr8jmHB | \n",
+ " Los Angeles County Metropolitan Transportation... | \n",
+ " aHR0cHM6Ly9naXRsYWIuY29tL0xBQ01UQS9ndGZzX2J1cy... | \n",
+ " POLYGON ((160449.331 -452365.708, 160434.047 -... | \n",
+ " 1 | \n",
+ " 0.333333 | \n",
+ " 51 | \n",
"
\n",
" \n",
- " 309221 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " c2251ab196e84946d73773d8a60437cb | \n",
- " shp-217-53 | \n",
- " 217 | \n",
- " 217 | \n",
- " 57211__53699 | \n",
- " Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr | \n",
- " 57211-53699-1 | \n",
- " all_day | \n",
- " 20.13 | \n",
- " 25 | \n",
- " 16.44 | \n",
- " 27.51 | \n",
- " Bay Area 511 AC Transit Schedule | \n",
- " 04 - Oakland | \n",
- " recOZgevYf7Jimm9L | \n",
- " Alameda-Contra Costa Transit District | \n",
- " aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... | \n",
- " LINESTRING (-121.97141 37.55901, -121.97125 37... | \n",
+ " 10502 | \n",
+ " 0666caf3ec1ecc96b74f4477ee4bc939 | \n",
+ " fedc605c108af558e4e545806741ea0f | \n",
+ " 510358_JUNE24 | \n",
+ " 51-13183 | \n",
+ " 0.0 | \n",
+ " 8824__8823 | \n",
+ " Avalon / 111th__Avalon / 110th | \n",
+ " 8824-8823-1 | \n",
+ " AM Peak | \n",
+ " 14.66 | \n",
+ " ... | \n",
+ " 14.66 | \n",
+ " LA Metro Bus Schedule | \n",
+ " 07 - Los Angeles | \n",
+ " recPnGkwdpnr8jmHB | \n",
+ " Los Angeles County Metropolitan Transportation... | \n",
+ " aHR0cHM6Ly9naXRsYWIuY29tL0xBQ01UQS9ndGZzX2J1cy... | \n",
+ " POLYGON ((160443.819 -452040.084, 160428.472 -... | \n",
+ " 1 | \n",
+ " 0.333333 | \n",
+ " 51 | \n",
"
\n",
" \n",
"\n",
+ "2 rows × 22 columns
\n",
""
],
"text/plain": [
- " schedule_gtfs_dataset_key shape_array_key \\\n",
- "309219 c499f905e33929a641f083dad55c521e c2251ab196e84946d73773d8a60437cb \n",
- "309220 c499f905e33929a641f083dad55c521e c2251ab196e84946d73773d8a60437cb \n",
- "309221 c499f905e33929a641f083dad55c521e c2251ab196e84946d73773d8a60437cb \n",
+ " schedule_gtfs_dataset_key shape_array_key \\\n",
+ "10501 0666caf3ec1ecc96b74f4477ee4bc939 fedc605c108af558e4e545806741ea0f \n",
+ "10502 0666caf3ec1ecc96b74f4477ee4bc939 fedc605c108af558e4e545806741ea0f \n",
"\n",
- " shape_id route_short_name route_id stop_pair \\\n",
- "309219 shp-217-53 217 217 57211__53699 \n",
- "309220 shp-217-53 217 217 57211__53699 \n",
- "309221 shp-217-53 217 217 57211__53699 \n",
+ " shape_id route_id direction_id stop_pair \\\n",
+ "10501 510358_JUNE24 51-13183 0.0 283__8824 \n",
+ "10502 510358_JUNE24 51-13183 0.0 8824__8823 \n",
"\n",
- " stop_pair_name segment_id \\\n",
- "309219 Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr 57211-53699-1 \n",
- "309220 Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr 57211-53699-1 \n",
- "309221 Walnut Av & Guardino Dr__Walnut Av & Gallaudet Dr 57211-53699-1 \n",
+ " stop_pair_name segment_id time_of_day p50_mph \\\n",
+ "10501 Avalon / Imperial__Avalon / 111th 283-8824-1 AM Peak 12.34 \n",
+ "10502 Avalon / 111th__Avalon / 110th 8824-8823-1 AM Peak 14.66 \n",
"\n",
- " time_period p50_mph n_trips p20_mph p80_mph \\\n",
- "309219 offpeak 21.17 13 17.13 27.51 \n",
- "309220 peak 20.13 12 15.24 25.49 \n",
- "309221 all_day 20.13 25 16.44 27.51 \n",
+ " ... p80_mph name caltrans_district \\\n",
+ "10501 ... 12.34 LA Metro Bus Schedule 07 - Los Angeles \n",
+ "10502 ... 14.66 LA Metro Bus Schedule 07 - Los Angeles \n",
"\n",
- " name caltrans_district \\\n",
- "309219 Bay Area 511 AC Transit Schedule 04 - Oakland \n",
- "309220 Bay Area 511 AC Transit Schedule 04 - Oakland \n",
- "309221 Bay Area 511 AC Transit Schedule 04 - Oakland \n",
+ " organization_source_record_id \\\n",
+ "10501 recPnGkwdpnr8jmHB \n",
+ "10502 recPnGkwdpnr8jmHB \n",
"\n",
- " organization_source_record_id organization_name \\\n",
- "309219 recOZgevYf7Jimm9L Alameda-Contra Costa Transit District \n",
- "309220 recOZgevYf7Jimm9L Alameda-Contra Costa Transit District \n",
- "309221 recOZgevYf7Jimm9L Alameda-Contra Costa Transit District \n",
+ " organization_name \\\n",
+ "10501 Los Angeles County Metropolitan Transportation... \n",
+ "10502 Los Angeles County Metropolitan Transportation... \n",
"\n",
- " base64_url \\\n",
- "309219 aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... \n",
- "309220 aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... \n",
- "309221 aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... \n",
+ " base64_url \\\n",
+ "10501 aHR0cHM6Ly9naXRsYWIuY29tL0xBQ01UQS9ndGZzX2J1cy... \n",
+ "10502 aHR0cHM6Ly9naXRsYWIuY29tL0xBQ01UQS9ndGZzX2J1cy... \n",
"\n",
- " geometry \n",
- "309219 LINESTRING (-121.97141 37.55901, -121.97125 37... \n",
- "309220 LINESTRING (-121.97141 37.55901, -121.97125 37... \n",
- "309221 LINESTRING (-121.97141 37.55901, -121.97125 37... "
+ " geometry n_trips_sch \\\n",
+ "10501 POLYGON ((160449.331 -452365.708, 160434.047 -... 1 \n",
+ "10502 POLYGON ((160443.819 -452040.084, 160428.472 -... 1 \n",
+ "\n",
+ " trips_hr_sch route_short_name \n",
+ "10501 0.333333 51 \n",
+ "10502 0.333333 51 \n",
+ "\n",
+ "[2 rows x 22 columns]"
]
},
"execution_count": 12,
@@ -398,179 +297,405 @@
}
],
"source": [
- "speedmap_segs >> head(3)"
+ "peak_test >> head(2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4e4c26e4-afca-48e1-b9fc-53393858a414",
+ "metadata": {},
+ "source": [
+ "## export map"
]
},
{
"cell_type": "code",
"execution_count": 13,
- "id": "8e89173e-a0ea-4823-bbce-0aa6cdb3f075",
+ "id": "d483e182-b36c-487e-a194-7a9e48d5b32f",
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- "array(['offpeak', 'peak', 'all_day'], dtype=object)"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
+ "ename": "NameError",
+ "evalue": "name 'time_of_day' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[13], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m time_of_day_lower \u001b[38;5;241m=\u001b[39m \u001b[43mtime_of_day\u001b[49m\u001b[38;5;241m.\u001b[39mlower()\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'time_of_day' is not defined"
+ ]
}
],
"source": [
- "speedmap_segs.time_period.unique()"
+ "time_of_day_lower = time_of_day.lower().replace(' ', '_')"
]
},
{
"cell_type": "code",
- "execution_count": 14,
- "id": "f87584fb-f37d-4869-ba5d-af70a5a0e0e3",
+ "execution_count": null,
+ "id": "51e108ee-19f5-4266-8848-fb5ac57f5108",
"metadata": {},
"outputs": [],
"source": [
- "peak_test = speedmap_segs >> filter(_.time_period == 'peak')"
+ "# TODO clone render method from RtFilterMapper, to utils\n",
+ "speedmap_state = shared_utils.rt_utils.set_state_export(\n",
+ " period_test, filename=f'{itp_id}_{time_of_day_lower}_new', map_type='speedmap',\n",
+ " color_col='p20_mph', cmap=cmap, legend_url=url,\n",
+ " cache_seconds=0, map_title=f'Speedmap Segs {time_of_day} {analysis_date}')"
]
},
{
"cell_type": "code",
- "execution_count": 15,
- "id": "c0080473-a119-45b2-8ebc-9f9913b97ecd",
+ "execution_count": null,
+ "id": "75f2695e-4b80-4d91-8dce-1fa8e347729b",
"metadata": {},
"outputs": [],
"source": [
- "time_periods = [(x, shared_utils.rt_utils.categorize_time_of_day(x)) for x in range(1, 25)]"
+ "speedmap_state"
]
},
{
"cell_type": "code",
- "execution_count": 16,
- "id": "1df01b6f-c29e-4ccc-9b1f-03cda0241bd9",
+ "execution_count": 17,
+ "id": "5af14034-e54b-4d00-bf78-5882ae3a7b24",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "[(1, 'Owl'),\n",
- " (2, 'Owl'),\n",
- " (3, 'Owl'),\n",
- " (4, 'Early AM'),\n",
- " (5, 'Early AM'),\n",
- " (6, 'Early AM'),\n",
- " (7, 'AM Peak'),\n",
- " (8, 'AM Peak'),\n",
- " (9, 'AM Peak'),\n",
- " (10, 'Midday'),\n",
- " (11, 'Midday'),\n",
- " (12, 'Midday'),\n",
- " (13, 'Midday'),\n",
- " (14, 'Midday'),\n",
- " (15, 'PM Peak'),\n",
- " (16, 'PM Peak'),\n",
- " (17, 'PM Peak'),\n",
- " (18, 'PM Peak'),\n",
- " (19, 'PM Peak'),\n",
- " (20, 'Evening'),\n",
- " (21, 'Evening'),\n",
- " (22, 'Evening'),\n",
- " (23, 'Evening'),\n",
- " (24, 'Evening')]"
+ "Index(['schedule_gtfs_dataset_key', 'shape_array_key', 'shape_id', 'route_id',\n",
+ " 'direction_id', 'stop_pair', 'stop_pair_name', 'segment_id',\n",
+ " 'time_of_day', 'p50_mph', 'n_trips', 'p20_mph', 'p80_mph', 'name',\n",
+ " 'caltrans_district', 'organization_source_record_id',\n",
+ " 'organization_name', 'base64_url', 'geometry', 'n_trips_sch',\n",
+ " 'trips_hr_sch', 'route_short_name'],\n",
+ " dtype='object')"
]
},
- "execution_count": 16,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "time_periods"
+ "speedmap_segs.columns"
]
},
{
"cell_type": "code",
- "execution_count": 17,
- "id": "590d0196-ab95-47e8-8ce0-e0b93b4da5d4",
+ "execution_count": null,
+ "id": "fdf9c56a-0ad8-44b8-8bed-a677c9d36037",
"metadata": {},
"outputs": [],
"source": [
- "total_peak = len([x[1] for x in time_periods if 'Peak' in x[1]])"
+ "speedmap_segs"
]
},
{
"cell_type": "code",
- "execution_count": 18,
- "id": "c5c469eb-df45-4925-8888-2cc2bfc04cc6",
+ "execution_count": 15,
+ "id": "df0b34b1-f3fd-4081-8598-eed78541da71",
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- "8"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
+ "ename": "ModuleNotFoundError",
+ "evalue": "No module named 'vega_datasets'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01maltair\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01malt\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mvega_datasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m data\n\u001b[1;32m 4\u001b[0m source \u001b[38;5;241m=\u001b[39m data\u001b[38;5;241m.\u001b[39mbarley()\n\u001b[1;32m 6\u001b[0m error_bars \u001b[38;5;241m=\u001b[39m alt\u001b[38;5;241m.\u001b[39mChart(source)\u001b[38;5;241m.\u001b[39mmark_errorbar(extent\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstdev\u001b[39m\u001b[38;5;124m\"\u001b[39m)\u001b[38;5;241m.\u001b[39mencode(\n\u001b[1;32m 7\u001b[0m alt\u001b[38;5;241m.\u001b[39mY(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myield:Q\u001b[39m\u001b[38;5;124m\"\u001b[39m)\u001b[38;5;241m.\u001b[39mscale(zero\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m),\n\u001b[1;32m 8\u001b[0m alt\u001b[38;5;241m.\u001b[39mX(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvariety:N\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[1;32m 9\u001b[0m )\n",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'vega_datasets'"
+ ]
}
],
"source": [
- "total_peak"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "id": "edc84eda-ce2b-481f-ac78-6b7209cb25f4",
- "metadata": {},
- "outputs": [],
- "source": [
- "def prep_gdf(gdf):\n",
- " \n",
- " gdf = gdf.to_crs(calitp_data_analysis.geography_utils.CA_NAD83Albers)\n",
- " gdf['trips_per_hour'] = gdf.n_trips / total_peak\n",
+ "import altair as alt\n",
+ "from vega_datasets import data\n",
"\n",
- " ## shift to right side of road to display direction\n",
- " gdf.geometry = gdf.geometry.apply(shared_utils.rt_utils.try_parallel)\n",
- " gdf = gdf.apply(shared_utils.rt_utils.arrowize_by_frequency, axis=1)\n",
+ "source = data.barley()\n",
+ "\n",
+ "error_bars = alt.Chart(source).mark_errorbar(extent=\"stdev\").encode(\n",
+ " alt.Y(\"yield:Q\").scale(zero=False),\n",
+ " alt.X(\"variety:N\"),\n",
+ ")\n",
"\n",
- " gdf = gdf >> arrange(_.trips_per_hour)\n",
+ "points = alt.Chart(source).mark_point(\n",
+ " filled=True,\n",
+ " color=\"black\",\n",
+ ").encode(\n",
+ " alt.Y(\"mean(yield)\"),\n",
+ " alt.X(\"variety:N\"),\n",
+ ")\n",
"\n",
- " return gdf"
+ "error_bars + points"
]
},
{
"cell_type": "code",
- "execution_count": 20,
- "id": "6af2c7fd-b769-4fbf-bbcf-75080972cc67",
+ "execution_count": 34,
+ "id": "ded22024-1209-419c-bfce-22499d58718a",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " time_of_day | \n",
+ " p50_mph | \n",
+ " p20_mph | \n",
+ " p80_mph | \n",
+ " y_err | \n",
+ " y_err2 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 5265 | \n",
+ " AM Peak | \n",
+ " 13.00 | \n",
+ " 13.00 | \n",
+ " 13.00 | \n",
+ " 13.00 | \n",
+ " 13.00 | \n",
+ "
\n",
+ " \n",
+ " 5266 | \n",
+ " AM Peak | \n",
+ " 22.58 | \n",
+ " 22.58 | \n",
+ " 22.58 | \n",
+ " 22.58 | \n",
+ " 22.58 | \n",
+ "
\n",
+ " \n",
+ " 5267 | \n",
+ " AM Peak | \n",
+ " 7.31 | \n",
+ " 7.31 | \n",
+ " 7.31 | \n",
+ " 7.31 | \n",
+ " 7.31 | \n",
+ "
\n",
+ " \n",
+ " 5268 | \n",
+ " AM Peak | \n",
+ " 15.72 | \n",
+ " 15.72 | \n",
+ " 15.72 | \n",
+ " 15.72 | \n",
+ " 15.72 | \n",
+ "
\n",
+ " \n",
+ " 5269 | \n",
+ " AM Peak | \n",
+ " 18.62 | \n",
+ " 18.62 | \n",
+ " 18.62 | \n",
+ " 18.62 | \n",
+ " 18.62 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 126376 | \n",
+ " Early AM | \n",
+ " 55.45 | \n",
+ " 55.45 | \n",
+ " 55.45 | \n",
+ " 55.45 | \n",
+ " 55.45 | \n",
+ "
\n",
+ " \n",
+ " 126377 | \n",
+ " Early AM | \n",
+ " 54.62 | \n",
+ " 54.62 | \n",
+ " 54.62 | \n",
+ " 54.62 | \n",
+ " 54.62 | \n",
+ "
\n",
+ " \n",
+ " 126378 | \n",
+ " Early AM | \n",
+ " 8.22 | \n",
+ " 8.22 | \n",
+ " 8.22 | \n",
+ " 8.22 | \n",
+ " 8.22 | \n",
+ "
\n",
+ " \n",
+ " 126379 | \n",
+ " Early AM | \n",
+ " 17.60 | \n",
+ " 17.60 | \n",
+ " 17.60 | \n",
+ " 17.60 | \n",
+ " 17.60 | \n",
+ "
\n",
+ " \n",
+ " 126380 | \n",
+ " Early AM | \n",
+ " 16.02 | \n",
+ " 16.02 | \n",
+ " 16.02 | \n",
+ " 16.02 | \n",
+ " 16.02 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
121116 rows × 6 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " time_of_day p50_mph p20_mph p80_mph y_err y_err2\n",
+ "5265 AM Peak 13.00 13.00 13.00 13.00 13.00\n",
+ "5266 AM Peak 22.58 22.58 22.58 22.58 22.58\n",
+ "5267 AM Peak 7.31 7.31 7.31 7.31 7.31\n",
+ "5268 AM Peak 15.72 15.72 15.72 15.72 15.72\n",
+ "5269 AM Peak 18.62 18.62 18.62 18.62 18.62\n",
+ "... ... ... ... ... ... ...\n",
+ "126376 Early AM 55.45 55.45 55.45 55.45 55.45\n",
+ "126377 Early AM 54.62 54.62 54.62 54.62 54.62\n",
+ "126378 Early AM 8.22 8.22 8.22 8.22 8.22\n",
+ "126379 Early AM 17.60 17.60 17.60 17.60 17.60\n",
+ "126380 Early AM 16.02 16.02 16.02 16.02 16.02\n",
+ "\n",
+ "[121116 rows x 6 columns]"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "peak_test = prep_gdf(peak_test)"
+ "df >> group_by"
]
},
{
"cell_type": "code",
- "execution_count": 21,
- "id": "cedc030e-8d19-4a0b-b3a5-5a3d6c0dce23",
- "metadata": {},
- "outputs": [],
- "source": [
- "cmap = shared_utils.rt_utils.ZERO_THIRTY_COLORSCALE\n",
- "url = shared_utils.rt_utils.SPEEDMAP_LEGEND_URL"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2e9ae65e-0ed4-4f00-ac8e-27ac85790804",
+ "execution_count": 48,
+ "id": "23e5a153-f608-4aad-b9ca-8cabc7f90017",
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "## adding identifiers for map display"
+ "alt.Chart(df).mark_errorbar().encode(\n",
+ " # y = alt.Y(\"p50_mph:Q\").scale(zero=False),\n",
+ " y = alt.Y(\"p50_mph:Q\"),\n",
+ " yError=(\"y_err:Q\"),\n",
+ " yError2=(\"y_err2:Q\"),\n",
+ " x = alt.X(\"time_of_day:N\", sort=['Early AM', 'AM Peak', 'Midday', 'PM Peak', 'Evening', 'Owl']),\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": 22,
- "id": "87c7db4f-3da9-4ba4-915b-88432a841b39",
+ "execution_count": 51,
+ "id": "3feb8dbd-afea-4e30-8fd9-544875699e70",
"metadata": {},
"outputs": [
{
@@ -594,218 +719,500 @@
" \n",
" \n",
" | \n",
- " schedule_gtfs_dataset_key | \n",
- " shape_array_key | \n",
- " shape_id | \n",
- " route_short_name | \n",
- " route_id | \n",
- " stop_pair | \n",
- " stop_pair_name | \n",
- " segment_id | \n",
- " time_period | \n",
+ " time_of_day | \n",
" p50_mph | \n",
- " n_trips | \n",
" p20_mph | \n",
" p80_mph | \n",
- " name | \n",
- " caltrans_district | \n",
- " organization_source_record_id | \n",
- " organization_name | \n",
- " base64_url | \n",
- " geometry | \n",
- " trips_per_hour | \n",
+ " y_err | \n",
+ " y_err2 | \n",
"
\n",
" \n",
" \n",
" \n",
- " 309570 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " 27122984e995e1e7423bc2c2997df760 | \n",
- " shp-88-10 | \n",
- " 88 | \n",
- " 88 | \n",
- " 58888__52643 | \n",
- " 11th St & Harrison St__11th St & Jackson St | \n",
- " 58888-52643-1 | \n",
- " peak | \n",
- " 9.08 | \n",
- " 1 | \n",
- " 9.08 | \n",
- " 9.08 | \n",
- " Bay Area 511 AC Transit Schedule | \n",
- " 04 - Oakland | \n",
- " recOZgevYf7Jimm9L | \n",
- " Alameda-Contra Costa Transit District | \n",
- " aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... | \n",
- " POLYGON ((-199459.554 -21648.451, -199437.653 ... | \n",
- " 0.125 | \n",
+ " 0 | \n",
+ " AM Peak | \n",
+ " 13.35 | \n",
+ " 10.74 | \n",
+ " 16.61 | \n",
+ " 2.61 | \n",
+ " 3.26 | \n",
"
\n",
" \n",
- " 309861 | \n",
- " c499f905e33929a641f083dad55c521e | \n",
- " 1d260fbbf422c3bbecc4e4a3c30c8445 | \n",
- " shp-12-01 | \n",
- " 12 | \n",
- " 12 | \n",
- " 50414__56926 | \n",
- " 2nd St & Oakland Amtrak__Jackson St & 3rd St | \n",
- " 50414-56926-1 | \n",
- " peak | \n",
- " 9.28 | \n",
- " 1 | \n",
- " 9.28 | \n",
- " 9.28 | \n",
- " Bay Area 511 AC Transit Schedule | \n",
- " 04 - Oakland | \n",
- " recOZgevYf7Jimm9L | \n",
- " Alameda-Contra Costa Transit District | \n",
- " aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... | \n",
- " POLYGON ((-199632.224 -22363.173, -199606.688 ... | \n",
- " 0.125 | \n",
+ " 1 | \n",
+ " Early AM | \n",
+ " 15.37 | \n",
+ " 12.85 | \n",
+ " 18.33 | \n",
+ " 2.52 | \n",
+ " 2.96 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Evening | \n",
+ " 17.17 | \n",
+ " 15.01 | \n",
+ " 19.62 | \n",
+ " 2.16 | \n",
+ " 2.45 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Midday | \n",
+ " 12.78 | \n",
+ " 9.96 | \n",
+ " 16.41 | \n",
+ " 2.82 | \n",
+ " 3.63 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Owl | \n",
+ " 19.25 | \n",
+ " 17.13 | \n",
+ " 21.24 | \n",
+ " 2.12 | \n",
+ " 1.99 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " PM Peak | \n",
+ " 12.78 | \n",
+ " 10.15 | \n",
+ " 16.37 | \n",
+ " 2.63 | \n",
+ " 3.59 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " schedule_gtfs_dataset_key shape_array_key \\\n",
- "309570 c499f905e33929a641f083dad55c521e 27122984e995e1e7423bc2c2997df760 \n",
- "309861 c499f905e33929a641f083dad55c521e 1d260fbbf422c3bbecc4e4a3c30c8445 \n",
- "\n",
- " shape_id route_short_name route_id stop_pair \\\n",
- "309570 shp-88-10 88 88 58888__52643 \n",
- "309861 shp-12-01 12 12 50414__56926 \n",
- "\n",
- " stop_pair_name segment_id \\\n",
- "309570 11th St & Harrison St__11th St & Jackson St 58888-52643-1 \n",
- "309861 2nd St & Oakland Amtrak__Jackson St & 3rd St 50414-56926-1 \n",
- "\n",
- " time_period p50_mph n_trips p20_mph p80_mph \\\n",
- "309570 peak 9.08 1 9.08 9.08 \n",
- "309861 peak 9.28 1 9.28 9.28 \n",
- "\n",
- " name caltrans_district \\\n",
- "309570 Bay Area 511 AC Transit Schedule 04 - Oakland \n",
- "309861 Bay Area 511 AC Transit Schedule 04 - Oakland \n",
- "\n",
- " organization_source_record_id organization_name \\\n",
- "309570 recOZgevYf7Jimm9L Alameda-Contra Costa Transit District \n",
- "309861 recOZgevYf7Jimm9L Alameda-Contra Costa Transit District \n",
- "\n",
- " base64_url \\\n",
- "309570 aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... \n",
- "309861 aHR0cHM6Ly9hcGkuNTExLm9yZy90cmFuc2l0L2RhdGFmZW... \n",
- "\n",
- " geometry trips_per_hour \n",
- "309570 POLYGON ((-199459.554 -21648.451, -199437.653 ... 0.125 \n",
- "309861 POLYGON ((-199632.224 -22363.173, -199606.688 ... 0.125 "
+ " time_of_day p50_mph p20_mph p80_mph y_err y_err2\n",
+ "0 AM Peak 13.35 10.74 16.61 2.61 3.26\n",
+ "1 Early AM 15.37 12.85 18.33 2.52 2.96\n",
+ "2 Evening 17.17 15.01 19.62 2.16 2.45\n",
+ "3 Midday 12.78 9.96 16.41 2.82 3.63\n",
+ "4 Owl 19.25 17.13 21.24 2.12 1.99\n",
+ "5 PM Peak 12.78 10.15 16.37 2.63 3.59"
]
},
- "execution_count": 22,
+ "execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "peak_test >> head(2)"
+ "df"
]
},
{
- "cell_type": "markdown",
- "id": "21725c98-e8cf-47bb-a880-09e67d25f0fe",
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "52e9a61d-d9bc-474d-a6ed-2120099d0592",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 -2.61\n",
+ "1 -2.52\n",
+ "2 -2.16\n",
+ "3 -2.82\n",
+ "4 -2.12\n",
+ "5 -2.63\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "-(df['p50_mph'] - df['p20_mph'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "id": "bba0a5ba-a95a-4923-b04f-800b74e63a98",
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "branca.colormap.StepColormap"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "## to-do\n",
- "\n",
- "* where does new n_trips come from? should be schedule-based for speedmaps applications...\n",
- "* split am/pm peak\n",
- "* https://github.com/cal-itp/data-analyses/issues/1218 upstream add route identifiers"
+ "type(cmap)"
]
},
{
"cell_type": "code",
- "execution_count": 23,
- "id": "e7c32718-4eb2-4c2b-aba0-cca397aaabf3",
+ "execution_count": 70,
+ "id": "64083c0e-4283-4554-ae8a-3e4e8a34ce21",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "Index(['schedule_gtfs_dataset_key', 'shape_array_key', 'shape_id',\n",
- " 'route_short_name', 'route_id', 'stop_pair', 'stop_pair_name',\n",
- " 'segment_id', 'time_period', 'p50_mph', 'n_trips', 'p20_mph', 'p80_mph',\n",
- " 'name', 'caltrans_district', 'organization_source_record_id',\n",
- " 'organization_name', 'base64_url', 'geometry', 'trips_per_hour'],\n",
- " dtype='object')"
+ "['__call__',\n",
+ " '__class__',\n",
+ " '__delattr__',\n",
+ " '__dict__',\n",
+ " '__dir__',\n",
+ " '__doc__',\n",
+ " '__eq__',\n",
+ " '__format__',\n",
+ " '__ge__',\n",
+ " '__getattribute__',\n",
+ " '__gt__',\n",
+ " '__hash__',\n",
+ " '__init__',\n",
+ " '__init_subclass__',\n",
+ " '__le__',\n",
+ " '__lt__',\n",
+ " '__module__',\n",
+ " '__ne__',\n",
+ " '__new__',\n",
+ " '__reduce__',\n",
+ " '__reduce_ex__',\n",
+ " '__repr__',\n",
+ " '__setattr__',\n",
+ " '__sizeof__',\n",
+ " '__str__',\n",
+ " '__subclasshook__',\n",
+ " '__weakref__',\n",
+ " '_children',\n",
+ " '_env',\n",
+ " '_get_self_bounds',\n",
+ " '_id',\n",
+ " '_name',\n",
+ " '_parent',\n",
+ " '_repr_html_',\n",
+ " '_template',\n",
+ " 'add_child',\n",
+ " 'add_children',\n",
+ " 'add_to',\n",
+ " 'caption',\n",
+ " 'colors',\n",
+ " 'get_bounds',\n",
+ " 'get_name',\n",
+ " 'get_root',\n",
+ " 'index',\n",
+ " 'render',\n",
+ " 'rgb_bytes_tuple',\n",
+ " 'rgb_hex_str',\n",
+ " 'rgba_bytes_tuple',\n",
+ " 'rgba_floats_tuple',\n",
+ " 'rgba_hex_str',\n",
+ " 'save',\n",
+ " 'scale',\n",
+ " 'to_dict',\n",
+ " 'to_json',\n",
+ " 'to_linear',\n",
+ " 'vmax',\n",
+ " 'vmin']"
]
},
- "execution_count": 23,
+ "execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "peak_test.columns"
+ "dir(cmap)"
]
},
{
- "cell_type": "markdown",
- "id": "4e4c26e4-afca-48e1-b9fc-53393858a414",
+ "cell_type": "code",
+ "execution_count": 71,
+ "id": "df62d501-9ef1-4203-a881-4e381651590e",
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[[None, None], [None, None]]"
+ ]
+ },
+ "execution_count": 71,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "## export map"
+ "cmap.get_bounds()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "id": "7c9501e3-24e7-4677-beaf-fa138d6a0837",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['__call__',\n",
+ " '__class__',\n",
+ " '__delattr__',\n",
+ " '__dict__',\n",
+ " '__dir__',\n",
+ " '__doc__',\n",
+ " '__eq__',\n",
+ " '__format__',\n",
+ " '__ge__',\n",
+ " '__getattribute__',\n",
+ " '__gt__',\n",
+ " '__hash__',\n",
+ " '__init__',\n",
+ " '__init_subclass__',\n",
+ " '__le__',\n",
+ " '__lt__',\n",
+ " '__module__',\n",
+ " '__ne__',\n",
+ " '__new__',\n",
+ " '__reduce__',\n",
+ " '__reduce_ex__',\n",
+ " '__repr__',\n",
+ " '__setattr__',\n",
+ " '__sizeof__',\n",
+ " '__str__',\n",
+ " '__subclasshook__',\n",
+ " '__weakref__',\n",
+ " '_children',\n",
+ " '_env',\n",
+ " '_get_self_bounds',\n",
+ " '_id',\n",
+ " '_name',\n",
+ " '_parent',\n",
+ " '_repr_html_',\n",
+ " '_template',\n",
+ " 'add_child',\n",
+ " 'add_children',\n",
+ " 'add_to',\n",
+ " 'caption',\n",
+ " 'colors',\n",
+ " 'get_bounds',\n",
+ " 'get_name',\n",
+ " 'get_root',\n",
+ " 'index',\n",
+ " 'render',\n",
+ " 'rgb_bytes_tuple',\n",
+ " 'rgb_hex_str',\n",
+ " 'rgba_bytes_tuple',\n",
+ " 'rgba_floats_tuple',\n",
+ " 'rgba_hex_str',\n",
+ " 'save',\n",
+ " 'scale',\n",
+ " 'to_dict',\n",
+ " 'to_json',\n",
+ " 'to_linear',\n",
+ " 'vmax',\n",
+ " 'vmin']"
+ ]
+ },
+ "execution_count": 75,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dir(cmap.scale())"
]
},
{
"cell_type": "code",
- "execution_count": 24,
- "id": "10a3ff1d-04f8-40b8-ab91-5ef96fde9b6a",
+ "execution_count": 69,
+ "id": "6d2ccae7-a8b6-4e44-9095-17e4e416ea29",
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "writing to calitp-map-tiles/testing/4_new.geojson.gz\n"
+ "ename": "SchemaValidationError",
+ "evalue": "`Scale` has no parameter named 'children'\n\nExisting parameter names are:\nalign domain exponent paddingOuter round \nbase domainMax interpolate range scheme \nbins domainMid nice rangeMax type \nclamp domainMin padding rangeMin zero \nconstant domainRaw paddingInner reverse \n\nSee the help for `Scale` to read the full description of these parameters",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mSchemaValidationError\u001b[0m Traceback (most recent call last)",
+ "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/altair/vegalite/v5/api.py:961\u001b[0m, in \u001b[0;36mTopLevelMixin.to_dict\u001b[0;34m(self, validate, format, ignore, context)\u001b[0m\n\u001b[1;32m 956\u001b[0m context[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtop_level\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 958\u001b[0m \u001b[38;5;66;03m# TopLevelMixin instance does not necessarily have to_dict defined\u001b[39;00m\n\u001b[1;32m 959\u001b[0m \u001b[38;5;66;03m# but due to how Altair is set up this should hold.\u001b[39;00m\n\u001b[1;32m 960\u001b[0m \u001b[38;5;66;03m# Too complex to type hint right now\u001b[39;00m\n\u001b[0;32m--> 961\u001b[0m vegalite_spec \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mTopLevelMixin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[misc]\u001b[39;49;00m\n\u001b[1;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalidate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvalidate\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mdict\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_transform\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 963\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 965\u001b[0m \u001b[38;5;66;03m# TODO: following entries are added after validation. Should they be validated?\u001b[39;00m\n\u001b[1;32m 966\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_top_level:\n\u001b[1;32m 967\u001b[0m \u001b[38;5;66;03m# since this is top-level we add $schema if it's missing\u001b[39;00m\n",
+ "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/altair/utils/schemapi.py:978\u001b[0m, in \u001b[0;36mSchemaBase.to_dict\u001b[0;34m(self, validate, ignore, context)\u001b[0m\n\u001b[1;32m 971\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalidate(result)\n\u001b[1;32m 972\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m jsonschema\u001b[38;5;241m.\u001b[39mValidationError \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[1;32m 973\u001b[0m \u001b[38;5;66;03m# We do not raise `from err` as else the resulting\u001b[39;00m\n\u001b[1;32m 974\u001b[0m \u001b[38;5;66;03m# traceback is very long as it contains part\u001b[39;00m\n\u001b[1;32m 975\u001b[0m \u001b[38;5;66;03m# of the Vega-Lite schema. It would also first\u001b[39;00m\n\u001b[1;32m 976\u001b[0m \u001b[38;5;66;03m# show the less helpful ValidationError instead of\u001b[39;00m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;66;03m# the more user friendly SchemaValidationError\u001b[39;00m\n\u001b[0;32m--> 978\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SchemaValidationError(\u001b[38;5;28mself\u001b[39m, err) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 979\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n",
+ "\u001b[0;31mSchemaValidationError\u001b[0m: `Scale` has no parameter named 'children'\n\nExisting parameter names are:\nalign domain exponent paddingOuter round \nbase domainMax interpolate range scheme \nbins domainMid nice rangeMax type \nclamp domainMin padding rangeMin zero \nconstant domainRaw paddingInner reverse \n\nSee the help for `Scale` to read the full description of these parameters"
]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "alt.LayerChart(...)"
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "speedmap_state = shared_utils.rt_utils.set_state_export(\n",
- " peak_test, filename=f'{itp_id}_new', map_type='speedmap',\n",
- " color_col='p20_mph', cmap=cmap, legend_url=url,\n",
- " cache_seconds=0, map_title=f'Speedmap Segs {analysis_date}')"
+ "df = speedmap_segs[['time_of_day', 'p50_mph', 'p20_mph', 'p80_mph']]\n",
+ "df = df >> group_by(_.time_of_day) >> summarize(p50_mph = _.p50_mph.quantile(.5),\n",
+ " p20_mph = _.p20_mph.quantile(.5),\n",
+ " p80_mph = _.p80_mph.quantile(.5),)\n",
+ "df['y_err'] = -(df['p50_mph'] - df['p20_mph'])\n",
+ "df['y_err2'] = df['p80_mph'] - df['p50_mph']\n",
+ "\n",
+ "error_bars = alt.Chart(df).mark_errorbar(thickness=5,\n",
+ " color='gray',\n",
+ " opacity=.8).encode(\n",
+ " # y = alt.Y(\"p50_mph:Q\").scale(zero=False),\n",
+ " y = alt.Y(\"p50_mph:Q\").scale(zero=False),\n",
+ " yError=(\"y_err:Q\"),\n",
+ " yError2=(\"y_err2:Q\"),\n",
+ " x = alt.X(\"time_of_day:N\", sort=['Early AM', 'AM Peak', 'Midday', 'PM Peak', 'Evening', 'Owl']),\n",
+ ")\n",
+ "\n",
+ "points = alt.Chart(df).mark_point(\n",
+ " filled=True,\n",
+ " # color=\"black\",\n",
+ ").encode(\n",
+ " alt.Y(\"p50_mph:Q\"),\n",
+ " alt.X(\"time_of_day:N\", sort=['Early AM', 'AM Peak', 'Midday', 'PM Peak', 'Evening', 'Owl']),\n",
+ " color=alt.Color('p50_mph', scale=cmap)\n",
+ ")\n",
+ "\n",
+ "error_bars + points\n",
+ "# error_bars"
]
},
{
"cell_type": "code",
- "execution_count": 25,
- "id": "75f2695e-4b80-4d91-8dce-1fa8e347729b",
+ "execution_count": 22,
+ "id": "551c030e-6f02-49d8-92f2-1d283fd3bc94",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "source = pd.DataFrame({\n",
+ " \"yield_error\": [7.5522, 6.9775, 3.9167, 11.9732],\n",
+ " \"yield_center\": [32.4, 30.96667, 33.966665, 30.45],\n",
+ " \"variety\": [\"Glabron\", \"Manchuria\", \"No. 457\", \"No. 462\"],\n",
+ "})\n",
+ "\n",
+ "bar = alt.Chart(source).mark_errorbar().encode(\n",
+ " x=alt.X(\"yield_center:Q\").scale(zero=False).title(\"yield\"),\n",
+ " xError=(\"yield_error:Q\"),\n",
+ " y=alt.Y(\"variety:N\"),\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "8dd67db3-eeb8-4b0b-ae2e-d5e3a96f1de6",
"metadata": {},
"outputs": [
{
"data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
"text/plain": [
- "{'state_dict': {'name': 'null',\n",
- " 'layers': [{'name': 'Speedmap Segs 2024-08-14',\n",
- " 'url': 'https://storage.googleapis.com/calitp-map-tiles/testing/4_new.geojson.gz',\n",
- " 'properties': {'stroked': False,\n",
- " 'highlight_saturation_multiplier': 0.5,\n",
- " 'tooltip_speed_key': 'p20_mph'},\n",
- " 'type': 'speedmap'}],\n",
- " 'lat_lon': (37.770058496990686, -122.19994575258353),\n",
- " 'zoom': 13,\n",
- " 'legend_url': 'https://storage.googleapis.com/calitp-map-tiles/speeds_legend.svg'},\n",
- " 'spa_link': 'https://embeddable-maps.calitp.org/?state=eyJuYW1lIjogIm51bGwiLCAibGF5ZXJzIjogW3sibmFtZSI6ICJTcGVlZG1hcCBTZWdzIDIwMjQtMDgtMTQiLCAidXJsIjogImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9jYWxpdHAtbWFwLXRpbGVzL3Rlc3RpbmcvNF9uZXcuZ2VvanNvbi5neiIsICJwcm9wZXJ0aWVzIjogeyJzdHJva2VkIjogZmFsc2UsICJoaWdobGlnaHRfc2F0dXJhdGlvbl9tdWx0aXBsaWVyIjogMC41LCAidG9vbHRpcF9zcGVlZF9rZXkiOiAicDIwX21waCJ9LCAidHlwZSI6ICJzcGVlZG1hcCJ9XSwgImxhdF9sb24iOiBbMzcuNzcwMDU4NDk2OTkwNjg2LCAtMTIyLjE5OTk0NTc1MjU4MzUzXSwgInpvb20iOiAxMywgImxlZ2VuZF91cmwiOiAiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2NhbGl0cC1tYXAtdGlsZXMvc3BlZWRzX2xlZ2VuZC5zdmcifQ=='}"
+ "alt.Chart(...)"
]
},
- "execution_count": 25,
+ "execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "speedmap_state"
+ "bar"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "737ad30b-cf8b-403a-ba37-4a77e00cfff1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "## TODO get a better chart -- p20 - 50 - 80 seg speed?\n",
+ "# try:\n",
+ "# rt_day.set_filter(start_time='06:00', end_time='22:00')\n",
+ "# display(Markdown(f'Median Trip Speed by Hour of Day{rt_day.filter_formatted}'))\n",
+ "\n",
+ "# rt_day.chart_speeds(no_title=True);\n",
+ "# except:\n",
+ "# display(Markdown(f'Chart not available for this agency'))\n",
+ "# pass"
]
}
],
diff --git a/ca_transit_speed_maps/Makefile b/ca_transit_speed_maps/Makefile
index 5df496396..122694c9d 100644
--- a/ca_transit_speed_maps/Makefile
+++ b/ca_transit_speed_maps/Makefile
@@ -1,3 +1,7 @@
+generate_speedmaps_quickly:
+ python build_speedmaps_index.py
+ python stage_run_portfolio.py
+
generate_speedmaps_slowly:
python build_speedmaps_index.py
python check_stage_intermediate.py
diff --git a/ca_transit_speed_maps/build_speedmaps_index.py b/ca_transit_speed_maps/build_speedmaps_index.py
index 75b972450..20fcc2e0f 100644
--- a/ca_transit_speed_maps/build_speedmaps_index.py
+++ b/ca_transit_speed_maps/build_speedmaps_index.py
@@ -16,7 +16,7 @@
SEGMENT_GCS,
)
-ANALYSIS_DATE = dt.date.fromisoformat(rt_dates.DATES['aug2024'])
+ANALYSIS_DATE = dt.date.fromisoformat(rt_dates.DATES['oct2024'])
PROGRESS_PATH = f'./_rt_progress_{ANALYSIS_DATE}.parquet'
def build_speedmaps_index(analysis_date: dt.date, how: str = 'new') -> pd.DataFrame:
@@ -37,6 +37,7 @@ def build_speedmaps_index(analysis_date: dt.date, how: str = 'new') -> pd.DataFr
_.public_customer_facing_or_regional_subfeed_fixed_route,
_.vehicle_positions_gtfs_dataset_key != None)
>> inner_join(_, dim_orgs, on = {'organization_source_record_id': 'source_record_id'})
+ # TODO replace deprecated caltrans_district with via dim_county_geography
>> select(_.organization_itp_id, _.organization_name, _.organization_source_record_id,
_.caltrans_district, _._is_current, _.vehicle_positions_gtfs_dataset_key,
_.schedule_gtfs_dataset_key)
@@ -62,6 +63,6 @@ def build_speedmaps_index(analysis_date: dt.date, how: str = 'new') -> pd.DataFr
if __name__ == "__main__":
print(f'analysis date from shared_utils/rt_dates: {ANALYSIS_DATE}')
- speedmaps_index = build_speedmaps_index(ANALYSIS_DATE)
+ speedmaps_index = build_speedmaps_index(ANALYSIS_DATE, how = 'new')
# speedmaps_index = rt_utils.check_intermediate_data(speedmaps_index)
speedmaps_index.to_parquet(PROGRESS_PATH)
\ No newline at end of file
diff --git a/ca_transit_speed_maps/speedmaps.ipynb b/ca_transit_speed_maps/speedmaps.ipynb
index cdb8ed59e..857731d13 100644
--- a/ca_transit_speed_maps/speedmaps.ipynb
+++ b/ca_transit_speed_maps/speedmaps.ipynb
@@ -23,1498 +23,6 @@
{
"cell_type": "code",
"execution_count": 2,
- "id": "aa3b6148-7a82-4c38-89f5-537983c34cf4",
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "89339475-3297-418a-8aba-932b1ee4f44e",
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "5480334a-7018-4fbd-87c5-0a3d74fcba00",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " organization_name | \n",
- " organization_itp_id | \n",
- " organization_source_record_id | \n",
- " caltrans_district | \n",
- " _is_current | \n",
- " analysis_date | \n",
- " status | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " Nevada County | \n",
- " 221 | \n",
- " reczUcQgqgtMpkpKC | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " City of Rosemead | \n",
- " 270 | \n",
- " recKA7jKmdhFnj2ki | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " City of Union City | \n",
- " 350 | \n",
- " recmB4uxrVLRXYF3L | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " City of Elk Grove | \n",
- " 105 | \n",
- " recaJnArpFEk5QooE | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " Capitol Corridor Joint Powers Authority | \n",
- " 56 | \n",
- " recvEBkSBc7UxlarC | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 5 | \n",
- " Golden Gate Bridge, Highway and Transportation... | \n",
- " 127 | \n",
- " recoX7qMhlPrgfuz3 | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 6 | \n",
- " Sonoma-Marin Area Rail Transit District | \n",
- " 315 | \n",
- " recUmm4gcNXaqrwpn | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 7 | \n",
- " Central Contra Costa Transit Authority | \n",
- " 61 | \n",
- " recjnaKVDEgulsko3 | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 8 | \n",
- " University of California, Berkeley | \n",
- " 33 | \n",
- " recD9x7GHPrN46v6m | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 9 | \n",
- " Solano County Transit | \n",
- " 310 | \n",
- " reclLbvvKE1V4zsZg | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " Solano Transportation Authority | \n",
- " 381 | \n",
- " rec7ShjfgRPLU0yjY | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 11 | \n",
- " City of Santa Clarita | \n",
- " 295 | \n",
- " recImm5SmW2zq9rMT | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 12 | \n",
- " Monterey-Salinas Transit | \n",
- " 208 | \n",
- " receZJ9sEnP9vy3g0 | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 13 | \n",
- " City of Solvang | \n",
- " 312 | \n",
- " reckp33bhAuZlmO1M | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 14 | \n",
- " University of California, Davis | \n",
- " 351 | \n",
- " recS1JKEz73Hev8pJ | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 15 | \n",
- " Victor Valley Transit Authority | \n",
- " 360 | \n",
- " recJcXMNC5MUm2uDe | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 16 | \n",
- " San Mateo County Transit District | \n",
- " 290 | \n",
- " recw3mRsmKDTNnVlT | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 17 | \n",
- " Butte County Association of Governments | \n",
- " 48 | \n",
- " recf7l9tozKXOmqqZ | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 18 | \n",
- " Kings County Area Public Transit Agency | \n",
- " 148 | \n",
- " rec5MLJKrAgeM8f6H | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 19 | \n",
- " City of Burbank | \n",
- " 45 | \n",
- " rec6z2ivjTxc8Sag3 | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 20 | \n",
- " Santa Barbara Metropolitan Transit District | \n",
- " 293 | \n",
- " recswCrw6a6htmXJ4 | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 21 | \n",
- " Peninsula Corridor Joint Powers Board | \n",
- " 246 | \n",
- " rec2ErIfztLMJ4rgG | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 22 | \n",
- " Anaheim Transportation Network | \n",
- " 14 | \n",
- " recsrIZdx5Wt6n3ol | \n",
- " 12 - Irvine | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 23 | \n",
- " City of Duarte | \n",
- " 97 | \n",
- " recZm8PD8WIdcDL0M | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 24 | \n",
- " Foothill Transit | \n",
- " 112 | \n",
- " recSqgaa8QiQ8CRjl | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 25 | \n",
- " City of Beaumont | \n",
- " 34 | \n",
- " reciWrBgYsAIm9eKK | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 26 | \n",
- " City of Santa Maria | \n",
- " 298 | \n",
- " rec9zGMJgNnes75K1 | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 27 | \n",
- " City of Santa Rosa | \n",
- " 301 | \n",
- " recsNvWvLQwGsoxlE | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 28 | \n",
- " Riverside Transit Agency | \n",
- " 269 | \n",
- " recYgajd92VLqio1p | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 29 | \n",
- " Commute.org | \n",
- " 76 | \n",
- " reczvlrgxLUDiBgAy | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 30 | \n",
- " City of Santa Monica | \n",
- " 300 | \n",
- " recJHFDLpGRMIFgnL | \n",
- " 07 - Los Angeles | \n",
- " False | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 31 | \n",
- " Golden Empire Transit District | \n",
- " 126 | \n",
- " recIh3vq8jwuuJlvL | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 32 | \n",
- " Western Contra Costa Transit Authority | \n",
- " 368 | \n",
- " recIKnsnTdKQ0vsiv | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 33 | \n",
- " Southern California Regional Rail Authority | \n",
- " 323 | \n",
- " rec7YtRySB7AsTfLw | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 34 | \n",
- " City of Pasadena | \n",
- " 243 | \n",
- " reczF5Y8R9CUJmfSy | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 35 | \n",
- " City of Gardena | \n",
- " 118 | \n",
- " recX4nQfupRQf3xGD | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 36 | \n",
- " City of Escalon | \n",
- " 107 | \n",
- " recNeVOEwWUtYe8xm | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 37 | \n",
- " City of Torrance | \n",
- " 339 | \n",
- " recvzE9NXgGMmqcTH | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 38 | \n",
- " Santa Cruz Metropolitan Transit District | \n",
- " 296 | \n",
- " recDFXyxaWQpiY4mw | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 39 | \n",
- " Livermore-Amador Valley Transit Authority | \n",
- " 167 | \n",
- " recANs4M9yDhvDyob | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 40 | \n",
- " Tulare County Regional Transit Agency | \n",
- " 474 | \n",
- " rec4YWVqVwJ9XqDbq | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 41 | \n",
- " City of Fairfield | \n",
- " 110 | \n",
- " recot6qBamlOoLcrM | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 42 | \n",
- " Los Angeles County Metropolitan Transportation... | \n",
- " 182 | \n",
- " recPnGkwdpnr8jmHB | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 43 | \n",
- " San Joaquin Regional Rail Commission | \n",
- " 10 | \n",
- " recpgYVeU3VePMeWx | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 44 | \n",
- " San Francisco Bay Area Rapid Transit District | \n",
- " 279 | \n",
- " recoQLeNRISCKF8I0 | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 45 | \n",
- " Redwood Coast Transit Authority | \n",
- " 261 | \n",
- " recOnKhqF25crJt4q | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 46 | \n",
- " Eastern Contra Costa Transit Authority | \n",
- " 336 | \n",
- " recEEJVeGrHGoTwgj | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 47 | \n",
- " City of Eureka | \n",
- " 108 | \n",
- " recynxkqEoo9dJEvw | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 48 | \n",
- " Humboldt Transit Authority | \n",
- " 135 | \n",
- " recaa3naoNR4a5RsJ | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 49 | \n",
- " City of Arcata | \n",
- " 18 | \n",
- " recaaoqEDvwhcmIVT | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 50 | \n",
- " Cloverdale Transit | \n",
- " 70 | \n",
- " recRM3c9Zfaft4V2B | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 51 | \n",
- " Sonoma County | \n",
- " 314 | \n",
- " recDupUxInMUgxeiz | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 52 | \n",
- " Tahoe Transportation District | \n",
- " 331 | \n",
- " rec3u4aMplqObcoTR | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 53 | \n",
- " City of San Luis Obispo | \n",
- " 287 | \n",
- " recMM99msxjmc6PPv | \n",
- " 05 - San Luis Obispo | \n",
- " False | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 54 | \n",
- " OmniTrans | \n",
- " 232 | \n",
- " recG5aXxDPI645S86 | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 55 | \n",
- " Eastern Sierra Transit Authority | \n",
- " 99 | \n",
- " recRajLNJI206nnAr | \n",
- " 09 - Bishop | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 56 | \n",
- " City of Turlock | \n",
- " 349 | \n",
- " recmQVsPDG6sLtD6j | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 57 | \n",
- " City of Ojai | \n",
- " 231 | \n",
- " reckQmUdXUzHFmlVf | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 58 | \n",
- " Ventura County Transportation Commission | \n",
- " 380 | \n",
- " rec7EN71rsZxDFxZd | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 59 | \n",
- " Gold Coast Transit District | \n",
- " 123 | \n",
- " recS7GnKTcQVX20HE | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 60 | \n",
- " City of Simi Valley | \n",
- " 308 | \n",
- " rec1ErIn9gG1Isk5W | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 61 | \n",
- " City of Moorpark | \n",
- " 210 | \n",
- " recojKzQsBzE1hjVu | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 62 | \n",
- " City of Thousand Oaks | \n",
- " 337 | \n",
- " recPJULRJk1Yn824N | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 63 | \n",
- " City of Camarillo | \n",
- " 54 | \n",
- " recD4Vzt0EDC3VY7I | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 64 | \n",
- " City of Arcadia | \n",
- " 17 | \n",
- " recjaoK08lDmhjQga | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 65 | \n",
- " Mountain Area Regional Transit Authority | \n",
- " 214 | \n",
- " recHbquam1bWEwC3P | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 66 | \n",
- " Palo Verde Valley Transit Agency | \n",
- " 238 | \n",
- " recGcv4NidDjwVSiN | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 67 | \n",
- " Long Beach Transit | \n",
- " 170 | \n",
- " rec00qSzZL8KqiXAo | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 68 | \n",
- " Lake Transit Authority | \n",
- " 159 | \n",
- " recPwXKbGLL4aIqXV | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 69 | \n",
- " City of Fresno | \n",
- " 116 | \n",
- " rec0bKUhHAajTNIlf | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 70 | \n",
- " Napa Valley Transportation Authority | \n",
- " 218 | \n",
- " rec9RGrya9SjWYp2p | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 71 | \n",
- " Stanislaus Regional Transit Authority | \n",
- " 484 | \n",
- " recSiaaMmBXW7fUZS | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 72 | \n",
- " Santa Clara Valley Transportation Authority | \n",
- " 294 | \n",
- " recC5CT95EufmQCXr | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 73 | \n",
- " San Diego Metropolitan Transit System | \n",
- " 278 | \n",
- " recZALk4vysuoTVjF | \n",
- " 11 - San Diego | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 74 | \n",
- " San Diego International Airport | \n",
- " 277 | \n",
- " recfbLFdDnCxgIfAB | \n",
- " 11 - San Diego | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 75 | \n",
- " San Joaquin Regional Transit District | \n",
- " 284 | \n",
- " recZgWVXkpix390of | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 76 | \n",
- " Orange County Transportation Authority | \n",
- " 235 | \n",
- " recfma7GNR5lQTTTg | \n",
- " 12 - Irvine | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 77 | \n",
- " Yolo County Transportation District | \n",
- " 372 | \n",
- " recH2FdHvrL7nIpHA | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 78 | \n",
- " North County Transit District | \n",
- " 226 | \n",
- " recRBcrX4ZvTyvSnm | \n",
- " 11 - San Diego | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 79 | \n",
- " City of Norwalk | \n",
- " 228 | \n",
- " recPkUZgzjCjk5GrV | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 80 | \n",
- " City of Petaluma | \n",
- " 247 | \n",
- " recUbGDXhPdx3494b | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 81 | \n",
- " City of Commerce | \n",
- " 75 | \n",
- " recd0hxcumVMausDU | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 82 | \n",
- " Redding Area Bus Authority | \n",
- " 259 | \n",
- " recI1fuNpr306H0hw | \n",
- " 02 - Redding | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 83 | \n",
- " San Francisco International Airport | \n",
- " 281 | \n",
- " recd6X5l7vkBXk9hc | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 84 | \n",
- " City and County of San Francisco | \n",
- " 282 | \n",
- " rechaapWbeffO33OX | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 85 | \n",
- " Transit Joint Powers Authority for Merced County | \n",
- " 343 | \n",
- " recVSX7dwjxAb557T | \n",
- " 10 - Stockton | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 86 | \n",
- " Antelope Valley Transit Authority | \n",
- " 16 | \n",
- " recxsWR0KRrQTdjmg | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 87 | \n",
- " City of Visalia | \n",
- " 361 | \n",
- " rec6gNibVKjDVy4aX | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 88 | \n",
- " Alameda-Contra Costa Transit District | \n",
- " 4 | \n",
- " recOZgevYf7Jimm9L | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 89 | \n",
- " City of Redondo Beach | \n",
- " 260 | \n",
- " rec8zhnCPETu6qEiH | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 90 | \n",
- " City of South San Francisco | \n",
- " 481 | \n",
- " recPtsCi89lKcXaTW | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 91 | \n",
- " City of Culver City | \n",
- " 87 | \n",
- " rec5ome04BbA9uf4y | \n",
- " 07 - Los Angeles | \n",
- " False | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 92 | \n",
- " City of Vacaville | \n",
- " 356 | \n",
- " recdujao2F9Hga9Od | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 93 | \n",
- " Mendocino Transit Authority | \n",
- " 198 | \n",
- " recpWBEjXzLHqCjhE | \n",
- " 01 - Eureka | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 94 | \n",
- " Madera County | \n",
- " 188 | \n",
- " recWLwvtjXhiVWjKt | \n",
- " 06 - Fresno | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 95 | \n",
- " City of Roseville | \n",
- " 271 | \n",
- " recUdTq5QiUjJRiAe | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 96 | \n",
- " City of Rancho Cordova | \n",
- " 489 | \n",
- " rec43oyrfhtPDdRHj | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 97 | \n",
- " Sacramento Regional Transit District | \n",
- " 273 | \n",
- " recX9lccSE1jmjsmG | \n",
- " 03 - Marysville | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 98 | \n",
- " San Francisco Bay Area Water Emergency Transit... | \n",
- " 280 | \n",
- " recmatCuQAUrNcs8j | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 99 | \n",
- " SunLine Transit Agency | \n",
- " 327 | \n",
- " recAsbHMwQWB7cri8 | \n",
- " 08 - San Bernardino | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 100 | \n",
- " City of Rio Vista | \n",
- " 264 | \n",
- " recaUmi7EJdPiG067 | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- " 101 | \n",
- " City of Los Angeles | \n",
- " 183 | \n",
- " rec4pgjrmdhCh4z01 | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 102 | \n",
- " City of Montebello | \n",
- " 206 | \n",
- " recohwwty1Jn4lnsb | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 103 | \n",
- " City of Monterey Park | \n",
- " 207 | \n",
- " reccAVEcMntkbh6aY | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 104 | \n",
- " Marin County Transit District | \n",
- " 194 | \n",
- " recNOb7pqBRlQVG5e | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 105 | \n",
- " City of West Hollywood | \n",
- " 367 | \n",
- " rec2LbE0IBKBAkvQr | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_failed | \n",
- "
\n",
- " \n",
- " 106 | \n",
- " San Luis Obispo Regional Transit Authority | \n",
- " 289 | \n",
- " reciakGBN1DP9dK9N | \n",
- " 05 - San Luis Obispo | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 107 | \n",
- " Presidio Trust | \n",
- " 257 | \n",
- " recsBfXgev9ICDCY1 | \n",
- " 04 - Oakland | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " map_confirmed | \n",
- "
\n",
- " \n",
- " 108 | \n",
- " City of Downey | \n",
- " 95 | \n",
- " rec21lizHh1D0uU00 | \n",
- " 07 - Los Angeles | \n",
- " True | \n",
- " 2024-08-14 | \n",
- " parser_failed | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " organization_name organization_itp_id \\\n",
- "0 Nevada County 221 \n",
- "1 City of Rosemead 270 \n",
- "2 City of Union City 350 \n",
- "3 City of Elk Grove 105 \n",
- "4 Capitol Corridor Joint Powers Authority 56 \n",
- "5 Golden Gate Bridge, Highway and Transportation... 127 \n",
- "6 Sonoma-Marin Area Rail Transit District 315 \n",
- "7 Central Contra Costa Transit Authority 61 \n",
- "8 University of California, Berkeley 33 \n",
- "9 Solano County Transit 310 \n",
- "10 Solano Transportation Authority 381 \n",
- "11 City of Santa Clarita 295 \n",
- "12 Monterey-Salinas Transit 208 \n",
- "13 City of Solvang 312 \n",
- "14 University of California, Davis 351 \n",
- "15 Victor Valley Transit Authority 360 \n",
- "16 San Mateo County Transit District 290 \n",
- "17 Butte County Association of Governments 48 \n",
- "18 Kings County Area Public Transit Agency 148 \n",
- "19 City of Burbank 45 \n",
- "20 Santa Barbara Metropolitan Transit District 293 \n",
- "21 Peninsula Corridor Joint Powers Board 246 \n",
- "22 Anaheim Transportation Network 14 \n",
- "23 City of Duarte 97 \n",
- "24 Foothill Transit 112 \n",
- "25 City of Beaumont 34 \n",
- "26 City of Santa Maria 298 \n",
- "27 City of Santa Rosa 301 \n",
- "28 Riverside Transit Agency 269 \n",
- "29 Commute.org 76 \n",
- "30 City of Santa Monica 300 \n",
- "31 Golden Empire Transit District 126 \n",
- "32 Western Contra Costa Transit Authority 368 \n",
- "33 Southern California Regional Rail Authority 323 \n",
- "34 City of Pasadena 243 \n",
- "35 City of Gardena 118 \n",
- "36 City of Escalon 107 \n",
- "37 City of Torrance 339 \n",
- "38 Santa Cruz Metropolitan Transit District 296 \n",
- "39 Livermore-Amador Valley Transit Authority 167 \n",
- "40 Tulare County Regional Transit Agency 474 \n",
- "41 City of Fairfield 110 \n",
- "42 Los Angeles County Metropolitan Transportation... 182 \n",
- "43 San Joaquin Regional Rail Commission 10 \n",
- "44 San Francisco Bay Area Rapid Transit District 279 \n",
- "45 Redwood Coast Transit Authority 261 \n",
- "46 Eastern Contra Costa Transit Authority 336 \n",
- "47 City of Eureka 108 \n",
- "48 Humboldt Transit Authority 135 \n",
- "49 City of Arcata 18 \n",
- "50 Cloverdale Transit 70 \n",
- "51 Sonoma County 314 \n",
- "52 Tahoe Transportation District 331 \n",
- "53 City of San Luis Obispo 287 \n",
- "54 OmniTrans 232 \n",
- "55 Eastern Sierra Transit Authority 99 \n",
- "56 City of Turlock 349 \n",
- "57 City of Ojai 231 \n",
- "58 Ventura County Transportation Commission 380 \n",
- "59 Gold Coast Transit District 123 \n",
- "60 City of Simi Valley 308 \n",
- "61 City of Moorpark 210 \n",
- "62 City of Thousand Oaks 337 \n",
- "63 City of Camarillo 54 \n",
- "64 City of Arcadia 17 \n",
- "65 Mountain Area Regional Transit Authority 214 \n",
- "66 Palo Verde Valley Transit Agency 238 \n",
- "67 Long Beach Transit 170 \n",
- "68 Lake Transit Authority 159 \n",
- "69 City of Fresno 116 \n",
- "70 Napa Valley Transportation Authority 218 \n",
- "71 Stanislaus Regional Transit Authority 484 \n",
- "72 Santa Clara Valley Transportation Authority 294 \n",
- "73 San Diego Metropolitan Transit System 278 \n",
- "74 San Diego International Airport 277 \n",
- "75 San Joaquin Regional Transit District 284 \n",
- "76 Orange County Transportation Authority 235 \n",
- "77 Yolo County Transportation District 372 \n",
- "78 North County Transit District 226 \n",
- "79 City of Norwalk 228 \n",
- "80 City of Petaluma 247 \n",
- "81 City of Commerce 75 \n",
- "82 Redding Area Bus Authority 259 \n",
- "83 San Francisco International Airport 281 \n",
- "84 City and County of San Francisco 282 \n",
- "85 Transit Joint Powers Authority for Merced County 343 \n",
- "86 Antelope Valley Transit Authority 16 \n",
- "87 City of Visalia 361 \n",
- "88 Alameda-Contra Costa Transit District 4 \n",
- "89 City of Redondo Beach 260 \n",
- "90 City of South San Francisco 481 \n",
- "91 City of Culver City 87 \n",
- "92 City of Vacaville 356 \n",
- "93 Mendocino Transit Authority 198 \n",
- "94 Madera County 188 \n",
- "95 City of Roseville 271 \n",
- "96 City of Rancho Cordova 489 \n",
- "97 Sacramento Regional Transit District 273 \n",
- "98 San Francisco Bay Area Water Emergency Transit... 280 \n",
- "99 SunLine Transit Agency 327 \n",
- "100 City of Rio Vista 264 \n",
- "101 City of Los Angeles 183 \n",
- "102 City of Montebello 206 \n",
- "103 City of Monterey Park 207 \n",
- "104 Marin County Transit District 194 \n",
- "105 City of West Hollywood 367 \n",
- "106 San Luis Obispo Regional Transit Authority 289 \n",
- "107 Presidio Trust 257 \n",
- "108 City of Downey 95 \n",
- "\n",
- " organization_source_record_id caltrans_district _is_current \\\n",
- "0 reczUcQgqgtMpkpKC 03 - Marysville True \n",
- "1 recKA7jKmdhFnj2ki 07 - Los Angeles True \n",
- "2 recmB4uxrVLRXYF3L 04 - Oakland True \n",
- "3 recaJnArpFEk5QooE 03 - Marysville True \n",
- "4 recvEBkSBc7UxlarC 04 - Oakland True \n",
- "5 recoX7qMhlPrgfuz3 04 - Oakland True \n",
- "6 recUmm4gcNXaqrwpn 04 - Oakland True \n",
- "7 recjnaKVDEgulsko3 04 - Oakland True \n",
- "8 recD9x7GHPrN46v6m 04 - Oakland True \n",
- "9 reclLbvvKE1V4zsZg 04 - Oakland True \n",
- "10 rec7ShjfgRPLU0yjY 04 - Oakland True \n",
- "11 recImm5SmW2zq9rMT 07 - Los Angeles True \n",
- "12 receZJ9sEnP9vy3g0 05 - San Luis Obispo True \n",
- "13 reckp33bhAuZlmO1M 05 - San Luis Obispo True \n",
- "14 recS1JKEz73Hev8pJ 03 - Marysville True \n",
- "15 recJcXMNC5MUm2uDe 08 - San Bernardino True \n",
- "16 recw3mRsmKDTNnVlT 04 - Oakland True \n",
- "17 recf7l9tozKXOmqqZ 03 - Marysville True \n",
- "18 rec5MLJKrAgeM8f6H 06 - Fresno True \n",
- "19 rec6z2ivjTxc8Sag3 07 - Los Angeles True \n",
- "20 recswCrw6a6htmXJ4 05 - San Luis Obispo True \n",
- "21 rec2ErIfztLMJ4rgG 04 - Oakland True \n",
- "22 recsrIZdx5Wt6n3ol 12 - Irvine True \n",
- "23 recZm8PD8WIdcDL0M 07 - Los Angeles True \n",
- "24 recSqgaa8QiQ8CRjl 07 - Los Angeles True \n",
- "25 reciWrBgYsAIm9eKK 08 - San Bernardino True \n",
- "26 rec9zGMJgNnes75K1 05 - San Luis Obispo True \n",
- "27 recsNvWvLQwGsoxlE 04 - Oakland True \n",
- "28 recYgajd92VLqio1p 08 - San Bernardino True \n",
- "29 reczvlrgxLUDiBgAy 04 - Oakland True \n",
- "30 recJHFDLpGRMIFgnL 07 - Los Angeles False \n",
- "31 recIh3vq8jwuuJlvL 06 - Fresno True \n",
- "32 recIKnsnTdKQ0vsiv 04 - Oakland True \n",
- "33 rec7YtRySB7AsTfLw 07 - Los Angeles True \n",
- "34 reczF5Y8R9CUJmfSy 07 - Los Angeles True \n",
- "35 recX4nQfupRQf3xGD 07 - Los Angeles True \n",
- "36 recNeVOEwWUtYe8xm 10 - Stockton True \n",
- "37 recvzE9NXgGMmqcTH 07 - Los Angeles True \n",
- "38 recDFXyxaWQpiY4mw 05 - San Luis Obispo True \n",
- "39 recANs4M9yDhvDyob 04 - Oakland True \n",
- "40 rec4YWVqVwJ9XqDbq 06 - Fresno True \n",
- "41 recot6qBamlOoLcrM 04 - Oakland True \n",
- "42 recPnGkwdpnr8jmHB 07 - Los Angeles True \n",
- "43 recpgYVeU3VePMeWx 10 - Stockton True \n",
- "44 recoQLeNRISCKF8I0 04 - Oakland True \n",
- "45 recOnKhqF25crJt4q 01 - Eureka True \n",
- "46 recEEJVeGrHGoTwgj 04 - Oakland True \n",
- "47 recynxkqEoo9dJEvw 01 - Eureka True \n",
- "48 recaa3naoNR4a5RsJ 01 - Eureka True \n",
- "49 recaaoqEDvwhcmIVT 01 - Eureka True \n",
- "50 recRM3c9Zfaft4V2B 04 - Oakland True \n",
- "51 recDupUxInMUgxeiz 04 - Oakland True \n",
- "52 rec3u4aMplqObcoTR 03 - Marysville True \n",
- "53 recMM99msxjmc6PPv 05 - San Luis Obispo False \n",
- "54 recG5aXxDPI645S86 08 - San Bernardino True \n",
- "55 recRajLNJI206nnAr 09 - Bishop True \n",
- "56 recmQVsPDG6sLtD6j 10 - Stockton True \n",
- "57 reckQmUdXUzHFmlVf 07 - Los Angeles True \n",
- "58 rec7EN71rsZxDFxZd 07 - Los Angeles True \n",
- "59 recS7GnKTcQVX20HE 07 - Los Angeles True \n",
- "60 rec1ErIn9gG1Isk5W 07 - Los Angeles True \n",
- "61 recojKzQsBzE1hjVu 07 - Los Angeles True \n",
- "62 recPJULRJk1Yn824N 07 - Los Angeles True \n",
- "63 recD4Vzt0EDC3VY7I 07 - Los Angeles True \n",
- "64 recjaoK08lDmhjQga 07 - Los Angeles True \n",
- "65 recHbquam1bWEwC3P 08 - San Bernardino True \n",
- "66 recGcv4NidDjwVSiN 08 - San Bernardino True \n",
- "67 rec00qSzZL8KqiXAo 07 - Los Angeles True \n",
- "68 recPwXKbGLL4aIqXV 01 - Eureka True \n",
- "69 rec0bKUhHAajTNIlf 06 - Fresno True \n",
- "70 rec9RGrya9SjWYp2p 04 - Oakland True \n",
- "71 recSiaaMmBXW7fUZS 10 - Stockton True \n",
- "72 recC5CT95EufmQCXr 04 - Oakland True \n",
- "73 recZALk4vysuoTVjF 11 - San Diego True \n",
- "74 recfbLFdDnCxgIfAB 11 - San Diego True \n",
- "75 recZgWVXkpix390of 10 - Stockton True \n",
- "76 recfma7GNR5lQTTTg 12 - Irvine True \n",
- "77 recH2FdHvrL7nIpHA 03 - Marysville True \n",
- "78 recRBcrX4ZvTyvSnm 11 - San Diego True \n",
- "79 recPkUZgzjCjk5GrV 07 - Los Angeles True \n",
- "80 recUbGDXhPdx3494b 04 - Oakland True \n",
- "81 recd0hxcumVMausDU 07 - Los Angeles True \n",
- "82 recI1fuNpr306H0hw 02 - Redding True \n",
- "83 recd6X5l7vkBXk9hc 04 - Oakland True \n",
- "84 rechaapWbeffO33OX 04 - Oakland True \n",
- "85 recVSX7dwjxAb557T 10 - Stockton True \n",
- "86 recxsWR0KRrQTdjmg 07 - Los Angeles True \n",
- "87 rec6gNibVKjDVy4aX 06 - Fresno True \n",
- "88 recOZgevYf7Jimm9L 04 - Oakland True \n",
- "89 rec8zhnCPETu6qEiH 07 - Los Angeles True \n",
- "90 recPtsCi89lKcXaTW 04 - Oakland True \n",
- "91 rec5ome04BbA9uf4y 07 - Los Angeles False \n",
- "92 recdujao2F9Hga9Od 04 - Oakland True \n",
- "93 recpWBEjXzLHqCjhE 01 - Eureka True \n",
- "94 recWLwvtjXhiVWjKt 06 - Fresno True \n",
- "95 recUdTq5QiUjJRiAe 03 - Marysville True \n",
- "96 rec43oyrfhtPDdRHj 03 - Marysville True \n",
- "97 recX9lccSE1jmjsmG 03 - Marysville True \n",
- "98 recmatCuQAUrNcs8j 04 - Oakland True \n",
- "99 recAsbHMwQWB7cri8 08 - San Bernardino True \n",
- "100 recaUmi7EJdPiG067 04 - Oakland True \n",
- "101 rec4pgjrmdhCh4z01 07 - Los Angeles True \n",
- "102 recohwwty1Jn4lnsb 07 - Los Angeles True \n",
- "103 reccAVEcMntkbh6aY 07 - Los Angeles True \n",
- "104 recNOb7pqBRlQVG5e 04 - Oakland True \n",
- "105 rec2LbE0IBKBAkvQr 07 - Los Angeles True \n",
- "106 reciakGBN1DP9dK9N 05 - San Luis Obispo True \n",
- "107 recsBfXgev9ICDCY1 04 - Oakland True \n",
- "108 rec21lizHh1D0uU00 07 - Los Angeles True \n",
- "\n",
- " analysis_date status \n",
- "0 2024-08-14 parser_failed \n",
- "1 2024-08-14 map_failed \n",
- "2 2024-08-14 map_confirmed \n",
- "3 2024-08-14 map_confirmed \n",
- "4 2024-08-14 map_confirmed \n",
- "5 2024-08-14 map_confirmed \n",
- "6 2024-08-14 map_confirmed \n",
- "7 2024-08-14 map_confirmed \n",
- "8 2024-08-14 map_confirmed \n",
- "9 2024-08-14 map_confirmed \n",
- "10 2024-08-14 map_confirmed \n",
- "11 2024-08-14 map_confirmed \n",
- "12 2024-08-14 map_confirmed \n",
- "13 2024-08-14 map_confirmed \n",
- "14 2024-08-14 map_failed \n",
- "15 2024-08-14 map_confirmed \n",
- "16 2024-08-14 map_confirmed \n",
- "17 2024-08-14 parser_failed \n",
- "18 2024-08-14 map_confirmed \n",
- "19 2024-08-14 map_confirmed \n",
- "20 2024-08-14 parser_failed \n",
- "21 2024-08-14 map_confirmed \n",
- "22 2024-08-14 map_failed \n",
- "23 2024-08-14 map_confirmed \n",
- "24 2024-08-14 map_confirmed \n",
- "25 2024-08-14 map_confirmed \n",
- "26 2024-08-14 map_confirmed \n",
- "27 2024-08-14 map_confirmed \n",
- "28 2024-08-14 map_confirmed \n",
- "29 2024-08-14 parser_failed \n",
- "30 2024-08-14 map_confirmed \n",
- "31 2024-08-14 map_confirmed \n",
- "32 2024-08-14 map_confirmed \n",
- "33 2024-08-14 parser_failed \n",
- "34 2024-08-14 map_confirmed \n",
- "35 2024-08-14 map_failed \n",
- "36 2024-08-14 map_confirmed \n",
- "37 2024-08-14 map_confirmed \n",
- "38 2024-08-14 map_confirmed \n",
- "39 2024-08-14 parser_failed \n",
- "40 2024-08-14 map_failed \n",
- "41 2024-08-14 map_confirmed \n",
- "42 2024-08-14 map_confirmed \n",
- "43 2024-08-14 map_confirmed \n",
- "44 2024-08-14 parser_failed \n",
- "45 2024-08-14 parser_failed \n",
- "46 2024-08-14 map_confirmed \n",
- "47 2024-08-14 map_confirmed \n",
- "48 2024-08-14 map_confirmed \n",
- "49 2024-08-14 map_confirmed \n",
- "50 2024-08-14 map_confirmed \n",
- "51 2024-08-14 map_confirmed \n",
- "52 2024-08-14 map_confirmed \n",
- "53 2024-08-14 parser_failed \n",
- "54 2024-08-14 map_confirmed \n",
- "55 2024-08-14 map_confirmed \n",
- "56 2024-08-14 map_confirmed \n",
- "57 2024-08-14 map_confirmed \n",
- "58 2024-08-14 map_confirmed \n",
- "59 2024-08-14 map_confirmed \n",
- "60 2024-08-14 map_confirmed \n",
- "61 2024-08-14 map_confirmed \n",
- "62 2024-08-14 map_confirmed \n",
- "63 2024-08-14 map_confirmed \n",
- "64 2024-08-14 map_failed \n",
- "65 2024-08-14 map_confirmed \n",
- "66 2024-08-14 map_confirmed \n",
- "67 2024-08-14 parser_failed \n",
- "68 2024-08-14 map_confirmed \n",
- "69 2024-08-14 map_confirmed \n",
- "70 2024-08-14 map_confirmed \n",
- "71 2024-08-14 map_confirmed \n",
- "72 2024-08-14 map_confirmed \n",
- "73 2024-08-14 map_confirmed \n",
- "74 2024-08-14 map_confirmed \n",
- "75 2024-08-14 map_confirmed \n",
- "76 2024-08-14 map_confirmed \n",
- "77 2024-08-14 map_confirmed \n",
- "78 2024-08-14 map_confirmed \n",
- "79 2024-08-14 map_confirmed \n",
- "80 2024-08-14 map_confirmed \n",
- "81 2024-08-14 map_failed \n",
- "82 2024-08-14 map_confirmed \n",
- "83 2024-08-14 parser_failed \n",
- "84 2024-08-14 map_confirmed \n",
- "85 2024-08-14 parser_failed \n",
- "86 2024-08-14 map_confirmed \n",
- "87 2024-08-14 map_confirmed \n",
- "88 2024-08-14 map_confirmed \n",
- "89 2024-08-14 map_confirmed \n",
- "90 2024-08-14 parser_failed \n",
- "91 2024-08-14 map_confirmed \n",
- "92 2024-08-14 parser_failed \n",
- "93 2024-08-14 parser_failed \n",
- "94 2024-08-14 map_confirmed \n",
- "95 2024-08-14 parser_failed \n",
- "96 2024-08-14 parser_failed \n",
- "97 2024-08-14 parser_failed \n",
- "98 2024-08-14 map_confirmed \n",
- "99 2024-08-14 map_failed \n",
- "100 2024-08-14 parser_failed \n",
- "101 2024-08-14 map_confirmed \n",
- "102 2024-08-14 map_failed \n",
- "103 2024-08-14 map_failed \n",
- "104 2024-08-14 map_confirmed \n",
- "105 2024-08-14 map_failed \n",
- "106 2024-08-14 map_confirmed \n",
- "107 2024-08-14 map_confirmed \n",
- "108 2024-08-14 parser_failed "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "shared_utils.rt_utils.show_full_df(pd.read_parquet('_rt_progress_2024-08-14.parquet'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
"id": "9f15ed6a-5ab7-4f57-9695-3f762781b74c",
"metadata": {
"tags": [
@@ -1524,12 +32,12 @@
"outputs": [],
"source": [
"## parameters cell\n",
- "itp_id = 48"
+ "itp_id = 170"
]
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 5,
"id": "a639fd84-29ca-4678-b568-2b1022701e14",
"metadata": {},
"outputs": [],
@@ -1541,15 +49,25 @@
"elif itp_id == 170:\n",
" analysis_date = shared_utils.rt_dates.DATES['may2024']\n",
"elif itp_id == 48:\n",
- " analysis_date = shared_utils.rt_dates.DATES['mar2024']"
+ " analysis_date = shared_utils.rt_dates.DATES['mar2024']\n",
+ "\n",
+ "if type(analysis_date) == str: analysis_date = dt.date.fromisoformat(analysis_date)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"id": "47c79d99-c82f-4e1e-b11e-2b1e83c13a1b",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{\"human_date\": \"May 22 2024 (Wednesday)\"}\n"
+ ]
+ }
+ ],
"source": [
"%%capture_parameters\n",
"human_date = analysis_date.strftime('%B %d %Y (%A)')\n",
@@ -1661,29 +179,6 @@
"rt_day.map_gz_export(access_cmap=True)"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ae4a2e32-9258-4881-869c-b4a5995d6e9e",
- "metadata": {},
- "outputs": [],
- "source": [
- "rt_day.render_spa_link(text='Colorblind Safe Map')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "1fb98926-11f6-47f5-b54c-dcc305668caf",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "%%capture\n",
- "rt_day.map_gz_export()"
- ]
- },
{
"cell_type": "code",
"execution_count": null,
@@ -1815,29 +310,6 @@
"rt_day.map_gz_export(access_cmap=True)"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "2c58c59b-3669-4aaa-8773-c7e75b8b5be2",
- "metadata": {},
- "outputs": [],
- "source": [
- "rt_day.render_spa_link(text='Colorblind Safe Map')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "72419146-46bc-42c6-8478-ccd6cebea18d",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "%%capture\n",
- "rt_day.map_gz_export()"
- ]
- },
{
"cell_type": "code",
"execution_count": null,
@@ -1969,29 +441,6 @@
"rt_day.map_gz_export(access_cmap=True)"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "da6d778e-53c5-4759-bcba-100298afdd7f",
- "metadata": {},
- "outputs": [],
- "source": [
- "rt_day.render_spa_link(text='Colorblind Safe Map')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "af6d23ea-4f20-4d0f-9855-40c43052c8e5",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "%%capture\n",
- "rt_day.map_gz_export()"
- ]
- },
{
"cell_type": "code",
"execution_count": null,
diff --git a/ca_transit_speed_maps/stage_run_portfolio.py b/ca_transit_speed_maps/stage_run_portfolio.py
index b244ea9cd..088803c33 100644
--- a/ca_transit_speed_maps/stage_run_portfolio.py
+++ b/ca_transit_speed_maps/stage_run_portfolio.py
@@ -23,9 +23,8 @@
def make_rt_site_yml(speedmaps_index_joined,
rt_site_path = '../portfolio/sites/rt.yml'):
- # make sure intermediate data is ran or at least attempted
- assert speedmaps_index_joined.status.isin(['map_confirmed',
- 'parser_failed', 'map_failed']).all(), 'must run prior scripts first, see Makefile'
+ # make sure index is generated
+ assert speedmaps_index_joined.status.isin(['speedmap_segs_available']).all(), 'must run prior scripts first, see Makefile'
with open(rt_site_path) as rt_site:
rt_site_data = yaml.load(rt_site, yaml.Loader)
@@ -37,8 +36,7 @@ def make_rt_site_yml(speedmaps_index_joined,
continue
chapter_dict = {}
filtered = (speedmaps_index_joined
- >> filter(_.caltrans_district == district,
- -_.status.isin(['parser_failed', 'map_failed']))
+ >> filter(_.caltrans_district == district)
>> arrange(_.organization_name)
)
chapter_dict['caption'] = f'District {district}'
diff --git a/portfolio/rt/district_01-eureka/00__speedmaps__district_01-eureka__itp_id_18.ipynb b/portfolio/rt/district_01-eureka/00__speedmaps__district_01-eureka__itp_id_18.ipynb
index cfd3685b3..97c580a49 100644
--- a/portfolio/rt/district_01-eureka/00__speedmaps__district_01-eureka__itp_id_18.ipynb
+++ b/portfolio/rt/district_01-eureka/00__speedmaps__district_01-eureka__itp_id_18.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0db9ce98ad22b4c30dcc285aabccad3ee8dc94ba34ca65d71252f7f852febf06
-size 89018
+oid sha256:6dbbba50e732f37bd28fd9200f081ce2f04184ea76b48ecce9878f37883001be
+size 71403
diff --git a/portfolio/rt/district_01-eureka/01__speedmaps__district_01-eureka__itp_id_108.ipynb b/portfolio/rt/district_01-eureka/01__speedmaps__district_01-eureka__itp_id_108.ipynb
index 70bfbc35b..9a913d017 100644
--- a/portfolio/rt/district_01-eureka/01__speedmaps__district_01-eureka__itp_id_108.ipynb
+++ b/portfolio/rt/district_01-eureka/01__speedmaps__district_01-eureka__itp_id_108.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a1f88bfb433535cd41dbaa1267ce84f6760ec4505dfd1a79f3864464b3a82458
-size 89023
+oid sha256:9326a1d34984fca32e5ca363f7de97d078799466595010f86c682677052cdef9
+size 71411
diff --git a/portfolio/rt/district_01-eureka/02__speedmaps__district_01-eureka__itp_id_135.ipynb b/portfolio/rt/district_01-eureka/02__speedmaps__district_01-eureka__itp_id_135.ipynb
index 4b7556242..86f36eb62 100644
--- a/portfolio/rt/district_01-eureka/02__speedmaps__district_01-eureka__itp_id_135.ipynb
+++ b/portfolio/rt/district_01-eureka/02__speedmaps__district_01-eureka__itp_id_135.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:34db41063bcb1c20e7e288a156affe46d153b3875f20f6da07352569de000e0c
-size 89289
+oid sha256:0147672cad08a97ac96e7d12cd58f304eb975261c58028cd4ff1276621daa231
+size 71626
diff --git a/portfolio/rt/district_01-eureka/03__speedmaps__district_01-eureka__itp_id_159.ipynb b/portfolio/rt/district_01-eureka/03__speedmaps__district_01-eureka__itp_id_159.ipynb
index 4682a485b..14c547a3f 100644
--- a/portfolio/rt/district_01-eureka/03__speedmaps__district_01-eureka__itp_id_159.ipynb
+++ b/portfolio/rt/district_01-eureka/03__speedmaps__district_01-eureka__itp_id_159.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0ac3ba9e35b232442252f1f810ed052cbf4e5c449205559fa57ed899fed9dc02
-size 91177
+oid sha256:e51ceb45158aca0884c733575f100494e7efa2dc4e4bddf48448fd821ae2e320
+size 73528
diff --git a/portfolio/rt/district_02-redding/00__speedmaps__district_02-redding__itp_id_259.ipynb b/portfolio/rt/district_02-redding/00__speedmaps__district_02-redding__itp_id_259.ipynb
index fcb6a3e51..b67c04d45 100644
--- a/portfolio/rt/district_02-redding/00__speedmaps__district_02-redding__itp_id_259.ipynb
+++ b/portfolio/rt/district_02-redding/00__speedmaps__district_02-redding__itp_id_259.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1bc4dfd1dc8ca329630c4c79acbb3d914d5f73a956fe15c241f9d3e37eb2a1de
-size 92444
+oid sha256:7371e8831923db7f22eb4e4f28e264a15331a9f5ab8293ce8e392899444efd4f
+size 74776
diff --git a/portfolio/rt/district_03-marysville/00__speedmaps__district_03-marysville__itp_id_105.ipynb b/portfolio/rt/district_03-marysville/00__speedmaps__district_03-marysville__itp_id_105.ipynb
index e654d537b..5ddc1c8d0 100644
--- a/portfolio/rt/district_03-marysville/00__speedmaps__district_03-marysville__itp_id_105.ipynb
+++ b/portfolio/rt/district_03-marysville/00__speedmaps__district_03-marysville__itp_id_105.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3ab028cb7ff31f6b372514139933395fa3d204c6612a63011eec6c37768dd2cc
-size 91836
+oid sha256:d97f43cca9c3c062b239b84e2f0cc1785c12864421e0e30f05ccc5fd30bdda97
+size 74208
diff --git a/portfolio/rt/district_03-marysville/01__speedmaps__district_03-marysville__itp_id_331.ipynb b/portfolio/rt/district_03-marysville/01__speedmaps__district_03-marysville__itp_id_331.ipynb
index e132e3dbe..70cc01002 100644
--- a/portfolio/rt/district_03-marysville/01__speedmaps__district_03-marysville__itp_id_331.ipynb
+++ b/portfolio/rt/district_03-marysville/01__speedmaps__district_03-marysville__itp_id_331.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6ca1247e250c05bdb997b5600ac5f94e7422db5d637bd62206a8b2ab54a51ac4
-size 92006
+oid sha256:e77271e96cb7821e853b051e32182632aa55be00943d8f0b440a9bb3af7ca878
+size 74320
diff --git a/portfolio/rt/district_03-marysville/02__speedmaps__district_03-marysville__itp_id_372.ipynb b/portfolio/rt/district_03-marysville/02__speedmaps__district_03-marysville__itp_id_372.ipynb
index 5814e8f26..6461308f2 100644
--- a/portfolio/rt/district_03-marysville/02__speedmaps__district_03-marysville__itp_id_372.ipynb
+++ b/portfolio/rt/district_03-marysville/02__speedmaps__district_03-marysville__itp_id_372.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f4283e9628535513ed63a5d79fe886adbda19aee3462413236b675d80c585b13
-size 89511
+oid sha256:72cbf32333134ea67389cdc039c9710b6ea97fe37ff7a140f31228e12692a144
+size 71803
diff --git a/portfolio/rt/district_04-oakland/00__speedmaps__district_04-oakland__itp_id_4.ipynb b/portfolio/rt/district_04-oakland/00__speedmaps__district_04-oakland__itp_id_4.ipynb
index ad4f5673b..b2ab069d0 100644
--- a/portfolio/rt/district_04-oakland/00__speedmaps__district_04-oakland__itp_id_4.ipynb
+++ b/portfolio/rt/district_04-oakland/00__speedmaps__district_04-oakland__itp_id_4.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de244c401a4b2def3e0c2b2298a9ab51189f46679d283ab0a4b494b2a40f48f3
-size 89389
+oid sha256:a6c05aa4c9e4f64b69b5ca6283f95eed579feeeb578609861e4aa2ff937f9879
+size 71690
diff --git a/portfolio/rt/district_04-oakland/01__speedmaps__district_04-oakland__itp_id_56.ipynb b/portfolio/rt/district_04-oakland/01__speedmaps__district_04-oakland__itp_id_56.ipynb
index 60ab822aa..84545e81b 100644
--- a/portfolio/rt/district_04-oakland/01__speedmaps__district_04-oakland__itp_id_56.ipynb
+++ b/portfolio/rt/district_04-oakland/01__speedmaps__district_04-oakland__itp_id_56.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dacf2236addd155c05f5ab110b2ad8a30480c51ef416e18ed2cbd966187cc608
-size 90573
+oid sha256:80257edece1b45453b4e5032a3522fe28e3687466f906923c4dc7d5610d53d72
+size 72853
diff --git a/portfolio/rt/district_04-oakland/02__speedmaps__district_04-oakland__itp_id_61.ipynb b/portfolio/rt/district_04-oakland/02__speedmaps__district_04-oakland__itp_id_61.ipynb
index 456a3cdc4..fea04d1fe 100644
--- a/portfolio/rt/district_04-oakland/02__speedmaps__district_04-oakland__itp_id_61.ipynb
+++ b/portfolio/rt/district_04-oakland/02__speedmaps__district_04-oakland__itp_id_61.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1425f21aa560d9df3d23d4eadd1d8c8a5d800c3883c3bb478c6ba8883357fedd
-size 90511
+oid sha256:4eefa759c7f700dc18025895b90b1b8508e8fcd617f6c78519dd9e54652f2d42
+size 72788
diff --git a/portfolio/rt/district_04-oakland/03__speedmaps__district_04-oakland__itp_id_282.ipynb b/portfolio/rt/district_04-oakland/03__speedmaps__district_04-oakland__itp_id_282.ipynb
index bd6a6d93a..b2d0724c5 100644
--- a/portfolio/rt/district_04-oakland/03__speedmaps__district_04-oakland__itp_id_282.ipynb
+++ b/portfolio/rt/district_04-oakland/03__speedmaps__district_04-oakland__itp_id_282.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d0057bc550ed36307e58b97be99c9dd4873acaf3d79127ccd519890a0be36ea4
-size 88305
+oid sha256:9275a6713c5ace92e989aab41f6ec6c952eb6a49b0df9f28125bf5d5fdf4fbba
+size 70619
diff --git a/portfolio/rt/district_04-oakland/04__speedmaps__district_04-oakland__itp_id_110.ipynb b/portfolio/rt/district_04-oakland/04__speedmaps__district_04-oakland__itp_id_110.ipynb
index 4682f2126..8bd7fa4df 100644
--- a/portfolio/rt/district_04-oakland/04__speedmaps__district_04-oakland__itp_id_110.ipynb
+++ b/portfolio/rt/district_04-oakland/04__speedmaps__district_04-oakland__itp_id_110.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3abbce56559c599077aa0615c0bc045d57b828d2fc38741e1e3fcbe3e17c6f9b
-size 88916
+oid sha256:4d27281f4e0dc481f462f4f8715d5e51a18375038327084a97b8e77d2e25cbd7
+size 71293
diff --git a/portfolio/rt/district_04-oakland/05__speedmaps__district_04-oakland__itp_id_247.ipynb b/portfolio/rt/district_04-oakland/05__speedmaps__district_04-oakland__itp_id_247.ipynb
index 2fb6c8055..5f40a04be 100644
--- a/portfolio/rt/district_04-oakland/05__speedmaps__district_04-oakland__itp_id_247.ipynb
+++ b/portfolio/rt/district_04-oakland/05__speedmaps__district_04-oakland__itp_id_247.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f7cc21fd6e76c7ced14f607078a183264e55f099672a210956da0a871bde0945
-size 91289
+oid sha256:f14d73d8d6439b3840dc1e0217291c54963623e8440ca118651d5995f680babe
+size 73661
diff --git a/portfolio/rt/district_04-oakland/06__speedmaps__district_04-oakland__itp_id_301.ipynb b/portfolio/rt/district_04-oakland/06__speedmaps__district_04-oakland__itp_id_301.ipynb
index 75d742030..54c0ee71b 100644
--- a/portfolio/rt/district_04-oakland/06__speedmaps__district_04-oakland__itp_id_301.ipynb
+++ b/portfolio/rt/district_04-oakland/06__speedmaps__district_04-oakland__itp_id_301.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0e6bd8bbcea7be4fc82c2324509cf9496cf27ce5c0ba0121eaca9d0aca06f4c1
-size 88947
+oid sha256:7622c7af6e3aa8f4b8e464d8374bb4fafa26edb862679649586c0cee9a34f2bd
+size 71313
diff --git a/portfolio/rt/district_04-oakland/07__speedmaps__district_04-oakland__itp_id_350.ipynb b/portfolio/rt/district_04-oakland/07__speedmaps__district_04-oakland__itp_id_350.ipynb
index d75ad5049..129ca72d8 100644
--- a/portfolio/rt/district_04-oakland/07__speedmaps__district_04-oakland__itp_id_350.ipynb
+++ b/portfolio/rt/district_04-oakland/07__speedmaps__district_04-oakland__itp_id_350.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:760c331f2cd877808c7396fdbb324ef5e3ebf8a913c4863f73c7bd3413482b91
-size 90101
+oid sha256:124a1d2da1c938710359fa45b3930a92ae332e1f7f79888e797f053e8480ff0c
+size 72472
diff --git a/portfolio/rt/district_04-oakland/08__speedmaps__district_04-oakland__itp_id_70.ipynb b/portfolio/rt/district_04-oakland/08__speedmaps__district_04-oakland__itp_id_70.ipynb
index 035253a51..33b993edc 100644
--- a/portfolio/rt/district_04-oakland/08__speedmaps__district_04-oakland__itp_id_70.ipynb
+++ b/portfolio/rt/district_04-oakland/08__speedmaps__district_04-oakland__itp_id_70.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:060a131b777c5f10d7204c618a78bea92e468a1ab620e55bac7c6d9c1d5127af
-size 88567
+oid sha256:db43c3c9cf003c95067e8365141280b190db8dfd224c26a712301cea95594579
+size 70921
diff --git a/portfolio/rt/district_04-oakland/09__speedmaps__district_04-oakland__itp_id_336.ipynb b/portfolio/rt/district_04-oakland/09__speedmaps__district_04-oakland__itp_id_336.ipynb
index 8b0190667..dbfcea85f 100644
--- a/portfolio/rt/district_04-oakland/09__speedmaps__district_04-oakland__itp_id_336.ipynb
+++ b/portfolio/rt/district_04-oakland/09__speedmaps__district_04-oakland__itp_id_336.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f2fcc80cbce9b30720266721ad3bc27eeb3094f96eb214dd0544791f23991730
-size 89983
+oid sha256:b4d125d2b4914da1beb1e4a9c63056de065f33a270066af31a19bf8347a48c28
+size 72263
diff --git a/portfolio/rt/district_04-oakland/10__speedmaps__district_04-oakland__itp_id_127.ipynb b/portfolio/rt/district_04-oakland/10__speedmaps__district_04-oakland__itp_id_127.ipynb
index e41a7dccb..4508029b8 100644
--- a/portfolio/rt/district_04-oakland/10__speedmaps__district_04-oakland__itp_id_127.ipynb
+++ b/portfolio/rt/district_04-oakland/10__speedmaps__district_04-oakland__itp_id_127.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c3c826f37f677a2b5b4c6cf37b10040962e36bf3ad9186c5b6ec8ed121de2c28
-size 93555
+oid sha256:57f2d98e8233f4e7b4d66477f97e1668ab71400564e2a5187de26e33f4252a69
+size 75769
diff --git a/portfolio/rt/district_04-oakland/11__speedmaps__district_04-oakland__itp_id_194.ipynb b/portfolio/rt/district_04-oakland/11__speedmaps__district_04-oakland__itp_id_194.ipynb
index 726a2e582..d04a912f0 100644
--- a/portfolio/rt/district_04-oakland/11__speedmaps__district_04-oakland__itp_id_194.ipynb
+++ b/portfolio/rt/district_04-oakland/11__speedmaps__district_04-oakland__itp_id_194.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f8216c822dc764b4547d3ceec63c47d44654f44c3eb903c8afaff187892a47fe
-size 90287
+oid sha256:348d2d4d2d0c6845712421ae269367a6da2509d101923de0c93aef58ed358243
+size 72592
diff --git a/portfolio/rt/district_04-oakland/12__speedmaps__district_04-oakland__itp_id_218.ipynb b/portfolio/rt/district_04-oakland/12__speedmaps__district_04-oakland__itp_id_218.ipynb
index 404fe4611..5dbaef066 100644
--- a/portfolio/rt/district_04-oakland/12__speedmaps__district_04-oakland__itp_id_218.ipynb
+++ b/portfolio/rt/district_04-oakland/12__speedmaps__district_04-oakland__itp_id_218.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:830bfee5bc375d6db4ec31def9767d722806cc8940bd9c12b6013e9601cd6204
-size 92181
+oid sha256:5cb1f2f8f9da058859edd0b0a8a4ddca3799011e5bde99886995c8bc3cb03f80
+size 74480
diff --git a/portfolio/rt/district_04-oakland/13__speedmaps__district_04-oakland__itp_id_246.ipynb b/portfolio/rt/district_04-oakland/13__speedmaps__district_04-oakland__itp_id_246.ipynb
index 93e3ef12b..8b6bcd4f1 100644
--- a/portfolio/rt/district_04-oakland/13__speedmaps__district_04-oakland__itp_id_246.ipynb
+++ b/portfolio/rt/district_04-oakland/13__speedmaps__district_04-oakland__itp_id_246.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8bbf2b0fdf3b9edbcbecdbc47d92e946bc3232f19752ae33a0deb832cfc817b1
-size 91715
+oid sha256:bed4a4d4e7f9456260cb9a6daae4989d241d5c397f1c1f9bfefe76f411b13f00
+size 73997
diff --git a/portfolio/rt/district_04-oakland/14__speedmaps__district_04-oakland__itp_id_257.ipynb b/portfolio/rt/district_04-oakland/14__speedmaps__district_04-oakland__itp_id_257.ipynb
index 1fc48c72e..20ba64f44 100644
--- a/portfolio/rt/district_04-oakland/14__speedmaps__district_04-oakland__itp_id_257.ipynb
+++ b/portfolio/rt/district_04-oakland/14__speedmaps__district_04-oakland__itp_id_257.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b61810f1fe20d4b8a0427b75fc98a7cd8575bb0a02a46f93850463b6cc43398c
-size 89819
+oid sha256:a85972773ac19d0b40fe57edd6549051dc0210a6c62d1a1952ef4100c59a52fd
+size 72206
diff --git a/portfolio/rt/district_04-oakland/15__speedmaps__district_04-oakland__itp_id_280.ipynb b/portfolio/rt/district_04-oakland/15__speedmaps__district_04-oakland__itp_id_280.ipynb
index b0e885a06..0a0d50cd6 100644
--- a/portfolio/rt/district_04-oakland/15__speedmaps__district_04-oakland__itp_id_280.ipynb
+++ b/portfolio/rt/district_04-oakland/15__speedmaps__district_04-oakland__itp_id_280.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:43fac59d1a1a698df200d5689161113a584a82d76806e51b71adc54b6caec1b6
-size 89458
+oid sha256:876699d898cc6b770e3360478bc801f21911f5d2470569db00958e61132eac13
+size 71666
diff --git a/portfolio/rt/district_04-oakland/16__speedmaps__district_04-oakland__itp_id_290.ipynb b/portfolio/rt/district_04-oakland/16__speedmaps__district_04-oakland__itp_id_290.ipynb
index 3ad04ec44..dedb8f991 100644
--- a/portfolio/rt/district_04-oakland/16__speedmaps__district_04-oakland__itp_id_290.ipynb
+++ b/portfolio/rt/district_04-oakland/16__speedmaps__district_04-oakland__itp_id_290.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:63254e8fe14525e4a5986ee5517d34e2a27e621bfaeecff0267f73a1aef31e70
-size 90054
+oid sha256:a09822b26d48d41f0fba38202cee63ac01e5b4cd8ebf8afe39a02d46f6fbaaee
+size 72355
diff --git a/portfolio/rt/district_04-oakland/17__speedmaps__district_04-oakland__itp_id_294.ipynb b/portfolio/rt/district_04-oakland/17__speedmaps__district_04-oakland__itp_id_294.ipynb
index 41ec3220b..fe557c3b6 100644
--- a/portfolio/rt/district_04-oakland/17__speedmaps__district_04-oakland__itp_id_294.ipynb
+++ b/portfolio/rt/district_04-oakland/17__speedmaps__district_04-oakland__itp_id_294.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:35625eb0fe2d95b770723853a31c5f56e0f38290addd1e7fd29f681c3e385a6e
-size 90067
+oid sha256:949a7b8f725610810385d57a08f98146b6277c81d7c7ad5574edd86f1f8b3cb6
+size 72332
diff --git a/portfolio/rt/district_04-oakland/18__speedmaps__district_04-oakland__itp_id_310.ipynb b/portfolio/rt/district_04-oakland/18__speedmaps__district_04-oakland__itp_id_310.ipynb
index 533cbe0ec..2639ad28c 100644
--- a/portfolio/rt/district_04-oakland/18__speedmaps__district_04-oakland__itp_id_310.ipynb
+++ b/portfolio/rt/district_04-oakland/18__speedmaps__district_04-oakland__itp_id_310.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:66d79f492f3f8dd0d680c207aeb7aaac7c6fa3328e57af4bc6904ade2813a735
-size 89852
+oid sha256:df827ae34c7a01a18632e6023068b783dd5af3dc85588050da22550628fd24b4
+size 72206
diff --git a/portfolio/rt/district_04-oakland/19__speedmaps__district_04-oakland__itp_id_381.ipynb b/portfolio/rt/district_04-oakland/19__speedmaps__district_04-oakland__itp_id_381.ipynb
index 5975673c6..8c68ead86 100644
--- a/portfolio/rt/district_04-oakland/19__speedmaps__district_04-oakland__itp_id_381.ipynb
+++ b/portfolio/rt/district_04-oakland/19__speedmaps__district_04-oakland__itp_id_381.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ad462dc9a71916a2417d44751654096a0463b860d34a3645d79e3e9c041f6f4d
-size 90081
+oid sha256:4fe1a6d931adbd5d9b378a8fa163a8314d428a854fa54584292ab4942e2039ad
+size 72387
diff --git a/portfolio/rt/district_04-oakland/20__speedmaps__district_04-oakland__itp_id_314.ipynb b/portfolio/rt/district_04-oakland/20__speedmaps__district_04-oakland__itp_id_314.ipynb
index b88251e11..712861225 100644
--- a/portfolio/rt/district_04-oakland/20__speedmaps__district_04-oakland__itp_id_314.ipynb
+++ b/portfolio/rt/district_04-oakland/20__speedmaps__district_04-oakland__itp_id_314.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6aea76496b22fa63088dbbd6fada3a9ea51b8c7476c6afd8f9e9c26cc0dbd5f1
-size 88454
+oid sha256:7f0209725403d7c444bdd947c1128b65b94a93127d3bffe13ce6f467850a739a
+size 70845
diff --git a/portfolio/rt/district_04-oakland/21__speedmaps__district_04-oakland__itp_id_315.ipynb b/portfolio/rt/district_04-oakland/21__speedmaps__district_04-oakland__itp_id_315.ipynb
index 6582a50b0..316150ac5 100644
--- a/portfolio/rt/district_04-oakland/21__speedmaps__district_04-oakland__itp_id_315.ipynb
+++ b/portfolio/rt/district_04-oakland/21__speedmaps__district_04-oakland__itp_id_315.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:41e21e74569bd216fadef50615e2a12a15f42ae6a2b4f813625879ef89664622
-size 90911
+oid sha256:5cf22324dca80f660eef6ceab10f30772ece191729f996170e6bc2d6c9496f3e
+size 73191
diff --git a/portfolio/rt/district_04-oakland/22__speedmaps__district_04-oakland__itp_id_33.ipynb b/portfolio/rt/district_04-oakland/22__speedmaps__district_04-oakland__itp_id_33.ipynb
index 4a35e106d..b196e2d47 100644
--- a/portfolio/rt/district_04-oakland/22__speedmaps__district_04-oakland__itp_id_33.ipynb
+++ b/portfolio/rt/district_04-oakland/22__speedmaps__district_04-oakland__itp_id_33.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c3597955292b98de560140c6cfc88a4795a013821db72fac12f518fd5207b8d3
-size 88587
+oid sha256:b5149c99d064f48617d9b766a9a26c885d12a2750b600fe905857382e346b337
+size 70893
diff --git a/portfolio/rt/district_04-oakland/23__speedmaps__district_04-oakland__itp_id_368.ipynb b/portfolio/rt/district_04-oakland/23__speedmaps__district_04-oakland__itp_id_368.ipynb
index 21825a57a..c315c6dc1 100644
--- a/portfolio/rt/district_04-oakland/23__speedmaps__district_04-oakland__itp_id_368.ipynb
+++ b/portfolio/rt/district_04-oakland/23__speedmaps__district_04-oakland__itp_id_368.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:64c075a0bbc89788bf6f938ff3dc4335c426580ce97f07e5d8a61ca8bc05b64a
-size 89628
+oid sha256:f77cd345cebd8bff683797f62415b45dd523430fa84a8f86cca341ef4a1e7aef
+size 71913
diff --git a/portfolio/rt/district_05-san-luis-obispo/00__speedmaps__district_05-san-luis-obispo__itp_id_298.ipynb b/portfolio/rt/district_05-san-luis-obispo/00__speedmaps__district_05-san-luis-obispo__itp_id_298.ipynb
index 5adb3839d..660743840 100644
--- a/portfolio/rt/district_05-san-luis-obispo/00__speedmaps__district_05-san-luis-obispo__itp_id_298.ipynb
+++ b/portfolio/rt/district_05-san-luis-obispo/00__speedmaps__district_05-san-luis-obispo__itp_id_298.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:abba1acb23ef762a172f8fdcea33942dcd189b340b78994ba935d37571e6fd26
-size 91521
+oid sha256:390528057958efed1c6bd60020928d76f96746def0a7a00dc1ebb2b6db84d204
+size 73883
diff --git a/portfolio/rt/district_05-san-luis-obispo/01__speedmaps__district_05-san-luis-obispo__itp_id_312.ipynb b/portfolio/rt/district_05-san-luis-obispo/01__speedmaps__district_05-san-luis-obispo__itp_id_312.ipynb
index f77e152f2..eef0533ba 100644
--- a/portfolio/rt/district_05-san-luis-obispo/01__speedmaps__district_05-san-luis-obispo__itp_id_312.ipynb
+++ b/portfolio/rt/district_05-san-luis-obispo/01__speedmaps__district_05-san-luis-obispo__itp_id_312.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:31f833447c3447f014826c63a497b913b211856c341ffa3317fd3a85525ec3a2
-size 87336
+oid sha256:db60af11ce7ed08d6a2332f39c7996fa7b2e1a5dd08ff7fb5c1ecba63d7dfe0a
+size 69721
diff --git a/portfolio/rt/district_05-san-luis-obispo/02__speedmaps__district_05-san-luis-obispo__itp_id_208.ipynb b/portfolio/rt/district_05-san-luis-obispo/02__speedmaps__district_05-san-luis-obispo__itp_id_208.ipynb
index 5915e0e5f..c1f6af021 100644
--- a/portfolio/rt/district_05-san-luis-obispo/02__speedmaps__district_05-san-luis-obispo__itp_id_208.ipynb
+++ b/portfolio/rt/district_05-san-luis-obispo/02__speedmaps__district_05-san-luis-obispo__itp_id_208.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5c9bfbdced12132de177df4ee771666c59d99efc3a74b99f48dbde01cc7c2c6b
-size 89254
+oid sha256:acd7e90af33830b2a6c03af6e000cbcda3f2d3c11ebdb3bf7c1f260bdce14ea7
+size 71602
diff --git a/portfolio/rt/district_05-san-luis-obispo/03__speedmaps__district_05-san-luis-obispo__itp_id_289.ipynb b/portfolio/rt/district_05-san-luis-obispo/03__speedmaps__district_05-san-luis-obispo__itp_id_289.ipynb
index 78f532735..1b7266002 100644
--- a/portfolio/rt/district_05-san-luis-obispo/03__speedmaps__district_05-san-luis-obispo__itp_id_289.ipynb
+++ b/portfolio/rt/district_05-san-luis-obispo/03__speedmaps__district_05-san-luis-obispo__itp_id_289.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:726b68b4fb50cc827ff97be4c761bdcbe1c8f1e1b73c5e423bc7c43fc199f27c
-size 91020
+oid sha256:5f2a3d1686fe7dcf250cff24562625aa98b2771f3b97fb9d32ac4f6b630d5e03
+size 73292
diff --git a/portfolio/rt/district_05-san-luis-obispo/04__speedmaps__district_05-san-luis-obispo__itp_id_296.ipynb b/portfolio/rt/district_05-san-luis-obispo/04__speedmaps__district_05-san-luis-obispo__itp_id_296.ipynb
index 0a987a82b..eed9b6ccf 100644
--- a/portfolio/rt/district_05-san-luis-obispo/04__speedmaps__district_05-san-luis-obispo__itp_id_296.ipynb
+++ b/portfolio/rt/district_05-san-luis-obispo/04__speedmaps__district_05-san-luis-obispo__itp_id_296.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1cdf3c461b446841e034263e05e629fd96030ec01b5eab5a5b86b5fdead99c3a
-size 92363
+oid sha256:813b91e48e4427a68f3106c6a0442ad9c6582459a0963ca6b85d9103ce2ba7ab
+size 74638
diff --git a/portfolio/rt/district_06-fresno/00__speedmaps__district_06-fresno__itp_id_116.ipynb b/portfolio/rt/district_06-fresno/00__speedmaps__district_06-fresno__itp_id_116.ipynb
index dbb1921a1..b24a72051 100644
--- a/portfolio/rt/district_06-fresno/00__speedmaps__district_06-fresno__itp_id_116.ipynb
+++ b/portfolio/rt/district_06-fresno/00__speedmaps__district_06-fresno__itp_id_116.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:92f9fb7d40cfa17f57430dccc551c7467ca9edb6b50e5bcd7ada2ec68e3018a1
-size 89432
+oid sha256:cd3301d1efdfbdf693d2fe5a229b72ad03384a89ccc856bc3544668a678067ee
+size 71805
diff --git a/portfolio/rt/district_06-fresno/01__speedmaps__district_06-fresno__itp_id_361.ipynb b/portfolio/rt/district_06-fresno/01__speedmaps__district_06-fresno__itp_id_361.ipynb
index 450236cab..c80e45ecd 100644
--- a/portfolio/rt/district_06-fresno/01__speedmaps__district_06-fresno__itp_id_361.ipynb
+++ b/portfolio/rt/district_06-fresno/01__speedmaps__district_06-fresno__itp_id_361.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0b23fe866984e0360bd0cc8b972705f7ff556525538ee5c4953eb3070bd141ef
-size 91812
+oid sha256:644cb279d4401690f3699988141eb760f7835e2c0e8386a8d4189e5ae727e6dc
+size 74194
diff --git a/portfolio/rt/district_06-fresno/02__speedmaps__district_06-fresno__itp_id_126.ipynb b/portfolio/rt/district_06-fresno/02__speedmaps__district_06-fresno__itp_id_126.ipynb
index e6fab2395..24d94260a 100644
--- a/portfolio/rt/district_06-fresno/02__speedmaps__district_06-fresno__itp_id_126.ipynb
+++ b/portfolio/rt/district_06-fresno/02__speedmaps__district_06-fresno__itp_id_126.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e348fbc0307c3c8bec26cf152c835f5d19bc14b3252432fc12a47e87c7e56e11
-size 90531
+oid sha256:5a4e7d6579b5cd78935d1e24d6bf6d3b05f2550718622e500ac6687faf35695a
+size 72843
diff --git a/portfolio/rt/district_06-fresno/03__speedmaps__district_06-fresno__itp_id_148.ipynb b/portfolio/rt/district_06-fresno/03__speedmaps__district_06-fresno__itp_id_148.ipynb
index a74e68da9..cde3cd422 100644
--- a/portfolio/rt/district_06-fresno/03__speedmaps__district_06-fresno__itp_id_148.ipynb
+++ b/portfolio/rt/district_06-fresno/03__speedmaps__district_06-fresno__itp_id_148.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8ae4c576ca0368781ce1e680c7f33e0df122affebb659c9377ca8aae0613d50e
-size 89966
+oid sha256:1b2c1b3a934912ba54f962c10d80d3af7c25de90b3c4852f808313187a3d4a86
+size 72251
diff --git a/portfolio/rt/district_06-fresno/04__speedmaps__district_06-fresno__itp_id_188.ipynb b/portfolio/rt/district_06-fresno/04__speedmaps__district_06-fresno__itp_id_188.ipynb
index 2885a059b..0f4fe1c20 100644
--- a/portfolio/rt/district_06-fresno/04__speedmaps__district_06-fresno__itp_id_188.ipynb
+++ b/portfolio/rt/district_06-fresno/04__speedmaps__district_06-fresno__itp_id_188.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:20aa789d0d6ad460d7396e5047d586e8e7661a8e848d8937158ac940f0499917
-size 90399
+oid sha256:bed5eca41f0a110dc39647f7e29b550f4fa4631ad7829dbab4b1f5c9a1515e83
+size 72788
diff --git a/portfolio/rt/district_07-los-angeles/00__speedmaps__district_07-los-angeles__itp_id_16.ipynb b/portfolio/rt/district_07-los-angeles/00__speedmaps__district_07-los-angeles__itp_id_16.ipynb
index 70196dacc..33621c17b 100644
--- a/portfolio/rt/district_07-los-angeles/00__speedmaps__district_07-los-angeles__itp_id_16.ipynb
+++ b/portfolio/rt/district_07-los-angeles/00__speedmaps__district_07-los-angeles__itp_id_16.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:82088bd5922aed7a16b84226d7828dbc5118d5ada176edd21fdc59bdf50175d4
-size 89840
+oid sha256:7d1825b129b73a0e3bbdd121bd0d06c4c4ffa60b2bb2fba2d7acfd1ab7691d2f
+size 72145
diff --git a/portfolio/rt/district_07-los-angeles/01__speedmaps__district_07-los-angeles__itp_id_45.ipynb b/portfolio/rt/district_07-los-angeles/01__speedmaps__district_07-los-angeles__itp_id_45.ipynb
index 47a5a49c0..2f8e3f49f 100644
--- a/portfolio/rt/district_07-los-angeles/01__speedmaps__district_07-los-angeles__itp_id_45.ipynb
+++ b/portfolio/rt/district_07-los-angeles/01__speedmaps__district_07-los-angeles__itp_id_45.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0702ccd664dd0d3b104d8ada26078c74c7204212bca2876024bfd05929b5961c
-size 89035
+oid sha256:096aaa5715512773302920324611e19fc7c8a69c457cca01773b558708d6765b
+size 71411
diff --git a/portfolio/rt/district_07-los-angeles/02__speedmaps__district_07-los-angeles__itp_id_54.ipynb b/portfolio/rt/district_07-los-angeles/02__speedmaps__district_07-los-angeles__itp_id_54.ipynb
index 4013f679d..a90835e44 100644
--- a/portfolio/rt/district_07-los-angeles/02__speedmaps__district_07-los-angeles__itp_id_54.ipynb
+++ b/portfolio/rt/district_07-los-angeles/02__speedmaps__district_07-los-angeles__itp_id_54.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3a2e2d69aa68c05cbe7af9b21e9879cbbfe719e59321a4fd9143f9713c9ff42b
-size 89697
+oid sha256:1049b5ecb39ee4a3cb79012f99bbca125b998be7c0b313d60442ea09a3afb0e3
+size 72063
diff --git a/portfolio/rt/district_07-los-angeles/03__speedmaps__district_07-los-angeles__itp_id_87.ipynb b/portfolio/rt/district_07-los-angeles/03__speedmaps__district_07-los-angeles__itp_id_87.ipynb
index af5d6f7d3..aa01153d1 100644
--- a/portfolio/rt/district_07-los-angeles/03__speedmaps__district_07-los-angeles__itp_id_87.ipynb
+++ b/portfolio/rt/district_07-los-angeles/03__speedmaps__district_07-los-angeles__itp_id_87.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1ef8e6f09680db5746a3e3e612185a63ce2f84494cc3f1248f501e73b4304b7e
-size 89118
+oid sha256:426ed037257abcd8279b100f828288fc3f68442ebf5edd15e4683c72b98c6e12
+size 71491
diff --git a/portfolio/rt/district_07-los-angeles/04__speedmaps__district_07-los-angeles__itp_id_97.ipynb b/portfolio/rt/district_07-los-angeles/04__speedmaps__district_07-los-angeles__itp_id_97.ipynb
index 7822afd69..e84d3c0fc 100644
--- a/portfolio/rt/district_07-los-angeles/04__speedmaps__district_07-los-angeles__itp_id_97.ipynb
+++ b/portfolio/rt/district_07-los-angeles/04__speedmaps__district_07-los-angeles__itp_id_97.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:39978e5be691eab307fca4c7d2dc79f29579562457b77d7476d54751e13c6f2c
-size 90141
+oid sha256:304dcd698dc0c9430351d3bef56ceb06f391c2d41175ddb3ca519539276c4745
+size 72526
diff --git a/portfolio/rt/district_07-los-angeles/05__speedmaps__district_07-los-angeles__itp_id_183.ipynb b/portfolio/rt/district_07-los-angeles/05__speedmaps__district_07-los-angeles__itp_id_183.ipynb
index b477550d2..a7e3681c7 100644
--- a/portfolio/rt/district_07-los-angeles/05__speedmaps__district_07-los-angeles__itp_id_183.ipynb
+++ b/portfolio/rt/district_07-los-angeles/05__speedmaps__district_07-los-angeles__itp_id_183.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:db281257fa83c22c4e76928aadd86ff1b710c958cc622f22d755604c03e6fc91
-size 88310
+oid sha256:f5ad7274a2a3c75ba504329fd9f12758bc3bd30e4413edc4c4dad9c55fdeb95a
+size 70668
diff --git a/portfolio/rt/district_07-los-angeles/06__speedmaps__district_07-los-angeles__itp_id_210.ipynb b/portfolio/rt/district_07-los-angeles/06__speedmaps__district_07-los-angeles__itp_id_210.ipynb
index 1714acf00..9831a6d58 100644
--- a/portfolio/rt/district_07-los-angeles/06__speedmaps__district_07-los-angeles__itp_id_210.ipynb
+++ b/portfolio/rt/district_07-los-angeles/06__speedmaps__district_07-los-angeles__itp_id_210.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3686938c0cebdc3409fded9d22cb18b0fba4d3c0e7786101a5409a9e37a86799
-size 89699
+oid sha256:a7085655d6534d948e07b9528cba85bc59050f207c5658449a1d7836785c438a
+size 72064
diff --git a/portfolio/rt/district_07-los-angeles/07__speedmaps__district_07-los-angeles__itp_id_228.ipynb b/portfolio/rt/district_07-los-angeles/07__speedmaps__district_07-los-angeles__itp_id_228.ipynb
index 617c6f002..fb665a99c 100644
--- a/portfolio/rt/district_07-los-angeles/07__speedmaps__district_07-los-angeles__itp_id_228.ipynb
+++ b/portfolio/rt/district_07-los-angeles/07__speedmaps__district_07-los-angeles__itp_id_228.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:337a0b97f905411058fd04a5166ab181098a8267b78ff0733599ca502d184486
-size 89970
+oid sha256:5b61cafd3cc0de4b52b9704d8212a8aff707310578c0800dba8cd670051c4ec2
+size 72346
diff --git a/portfolio/rt/district_07-los-angeles/08__speedmaps__district_07-los-angeles__itp_id_231.ipynb b/portfolio/rt/district_07-los-angeles/08__speedmaps__district_07-los-angeles__itp_id_231.ipynb
index d0ab5ed3d..43c22c02a 100644
--- a/portfolio/rt/district_07-los-angeles/08__speedmaps__district_07-los-angeles__itp_id_231.ipynb
+++ b/portfolio/rt/district_07-los-angeles/08__speedmaps__district_07-los-angeles__itp_id_231.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cd12c59b797ca9485a1ef87929fd18f42dbf9a0a47df1bcef5d19d7d1ba40575
-size 89601
+oid sha256:7c33214142bf9bd9d5e2a957ed5336a1499a2e17177b64678f268877823db643
+size 71991
diff --git a/portfolio/rt/district_07-los-angeles/09__speedmaps__district_07-los-angeles__itp_id_243.ipynb b/portfolio/rt/district_07-los-angeles/09__speedmaps__district_07-los-angeles__itp_id_243.ipynb
index 0e0894eff..b9b548b56 100644
--- a/portfolio/rt/district_07-los-angeles/09__speedmaps__district_07-los-angeles__itp_id_243.ipynb
+++ b/portfolio/rt/district_07-los-angeles/09__speedmaps__district_07-los-angeles__itp_id_243.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:aa4404ff94bf2e70c7761424e65ff4610a9c89a8822b2c0b9b0f2e781315867d
-size 88880
+oid sha256:e71e71b4532b7df3d6e05418abca6f095cffbb919b50371f1d8752e4bcc89814
+size 71258
diff --git a/portfolio/rt/district_07-los-angeles/10__speedmaps__district_07-los-angeles__itp_id_260.ipynb b/portfolio/rt/district_07-los-angeles/10__speedmaps__district_07-los-angeles__itp_id_260.ipynb
index 148051432..dbc911af3 100644
--- a/portfolio/rt/district_07-los-angeles/10__speedmaps__district_07-los-angeles__itp_id_260.ipynb
+++ b/portfolio/rt/district_07-los-angeles/10__speedmaps__district_07-los-angeles__itp_id_260.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1681edc54ac8f8e203de6b7e089b36286cf2bde0a353d8dd8831f328607de4ae
-size 89274
+oid sha256:9341c868200b51bdd239de504fc02e8c323f9516a88873830b27eaac951790c4
+size 71619
diff --git a/portfolio/rt/district_07-los-angeles/11__speedmaps__district_07-los-angeles__itp_id_295.ipynb b/portfolio/rt/district_07-los-angeles/11__speedmaps__district_07-los-angeles__itp_id_295.ipynb
index 8d449fd20..d8388d1dd 100644
--- a/portfolio/rt/district_07-los-angeles/11__speedmaps__district_07-los-angeles__itp_id_295.ipynb
+++ b/portfolio/rt/district_07-los-angeles/11__speedmaps__district_07-los-angeles__itp_id_295.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ddc221629f92cd914c20bf3c0aa689a459d0783ec2e55d5f9ddaadefab2927ac
-size 93264
+oid sha256:eabc8d59d936f6de557fbab230f5b1b650e699670874dae75953062d1dfadcc9
+size 75608
diff --git a/portfolio/rt/district_07-los-angeles/12__speedmaps__district_07-los-angeles__itp_id_300.ipynb b/portfolio/rt/district_07-los-angeles/12__speedmaps__district_07-los-angeles__itp_id_300.ipynb
index 786f43e61..0e790dcda 100644
--- a/portfolio/rt/district_07-los-angeles/12__speedmaps__district_07-los-angeles__itp_id_300.ipynb
+++ b/portfolio/rt/district_07-los-angeles/12__speedmaps__district_07-los-angeles__itp_id_300.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0ef4d195628b7c1f949633ddbe94b9316c24515506689d4dabc48b83d592bd9f
-size 88769
+oid sha256:155abcdcfae155ab6887f3295fb36e06c6bd55b422ae620fb3b7f4d5510334bf
+size 71126
diff --git a/portfolio/rt/district_07-los-angeles/13__speedmaps__district_07-los-angeles__itp_id_308.ipynb b/portfolio/rt/district_07-los-angeles/13__speedmaps__district_07-los-angeles__itp_id_308.ipynb
index f5e692637..4eba95507 100644
--- a/portfolio/rt/district_07-los-angeles/13__speedmaps__district_07-los-angeles__itp_id_308.ipynb
+++ b/portfolio/rt/district_07-los-angeles/13__speedmaps__district_07-los-angeles__itp_id_308.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:154f4de9f4085970869507d38148a4e70dd53736bbf6700d6c89c0d21c86a10f
-size 89765
+oid sha256:1d478dcfc178265c1be3d803e8f1d0ba6e0648ea3092fc623349d643078975f7
+size 72118
diff --git a/portfolio/rt/district_07-los-angeles/14__speedmaps__district_07-los-angeles__itp_id_337.ipynb b/portfolio/rt/district_07-los-angeles/14__speedmaps__district_07-los-angeles__itp_id_337.ipynb
index c67801b2a..0ea7508b3 100644
--- a/portfolio/rt/district_07-los-angeles/14__speedmaps__district_07-los-angeles__itp_id_337.ipynb
+++ b/portfolio/rt/district_07-los-angeles/14__speedmaps__district_07-los-angeles__itp_id_337.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:352296eac01b1fd15fb671d0eb73c3c3bc8999d74fd783457ac50080233f9b40
-size 89799
+oid sha256:2cc14973cbfab0b9a760e730df2f10fd148475bcc10ce79091c0c255fa43ed01
+size 72159
diff --git a/portfolio/rt/district_07-los-angeles/15__speedmaps__district_07-los-angeles__itp_id_339.ipynb b/portfolio/rt/district_07-los-angeles/15__speedmaps__district_07-los-angeles__itp_id_339.ipynb
index f4b93b3df..a8d11e2e3 100644
--- a/portfolio/rt/district_07-los-angeles/15__speedmaps__district_07-los-angeles__itp_id_339.ipynb
+++ b/portfolio/rt/district_07-los-angeles/15__speedmaps__district_07-los-angeles__itp_id_339.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:84b1e5709ff52a188e0af321c20037c634e2e73bb7df1c64e4526074e82942f6
-size 90011
+oid sha256:04778bb158fc6c14ae208ccd5c001e792e66be98122aa31175b8bcb67ed0609b
+size 72381
diff --git a/portfolio/rt/district_07-los-angeles/16__speedmaps__district_07-los-angeles__itp_id_112.ipynb b/portfolio/rt/district_07-los-angeles/16__speedmaps__district_07-los-angeles__itp_id_112.ipynb
index f44ea7484..f649c763f 100644
--- a/portfolio/rt/district_07-los-angeles/16__speedmaps__district_07-los-angeles__itp_id_112.ipynb
+++ b/portfolio/rt/district_07-los-angeles/16__speedmaps__district_07-los-angeles__itp_id_112.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c894ecd8edb3838cb045613242045d74d00115e0bf45fb4994af322346b1d5b9
-size 90211
+oid sha256:f20bec26ba49f37cc49192f130da8c854e19ac8fc779160248760141f188b5df
+size 72582
diff --git a/portfolio/rt/district_07-los-angeles/17__speedmaps__district_07-los-angeles__itp_id_123.ipynb b/portfolio/rt/district_07-los-angeles/17__speedmaps__district_07-los-angeles__itp_id_123.ipynb
index 40a290cfb..e4c7f51b3 100644
--- a/portfolio/rt/district_07-los-angeles/17__speedmaps__district_07-los-angeles__itp_id_123.ipynb
+++ b/portfolio/rt/district_07-los-angeles/17__speedmaps__district_07-los-angeles__itp_id_123.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:01e196b5ed5539f1e5e7a0ba9d41a840896ab78235c7c01809ffad709520cc69
-size 89929
+oid sha256:591d75db49f341e284f31420301ae902559054eb262fb34ff584c92ed8ed3992
+size 72262
diff --git a/portfolio/rt/district_07-los-angeles/18__speedmaps__district_07-los-angeles__itp_id_182.ipynb b/portfolio/rt/district_07-los-angeles/18__speedmaps__district_07-los-angeles__itp_id_182.ipynb
index 3023ed92e..0fea6e280 100644
--- a/portfolio/rt/district_07-los-angeles/18__speedmaps__district_07-los-angeles__itp_id_182.ipynb
+++ b/portfolio/rt/district_07-los-angeles/18__speedmaps__district_07-los-angeles__itp_id_182.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c64015609338506f37ee62ba229038234222275e4d99ce88ddcaf20246958700
-size 90157
+oid sha256:96010494b5f6fdc7fe0f0c787f136d8bb673ae39df2d1260eeb47ab81af98821
+size 72352
diff --git a/portfolio/rt/district_07-los-angeles/19__speedmaps__district_07-los-angeles__itp_id_380.ipynb b/portfolio/rt/district_07-los-angeles/19__speedmaps__district_07-los-angeles__itp_id_380.ipynb
index cb7616ed3..0af54bd51 100644
--- a/portfolio/rt/district_07-los-angeles/19__speedmaps__district_07-los-angeles__itp_id_380.ipynb
+++ b/portfolio/rt/district_07-los-angeles/19__speedmaps__district_07-los-angeles__itp_id_380.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1e24c1ee4e711d68c5652a144a7a3692ff4e5b17ba3a66abbab370389cff457d
-size 90227
+oid sha256:37b943f0b0c236cceab21dd2f676e0c3bf15a7e46aacb7f7137d63678ea1e941
+size 72496
diff --git a/portfolio/rt/district_08-san-bernardino/00__speedmaps__district_08-san-bernardino__itp_id_34.ipynb b/portfolio/rt/district_08-san-bernardino/00__speedmaps__district_08-san-bernardino__itp_id_34.ipynb
index 44320e695..39b05c40c 100644
--- a/portfolio/rt/district_08-san-bernardino/00__speedmaps__district_08-san-bernardino__itp_id_34.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/00__speedmaps__district_08-san-bernardino__itp_id_34.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:09dc6ff42ddf3b1463f1e82187c9bcfd27706d4abb3201bc0c16a8f746a4a249
-size 89001
+oid sha256:60c2a6c86f65d5c247e029dd12f84269e7df5a550e7cc6208f1a922afca143d6
+size 71375
diff --git a/portfolio/rt/district_08-san-bernardino/01__speedmaps__district_08-san-bernardino__itp_id_214.ipynb b/portfolio/rt/district_08-san-bernardino/01__speedmaps__district_08-san-bernardino__itp_id_214.ipynb
index f780531b9..2ada12bb1 100644
--- a/portfolio/rt/district_08-san-bernardino/01__speedmaps__district_08-san-bernardino__itp_id_214.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/01__speedmaps__district_08-san-bernardino__itp_id_214.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7419c779e9826e82edaefc9df5b2890a5071cd6028717f930541621cd2c4be6a
-size 93363
+oid sha256:c6e6ca3ce541eb34c1285bd2c23a2c73f2e1091039da4e48f354dd0764d89bc2
+size 75646
diff --git a/portfolio/rt/district_08-san-bernardino/02__speedmaps__district_08-san-bernardino__itp_id_232.ipynb b/portfolio/rt/district_08-san-bernardino/02__speedmaps__district_08-san-bernardino__itp_id_232.ipynb
index 8e7e90daa..986f8ace4 100644
--- a/portfolio/rt/district_08-san-bernardino/02__speedmaps__district_08-san-bernardino__itp_id_232.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/02__speedmaps__district_08-san-bernardino__itp_id_232.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3eda66f6945bf6460e25e8caee568adea14b441c5e464f41c4bb1f1960934cb1
-size 89888
+oid sha256:c6a1f45216815daf4e723df264b52f3c66c1cca0a7352dacdd6c3f8336fcfb48
+size 72279
diff --git a/portfolio/rt/district_08-san-bernardino/03__speedmaps__district_08-san-bernardino__itp_id_238.ipynb b/portfolio/rt/district_08-san-bernardino/03__speedmaps__district_08-san-bernardino__itp_id_238.ipynb
index abe6251a1..c504521bd 100644
--- a/portfolio/rt/district_08-san-bernardino/03__speedmaps__district_08-san-bernardino__itp_id_238.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/03__speedmaps__district_08-san-bernardino__itp_id_238.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5f26072acf2884d879bf6a59434b9220080894f6a46d62ed85b85ce777932964
-size 87675
+oid sha256:68dd03c028216dd35ed1f73295c5c844e1309a1e587e7f20f4c3125115ffe67a
+size 69981
diff --git a/portfolio/rt/district_08-san-bernardino/04__speedmaps__district_08-san-bernardino__itp_id_269.ipynb b/portfolio/rt/district_08-san-bernardino/04__speedmaps__district_08-san-bernardino__itp_id_269.ipynb
index 3a856768c..08cd9101d 100644
--- a/portfolio/rt/district_08-san-bernardino/04__speedmaps__district_08-san-bernardino__itp_id_269.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/04__speedmaps__district_08-san-bernardino__itp_id_269.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:092dac7e1b4ab4a3b4a266eca2212f3b0abdcaa1b68a177787351cdccf7da288
-size 90259
+oid sha256:8ca115b8d8435c66b7a2e759e44397baedfae1649c5a777c95e5044ad99a8336
+size 72582
diff --git a/portfolio/rt/district_08-san-bernardino/05__speedmaps__district_08-san-bernardino__itp_id_360.ipynb b/portfolio/rt/district_08-san-bernardino/05__speedmaps__district_08-san-bernardino__itp_id_360.ipynb
index ce97ea064..81d6f784b 100644
--- a/portfolio/rt/district_08-san-bernardino/05__speedmaps__district_08-san-bernardino__itp_id_360.ipynb
+++ b/portfolio/rt/district_08-san-bernardino/05__speedmaps__district_08-san-bernardino__itp_id_360.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:44e0fb6c104a772ca226f5c8135c2a54b57031fce03a97eaacd0961449444714
-size 93202
+oid sha256:8fbd18a598b717f5994cf86b843c74d3cd5512d090f88d424814f7b9138cae5c
+size 75506
diff --git a/portfolio/rt/district_09-bishop/00__speedmaps__district_09-bishop__itp_id_99.ipynb b/portfolio/rt/district_09-bishop/00__speedmaps__district_09-bishop__itp_id_99.ipynb
index 972769f7c..c5e4c8bfc 100644
--- a/portfolio/rt/district_09-bishop/00__speedmaps__district_09-bishop__itp_id_99.ipynb
+++ b/portfolio/rt/district_09-bishop/00__speedmaps__district_09-bishop__itp_id_99.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ea2da450f4c2cbcf420865d6b7db064e796d8acb0aa139bd1d46e95d0ffc27b1
-size 89990
+oid sha256:acaac733ba4779faed85e71cd162430bf00a5cd5822c7f759b3535980a520981
+size 72297
diff --git a/portfolio/rt/district_10-stockton/00__speedmaps__district_10-stockton__itp_id_107.ipynb b/portfolio/rt/district_10-stockton/00__speedmaps__district_10-stockton__itp_id_107.ipynb
index 8b95b494f..d448c2d7d 100644
--- a/portfolio/rt/district_10-stockton/00__speedmaps__district_10-stockton__itp_id_107.ipynb
+++ b/portfolio/rt/district_10-stockton/00__speedmaps__district_10-stockton__itp_id_107.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:67490c7ab016b88852229c3f8bab708feed7b5dd473c385269805d65431aa1f4
-size 87231
+oid sha256:ed0413c3b3c69ac1273225c6d177f3194a0aa36c778ee54a7d60b0da605029f2
+size 69606
diff --git a/portfolio/rt/district_10-stockton/01__speedmaps__district_10-stockton__itp_id_349.ipynb b/portfolio/rt/district_10-stockton/01__speedmaps__district_10-stockton__itp_id_349.ipynb
index ccb77ad93..ac9e68733 100644
--- a/portfolio/rt/district_10-stockton/01__speedmaps__district_10-stockton__itp_id_349.ipynb
+++ b/portfolio/rt/district_10-stockton/01__speedmaps__district_10-stockton__itp_id_349.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a1725e04770d41610bfb1645387e43d2cee3e630be96b4d1a9f119a0cb72ccaf
-size 89869
+oid sha256:9c35d001e2474261dc1789eb2c8d798c48243dda440bdda29d8e25caee717d3d
+size 72243
diff --git a/portfolio/rt/district_10-stockton/02__speedmaps__district_10-stockton__itp_id_10.ipynb b/portfolio/rt/district_10-stockton/02__speedmaps__district_10-stockton__itp_id_10.ipynb
index ae90b028d..42585daec 100644
--- a/portfolio/rt/district_10-stockton/02__speedmaps__district_10-stockton__itp_id_10.ipynb
+++ b/portfolio/rt/district_10-stockton/02__speedmaps__district_10-stockton__itp_id_10.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1fddf152f867b53b4b567f3a1cb1407576b73ccd3d79941b557f4d8b87656bb8
-size 88438
+oid sha256:3b414ae047cbaef5aac43b67b9bfd776734d9840c28f01cf4062e1b2a00f6a82
+size 70738
diff --git a/portfolio/rt/district_10-stockton/03__speedmaps__district_10-stockton__itp_id_284.ipynb b/portfolio/rt/district_10-stockton/03__speedmaps__district_10-stockton__itp_id_284.ipynb
index 5f101f585..4411a8be4 100644
--- a/portfolio/rt/district_10-stockton/03__speedmaps__district_10-stockton__itp_id_284.ipynb
+++ b/portfolio/rt/district_10-stockton/03__speedmaps__district_10-stockton__itp_id_284.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:227f0730efab0b4bfa223eeab201430fbdb5c142dabd64eb68c163cf6b798695
-size 89441
+oid sha256:56fa3a49794882faaf5a76eabbce7c5129e2563cbca7b3a14b68e26f2c867fee
+size 71716
diff --git a/portfolio/rt/district_10-stockton/04__speedmaps__district_10-stockton__itp_id_484.ipynb b/portfolio/rt/district_10-stockton/04__speedmaps__district_10-stockton__itp_id_484.ipynb
index 6ee0e2f4d..f787c3221 100644
--- a/portfolio/rt/district_10-stockton/04__speedmaps__district_10-stockton__itp_id_484.ipynb
+++ b/portfolio/rt/district_10-stockton/04__speedmaps__district_10-stockton__itp_id_484.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0ba2ab772ca346451f87d3b8c48f2eaad6c88b4909f53240141deac63187a7f7
-size 89710
+oid sha256:38eeb4176070a3eb596e4dad4725477ac7c06626044bc231d6b65888619073b0
+size 72000
diff --git a/portfolio/rt/district_11-san-diego/00__speedmaps__district_11-san-diego__itp_id_226.ipynb b/portfolio/rt/district_11-san-diego/00__speedmaps__district_11-san-diego__itp_id_226.ipynb
index 6aca8bf4b..c6fade8fe 100644
--- a/portfolio/rt/district_11-san-diego/00__speedmaps__district_11-san-diego__itp_id_226.ipynb
+++ b/portfolio/rt/district_11-san-diego/00__speedmaps__district_11-san-diego__itp_id_226.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7bca1a8adc5508c72343452e866e6da4429e6b0137823f1b8e5794351539a5ee
-size 92199
+oid sha256:15260fbe88d94b7fc39175cba46f4280582f5a5f7308974e2dcd507e212da6b3
+size 74503
diff --git a/portfolio/rt/district_11-san-diego/01__speedmaps__district_11-san-diego__itp_id_277.ipynb b/portfolio/rt/district_11-san-diego/01__speedmaps__district_11-san-diego__itp_id_277.ipynb
index 21a67ab15..7b5d8de7d 100644
--- a/portfolio/rt/district_11-san-diego/01__speedmaps__district_11-san-diego__itp_id_277.ipynb
+++ b/portfolio/rt/district_11-san-diego/01__speedmaps__district_11-san-diego__itp_id_277.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:63a6492c9823ffbdb5aae7c4d15163b14f357277fbb244e3eb8eb33c41826c23
-size 90557
+oid sha256:f58f8f7dc7aa6ddcbe6bece75cab6bd30a094d6b5d3475f62fa5ac9fd4774a4b
+size 72853
diff --git a/portfolio/rt/district_11-san-diego/02__speedmaps__district_11-san-diego__itp_id_278.ipynb b/portfolio/rt/district_11-san-diego/02__speedmaps__district_11-san-diego__itp_id_278.ipynb
index 7103b4666..2761825db 100644
--- a/portfolio/rt/district_11-san-diego/02__speedmaps__district_11-san-diego__itp_id_278.ipynb
+++ b/portfolio/rt/district_11-san-diego/02__speedmaps__district_11-san-diego__itp_id_278.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:67eb7782671c4723b8af5436a1121dd46245dbd1d6f26e31449cd37ee5f5699b
-size 90689
+oid sha256:a37c4b9eea3ee63033c0a3d72e97444921d7a5e7dd6febddbd543bbdbd969d09
+size 72966
diff --git a/portfolio/rt/district_12-irvine/00__speedmaps__district_12-irvine__itp_id_235.ipynb b/portfolio/rt/district_12-irvine/00__speedmaps__district_12-irvine__itp_id_235.ipynb
index 794f147c9..021854af5 100644
--- a/portfolio/rt/district_12-irvine/00__speedmaps__district_12-irvine__itp_id_235.ipynb
+++ b/portfolio/rt/district_12-irvine/00__speedmaps__district_12-irvine__itp_id_235.ipynb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:18f85d3d1aefa5814f4ac6c363b81b934169863bd1b8ec52d8687df6058072b3
-size 89897
+oid sha256:c620d50155d1ca44c32c92cd2f578860b47f981760ee03a4c7da1a8fab327f64
+size 72168
diff --git a/portfolio/sites/rt.yml b/portfolio/sites/rt.yml
index add773d81..4131b2841 100644
--- a/portfolio/sites/rt.yml
+++ b/portfolio/sites/rt.yml
@@ -1,5 +1,5 @@
directory: ./ca_transit_speed_maps/
-notebook: ./ca_transit_speed_maps/speedmaps.ipynb
+notebook: ./ca_transit_speed_maps/01_new_speedmaps.ipynb
parts:
- chapters:
- caption: District 01 - Eureka
@@ -10,17 +10,25 @@ parts:
- itp_id: 108
- itp_id: 135
- itp_id: 159
+ - itp_id: 198
+ - itp_id: 261
- caption: District 02 - Redding
params:
district: 02 - Redding
sections:
- itp_id: 259
+ - itp_id: 334
- caption: District 03 - Marysville
params:
district: 03 - Marysville
sections:
+ - itp_id: 48
- itp_id: 105
+ - itp_id: 489
+ - itp_id: 221
+ - itp_id: 273
- itp_id: 331
+ - itp_id: 351
- itp_id: 372
- caption: District 04 - Oakland
params:
@@ -37,6 +45,7 @@ parts:
- itp_id: 70
- itp_id: 336
- itp_id: 127
+ - itp_id: 167
- itp_id: 194
- itp_id: 218
- itp_id: 246
@@ -54,10 +63,11 @@ parts:
params:
district: 05 - San Luis Obispo
sections:
+ - itp_id: 287
- itp_id: 298
- - itp_id: 312
- itp_id: 208
- itp_id: 289
+ - itp_id: 293
- itp_id: 296
- caption: District 06 - Fresno
params:
@@ -66,8 +76,9 @@ parts:
- itp_id: 116
- itp_id: 361
- itp_id: 126
+ - itp_id: 146
- itp_id: 148
- - itp_id: 188
+ - itp_id: 474
- caption: District 07 - Los Angeles
params:
district: 07 - Los Angeles
@@ -75,8 +86,8 @@ parts:
- itp_id: 16
- itp_id: 45
- itp_id: 54
+ - itp_id: 75
- itp_id: 87
- - itp_id: 97
- itp_id: 183
- itp_id: 210
- itp_id: 228
@@ -84,23 +95,23 @@ parts:
- itp_id: 243
- itp_id: 260
- itp_id: 295
- - itp_id: 300
- itp_id: 308
- itp_id: 337
- itp_id: 339
- - itp_id: 112
- itp_id: 123
+ - itp_id: 170
- itp_id: 182
+ - itp_id: 165
- itp_id: 380
- caption: District 08 - San Bernardino
params:
district: 08 - San Bernardino
sections:
- - itp_id: 34
- itp_id: 214
- itp_id: 232
- itp_id: 238
- itp_id: 269
+ - itp_id: 327
- itp_id: 360
- caption: District 09 - Bishop
params:
@@ -116,6 +127,7 @@ parts:
- itp_id: 10
- itp_id: 284
- itp_id: 484
+ - itp_id: 482
- caption: District 11 - San Diego
params:
district: 11 - San Diego
@@ -127,6 +139,7 @@ parts:
params:
district: 12 - Irvine
sections:
+ - itp_id: 14
- itp_id: 235
readme: ./ca_transit_speed_maps/README.md
title: California Transit Speed Maps
diff --git a/rt_delay/rt_analysis/rt_filter_map_plot.py b/rt_delay/rt_analysis/rt_filter_map_plot.py
index 35a5ecd0c..0dfed4e7b 100644
--- a/rt_delay/rt_analysis/rt_filter_map_plot.py
+++ b/rt_delay/rt_analysis/rt_filter_map_plot.py
@@ -310,7 +310,7 @@ def autocorridor(self, shape_id: str, stop_seq_range: list, manual_exclude = {})
return
def segment_speed_map(self, segments: str='stops', how: str='low_speeds',
- colorscale = ZERO_THIRTY_COLORSCALE, size: list=[900, 550],
+ colorscale = ACCESS_ZERO_THIRTY_COLORSCALE, size: list=[900, 550],
no_title = False, corridor = False, shn = False,
no_render = False):
''' Generate a map of segment speeds aggregated across all trips for each shape, either as medians
diff --git a/rt_segment_speeds/40_speedmap_scratchpad.ipynb b/rt_segment_speeds/40_speedmap_scratchpad.ipynb
index 618ec46e8..f405efc55 100644
--- a/rt_segment_speeds/40_speedmap_scratchpad.ipynb
+++ b/rt_segment_speeds/40_speedmap_scratchpad.ipynb
@@ -2,17 +2,18 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 1,
"id": "d528f399-cf33-459e-b5dc-92e0b4ae389a",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
+ "import geopandas as gpd\n",
"from siuba import *\n",
"import shared_utils\n",
"\n",
"from calitp_data_analysis import get_fs\n",
- "from segment_speed_utils import helpers, time_series_utils\n",
+ "from segment_speed_utils import helpers, time_series_utils, gtfs_schedule_wrangling\n",
"from segment_speed_utils.project_vars import SCHED_GCS, SEGMENT_GCS, GTFS_DATA_DICT, analysis_date"
]
},
@@ -26,7 +27,7 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 2,
"id": "6cd318e5-5c4e-4249-b158-232f4d940770",
"metadata": {},
"outputs": [],
@@ -36,17 +37,17 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 3,
"id": "6e86c1a8-d3de-4fc6-9478-c03133b6745c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "{'dir': '${gcs_paths.SEGMENT_GCS}', 'stage1': '${speeds_tables.vp_dwell}', 'proxy_stop_times': 'stop_time_expansion/speedmap_stop_times', 'stage2': 'nearest/nearest_vp_speedmap_proxy', 'stage2b': 'nearest/nearest2_vp_speedmap_proxy', 'stage3': 'speedmap/stop_arrivals_proxy', 'stage3b': 'speedmap/stop_arrivals', 'stage4': 'speedmap/speeds', 'trip_stop_cols': ['trip_instance_key', 'stop_sequence', 'stop_sequence1'], 'shape_stop_cols': ['shape_array_key', 'shape_id', 'route_id', 'route_short_name'], 'stop_pair_cols': ['stop_pair', 'stop_pair_name', 'segment_id'], 'segments_file': 'segment_options/speedmap_segments', 'shape_stop_single_segment': 'rollup_singleday/speeds_shape_speedmap_segments', 'route_dir_single_segment': 'rollup_singleday/speeds_route_dir_speedmap_segments', 'route_dir_multi_segment': 'rollup_multiday/speeds_route_dir_speedmap_segments', 'min_trip_minutes': '${speed_vars.time_min_cutoff}', 'max_trip_minutes': 180, 'max_speed': '${speed_vars.max_speed}', 'min_meters_elapsed': 1609, 'segment_meters': 1000}"
+ "{'dir': '${gcs_paths.SEGMENT_GCS}', 'stage1': '${speeds_tables.vp_dwell}', 'proxy_stop_times': 'stop_time_expansion/speedmap_stop_times', 'stage2': 'nearest/nearest_vp_speedmap_proxy', 'stage2b': 'nearest/nearest2_vp_speedmap_proxy', 'stage3': 'speedmap/stop_arrivals_proxy', 'stage3b': 'speedmap/stop_arrivals', 'stage4': 'speedmap/speeds', 'trip_stop_cols': ['trip_instance_key', 'stop_sequence', 'stop_sequence1'], 'shape_stop_cols': ['shape_array_key', 'shape_id'], 'stop_pair_cols': ['stop_pair', 'stop_pair_name', 'segment_id'], 'route_dir_cols': ['route_id', 'direction_id'], 'segments_file': 'segment_options/speedmap_segments', 'shape_stop_single_segment': 'rollup_singleday/speeds_shape_speedmap_segments', 'shape_stop_single_segment_detail': 'rollup_singleday/speeds_shape_speedmap_segments_detail', 'route_dir_single_segment': 'rollup_singleday/speeds_route_dir_speedmap_segments', 'route_dir_multi_segment': 'rollup_multiday/speeds_route_dir_speedmap_segments', 'min_trip_minutes': '${speed_vars.time_min_cutoff}', 'max_trip_minutes': 180, 'max_speed': '${speed_vars.max_speed}', 'min_meters_elapsed': 1609, 'segment_meters': 1000}"
]
},
- "execution_count": 29,
+ "execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@@ -57,17 +58,17 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": 4,
"id": "f766b50a-c70d-4681-992c-d7f8979ada69",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "'2024-08-14'"
+ "'2024-10-16'"
]
},
- "execution_count": 30,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@@ -78,27 +79,37 @@
},
{
"cell_type": "code",
- "execution_count": 31,
+ "execution_count": 5,
"id": "b4dd7af7-0cfa-4d94-a96d-f11e7cdc12f9",
"metadata": {},
"outputs": [],
"source": [
- "path = f'{catalog.speedmap_segments.dir}{catalog.speedmap_segments.stage4}_{analysis_date}.parquet'"
+ "# path = f'{catalog.speedmap_segments.dir}{catalog.speedmap_segments.stage4}_{analysis_date}.parquet'"
]
},
{
"cell_type": "code",
- "execution_count": 32,
- "id": "b59806c6-2b6e-449b-be04-2ac59771d122",
+ "execution_count": 6,
+ "id": "12b824f2-4326-4f5e-ae86-95a46703c948",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "path = f'{catalog.speedmap_segments.dir}{catalog.speedmap_segments.shape_stop_single_segment_detail}_{analysis_date}.parquet'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "2743cbe7-b472-4ea2-af08-13d2003e93db",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "'gs://calitp-analytics-data/data-analyses/rt_segment_speeds/speedmap/speeds_2024-08-14.parquet'"
+ "'gs://calitp-analytics-data/data-analyses/rt_segment_speeds/rollup_singleday/speeds_shape_speedmap_segments_detail_2024-10-16.parquet'"
]
},
- "execution_count": 32,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
@@ -109,63 +120,255 @@
},
{
"cell_type": "code",
- "execution_count": 33,
- "id": "6bd54bfc-cfad-487b-bf54-0cab10e72e36",
+ "execution_count": 8,
+ "id": "7669d09d-c49e-448c-b57a-299112614bd0",
"metadata": {},
"outputs": [],
"source": [
- "df = pd.read_parquet(path)"
+ "detail = gpd.read_parquet(path)"
]
},
{
"cell_type": "code",
- "execution_count": 34,
- "id": "a4808944-fefa-486a-80f2-e75a1ae8b491",
+ "execution_count": 9,
+ "id": "ddf376af-9781-4943-b0d7-5f5418e07735",
"metadata": {},
"outputs": [
{
"data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " schedule_gtfs_dataset_key | \n",
+ " shape_array_key | \n",
+ " shape_id | \n",
+ " route_id | \n",
+ " route_short_name | \n",
+ " stop_pair | \n",
+ " stop_pair_name | \n",
+ " segment_id | \n",
+ " time_of_day | \n",
+ " p50_mph | \n",
+ " ... | \n",
+ " p20_mph | \n",
+ " p80_mph | \n",
+ " name | \n",
+ " caltrans_district | \n",
+ " organization_source_record_id | \n",
+ " organization_name | \n",
+ " base64_url | \n",
+ " geometry | \n",
+ " n_trips_sch | \n",
+ " trips_hr_sch | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0139b1253130b33adcd4b3a4490530d2 | \n",
+ " 51530f7b5ba4cdde7c644c14f262005c | \n",
+ " b0c096a2-4c32-4675-b005-43b58b3781e6 | \n",
+ " 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 | \n",
+ " C30 WB | \n",
+ " 0d1ef8b5-90e4-40de-b37b-504cb862d18b__5b9a7352... | \n",
+ " Woodlake Park EB__Cypress St & Naranjo Blvd WB | \n",
+ " 0d1ef8b5-90e4-40de-b37b-504cb862d18b-5b9a7352-... | \n",
+ " AM Peak | \n",
+ " 17.27 | \n",
+ " ... | \n",
+ " 15.20 | \n",
+ " 20.96 | \n",
+ " TCRTA TripShot Schedule | \n",
+ " 06 - Fresno | \n",
+ " rec4YWVqVwJ9XqDbq | \n",
+ " Tulare County Regional Transit Agency | \n",
+ " aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... | \n",
+ " LINESTRING (-119.09762 36.41481, -119.09762 36... | \n",
+ " 4 | \n",
+ " 1.333333 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0139b1253130b33adcd4b3a4490530d2 | \n",
+ " 51530f7b5ba4cdde7c644c14f262005c | \n",
+ " b0c096a2-4c32-4675-b005-43b58b3781e6 | \n",
+ " 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 | \n",
+ " C30 WB | \n",
+ " 5b9a7352-556f-4272-b663-22f9821d6a40__5f894da7... | \n",
+ " Cypress St & Naranjo Blvd WB__Millwood and Roa... | \n",
+ " 5b9a7352-556f-4272-b663-22f9821d6a40-5f894da7-... | \n",
+ " AM Peak | \n",
+ " 49.50 | \n",
+ " ... | \n",
+ " 43.85 | \n",
+ " 51.81 | \n",
+ " TCRTA TripShot Schedule | \n",
+ " 06 - Fresno | \n",
+ " rec4YWVqVwJ9XqDbq | \n",
+ " Tulare County Regional Transit Agency | \n",
+ " aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... | \n",
+ " LINESTRING (-119.10550 36.41377, -119.10562 36... | \n",
+ " 4 | \n",
+ " 1.333333 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0139b1253130b33adcd4b3a4490530d2 | \n",
+ " 51530f7b5ba4cdde7c644c14f262005c | \n",
+ " b0c096a2-4c32-4675-b005-43b58b3781e6 | \n",
+ " 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 | \n",
+ " C30 WB | \n",
+ " 5b9a7352-556f-4272-b663-22f9821d6a40__5f894da7... | \n",
+ " Cypress St & Naranjo Blvd WB__Millwood and Roa... | \n",
+ " 5b9a7352-556f-4272-b663-22f9821d6a40-5f894da7-... | \n",
+ " AM Peak | \n",
+ " 58.87 | \n",
+ " ... | \n",
+ " 57.15 | \n",
+ " 59.50 | \n",
+ " TCRTA TripShot Schedule | \n",
+ " 06 - Fresno | \n",
+ " rec4YWVqVwJ9XqDbq | \n",
+ " Tulare County Regional Transit Agency | \n",
+ " aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... | \n",
+ " LINESTRING (-119.11666 36.41379, -119.11684 36... | \n",
+ " 4 | \n",
+ " 1.333333 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
3 rows × 21 columns
\n",
+ "
"
+ ],
"text/plain": [
- "Index(['trip_instance_key', 'stop_sequence', 'stop_sequence1',\n",
- " 'shape_array_key', 'stop_meters', 'arrival_time', 'arrival_time_sec',\n",
- " 'subseq_arrival_time_sec', 'subseq_stop_meters', 'meters_elapsed',\n",
- " 'sec_elapsed', 'speed_mph', 'schedule_gtfs_dataset_key', 'route_id',\n",
- " 'direction_id', 'route_short_name', 'scheduled_service_minutes',\n",
- " 'sched_rt_category', 'time_of_day', 'shape_id', 'segment_id',\n",
- " 'stop_pair_name', 'stop_pair'],\n",
- " dtype='object')"
+ " schedule_gtfs_dataset_key shape_array_key \\\n",
+ "0 0139b1253130b33adcd4b3a4490530d2 51530f7b5ba4cdde7c644c14f262005c \n",
+ "1 0139b1253130b33adcd4b3a4490530d2 51530f7b5ba4cdde7c644c14f262005c \n",
+ "2 0139b1253130b33adcd4b3a4490530d2 51530f7b5ba4cdde7c644c14f262005c \n",
+ "\n",
+ " shape_id route_id \\\n",
+ "0 b0c096a2-4c32-4675-b005-43b58b3781e6 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 \n",
+ "1 b0c096a2-4c32-4675-b005-43b58b3781e6 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 \n",
+ "2 b0c096a2-4c32-4675-b005-43b58b3781e6 874b0dfa-ab3d-47da-ac75-5fd7b9bdea42 \n",
+ "\n",
+ " route_short_name stop_pair \\\n",
+ "0 C30 WB 0d1ef8b5-90e4-40de-b37b-504cb862d18b__5b9a7352... \n",
+ "1 C30 WB 5b9a7352-556f-4272-b663-22f9821d6a40__5f894da7... \n",
+ "2 C30 WB 5b9a7352-556f-4272-b663-22f9821d6a40__5f894da7... \n",
+ "\n",
+ " stop_pair_name \\\n",
+ "0 Woodlake Park EB__Cypress St & Naranjo Blvd WB \n",
+ "1 Cypress St & Naranjo Blvd WB__Millwood and Roa... \n",
+ "2 Cypress St & Naranjo Blvd WB__Millwood and Roa... \n",
+ "\n",
+ " segment_id time_of_day p50_mph \\\n",
+ "0 0d1ef8b5-90e4-40de-b37b-504cb862d18b-5b9a7352-... AM Peak 17.27 \n",
+ "1 5b9a7352-556f-4272-b663-22f9821d6a40-5f894da7-... AM Peak 49.50 \n",
+ "2 5b9a7352-556f-4272-b663-22f9821d6a40-5f894da7-... AM Peak 58.87 \n",
+ "\n",
+ " ... p20_mph p80_mph name caltrans_district \\\n",
+ "0 ... 15.20 20.96 TCRTA TripShot Schedule 06 - Fresno \n",
+ "1 ... 43.85 51.81 TCRTA TripShot Schedule 06 - Fresno \n",
+ "2 ... 57.15 59.50 TCRTA TripShot Schedule 06 - Fresno \n",
+ "\n",
+ " organization_source_record_id organization_name \\\n",
+ "0 rec4YWVqVwJ9XqDbq Tulare County Regional Transit Agency \n",
+ "1 rec4YWVqVwJ9XqDbq Tulare County Regional Transit Agency \n",
+ "2 rec4YWVqVwJ9XqDbq Tulare County Regional Transit Agency \n",
+ "\n",
+ " base64_url \\\n",
+ "0 aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... \n",
+ "1 aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... \n",
+ "2 aHR0cHM6Ly90Y3J0YS50cmlwc2hvdC5jb20vdjEvZ3Rmcy... \n",
+ "\n",
+ " geometry n_trips_sch trips_hr_sch \n",
+ "0 LINESTRING (-119.09762 36.41481, -119.09762 36... 4 1.333333 \n",
+ "1 LINESTRING (-119.10550 36.41377, -119.10562 36... 4 1.333333 \n",
+ "2 LINESTRING (-119.11666 36.41379, -119.11684 36... 4 1.333333 \n",
+ "\n",
+ "[3 rows x 21 columns]"
]
},
- "execution_count": 34,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df.columns"
+ "detail >> head(3)"
]
},
{
"cell_type": "code",
- "execution_count": 36,
- "id": "54ab4555-0720-47a0-bd74-3b4abdc6ac95",
+ "execution_count": 10,
+ "id": "294b8f67-1486-48e9-8fe9-015b009d8e53",
"metadata": {},
"outputs": [],
"source": [
- "route_info = helpers.import_scheduled_trips(\n",
- " analysis_date,\n",
- " columns=[\n",
- " \"gtfs_dataset_key\", \"trip_instance_key\",\n",
- " \"route_id\", \"direction_id\", \"route_short_name\"\n",
- " ],\n",
- " get_pandas=True,\n",
- ")"
+ "path = f'{catalog.schedule_downloads.dir}{catalog.schedule_downloads.trips}_{analysis_date}.parquet'"
]
},
{
"cell_type": "code",
- "execution_count": 37,
- "id": "e70276d9-382d-4262-81a7-ac172d1316e5",
+ "execution_count": 11,
+ "id": "508d38d4-086c-43e6-8044-6ded0882e105",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'gs://calitp-analytics-data/data-analyses/rt_delay/compiled_cached_views/trips_2024-10-16.parquet'"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "path"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "dc3543ea-2544-4917-887e-9de4441fb460",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "trips = pd.read_parquet(path)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "de097b6e-9b83-4d3a-b3e6-3646c7c7be86",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = gtfs_schedule_wrangling.get_sched_trips_hr(analysis_date)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "55d704c5-1a87-4bbf-bcde-e867b53c3988",
"metadata": {},
"outputs": [
{
@@ -189,53 +392,153 @@
" \n",
" \n",
" | \n",
+ " route_id | \n",
+ " shape_id | \n",
+ " time_of_day | \n",
" schedule_gtfs_dataset_key | \n",
- " trip_instance_key | \n",
+ " n_trips | \n",
+ " trips_hr | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " AM Peak | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 3 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " Early AM | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 1 | \n",
+ " 0.333333 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " Midday | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 5 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ " route_id shape_id time_of_day schedule_gtfs_dataset_key n_trips \\\n",
+ "0 001 0010111 AM Peak 9809d3f8121513057bc5cb8de7b54ce2 3 \n",
+ "1 001 0010111 Early AM 9809d3f8121513057bc5cb8de7b54ce2 1 \n",
+ "2 001 0010111 Midday 9809d3f8121513057bc5cb8de7b54ce2 5 \n",
+ "\n",
+ " trips_hr \n",
+ "0 1.000000 \n",
+ "1 0.333333 \n",
+ "2 1.000000 "
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df >> head(3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "c6f784df-8dc0-4990-aaad-4a42af5b7e5e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
" route_id | \n",
- " direction_id | \n",
+ " shape_id | \n",
+ " time_of_day | \n",
+ " schedule_gtfs_dataset_key | \n",
+ " n_trips | \n",
+ " trips_hr | \n",
" route_short_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
- " 1770249a5a2e770ca90628434d4934b1 | \n",
- " 7406077cb3ef2783f260ac5ddf06f884 | \n",
- " 3407 | \n",
- " 1.0 | \n",
- " Route 18 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " AM Peak | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 3 | \n",
+ " 1.000000 | \n",
+ " 1 | \n",
"
\n",
" \n",
" 1 | \n",
- " 1770249a5a2e770ca90628434d4934b1 | \n",
- " d9f1f0a4d53997858a48a340772c75a3 | \n",
- " 3408 | \n",
- " 0.0 | \n",
- " Route 21 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " Early AM | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 1 | \n",
+ " 0.333333 | \n",
+ " 1 | \n",
"
\n",
" \n",
" 2 | \n",
- " 1770249a5a2e770ca90628434d4934b1 | \n",
- " 3c36b0976b9cd77a0862224d842fea5f | \n",
- " 3408 | \n",
- " 0.0 | \n",
- " Route 21 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " Midday | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 5 | \n",
+ " 1.000000 | \n",
+ " 1 | \n",
"
\n",
" \n",
" 3 | \n",
- " 1770249a5a2e770ca90628434d4934b1 | \n",
- " a26bcf0a35ac9342d82435bb064f8700 | \n",
- " 3408 | \n",
- " 0.0 | \n",
- " Route 21 | \n",
+ " 001 | \n",
+ " 0010111 | \n",
+ " PM Peak | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 3 | \n",
+ " 0.600000 | \n",
+ " 1 | \n",
"
\n",
" \n",
" 4 | \n",
- " 1770249a5a2e770ca90628434d4934b1 | \n",
- " 77b979dca36b0f4fd305210cee23f6a1 | \n",
- " 3408 | \n",
- " 0.0 | \n",
- " Route 21 | \n",
+ " 001 | \n",
+ " 0010113 | \n",
+ " AM Peak | \n",
+ " 9809d3f8121513057bc5cb8de7b54ce2 | \n",
+ " 3 | \n",
+ " 1.000000 | \n",
+ " 1 | \n",
"
\n",
" \n",
" ... | \n",
@@ -244,129 +547,112 @@
" ... | \n",
" ... | \n",
" ... | \n",
+ " ... | \n",
+ " ... | \n",
"
\n",
" \n",
- " 98814 | \n",
- " c4092405159366c705b62df938293a4e | \n",
- " 9f5b9be0653ea22d7c705fb8ccecf20f | \n",
- " Orange County Line | \n",
- " 0.0 | \n",
- " None | \n",
+ " 19176 | \n",
+ " shrdserv | \n",
+ " shrdserv_loop_3 | \n",
+ " PM Peak | \n",
+ " a8d5f90bfd689badb7e1deb041408e96 | \n",
+ " 1 | \n",
+ " 0.200000 | \n",
+ " Shared Services | \n",
"
\n",
" \n",
- " 98815 | \n",
- " c4092405159366c705b62df938293a4e | \n",
- " c9284435d85c3cf9a5fa5afacbcfb5f0 | \n",
- " Antelope Valley Line | \n",
- " 1.0 | \n",
+ " 19177 | \n",
+ " valleywide | \n",
+ " valleywide | \n",
+ " AM Peak | \n",
+ " 31152914d10e2d0977b8b2fabb167922 | \n",
+ " 12 | \n",
+ " 4.000000 | \n",
" None | \n",
"
\n",
" \n",
- " 98816 | \n",
- " c4092405159366c705b62df938293a4e | \n",
- " 23bdf6228677587ad66658b818f8f3c8 | \n",
- " Orange County Line | \n",
- " 1.0 | \n",
+ " 19178 | \n",
+ " valleywide | \n",
+ " valleywide | \n",
+ " Evening | \n",
+ " 31152914d10e2d0977b8b2fabb167922 | \n",
+ " 9 | \n",
+ " 1.800000 | \n",
" None | \n",
"
\n",
" \n",
- " 98817 | \n",
- " c4092405159366c705b62df938293a4e | \n",
- " 633996f6d703cbff7838099bc4e8c6e0 | \n",
- " San Bernardino Line | \n",
- " 0.0 | \n",
+ " 19179 | \n",
+ " valleywide | \n",
+ " valleywide | \n",
+ " Midday | \n",
+ " 31152914d10e2d0977b8b2fabb167922 | \n",
+ " 20 | \n",
+ " 4.000000 | \n",
" None | \n",
"
\n",
" \n",
- " 98818 | \n",
- " c4092405159366c705b62df938293a4e | \n",
- " 244d1863feeafcda8075111177de596a | \n",
- " Antelope Valley Line | \n",
- " 0.0 | \n",
+ " 19180 | \n",
+ " valleywide | \n",
+ " valleywide | \n",
+ " PM Peak | \n",
+ " 31152914d10e2d0977b8b2fabb167922 | \n",
+ " 20 | \n",
+ " 4.000000 | \n",
" None | \n",
"
\n",
" \n",
"
\n",
- "
98819 rows × 5 columns
\n",
+ "
19181 rows × 7 columns
\n",
"
"
],
"text/plain": [
- " schedule_gtfs_dataset_key trip_instance_key \\\n",
- "0 1770249a5a2e770ca90628434d4934b1 7406077cb3ef2783f260ac5ddf06f884 \n",
- "1 1770249a5a2e770ca90628434d4934b1 d9f1f0a4d53997858a48a340772c75a3 \n",
- "2 1770249a5a2e770ca90628434d4934b1 3c36b0976b9cd77a0862224d842fea5f \n",
- "3 1770249a5a2e770ca90628434d4934b1 a26bcf0a35ac9342d82435bb064f8700 \n",
- "4 1770249a5a2e770ca90628434d4934b1 77b979dca36b0f4fd305210cee23f6a1 \n",
- "... ... ... \n",
- "98814 c4092405159366c705b62df938293a4e 9f5b9be0653ea22d7c705fb8ccecf20f \n",
- "98815 c4092405159366c705b62df938293a4e c9284435d85c3cf9a5fa5afacbcfb5f0 \n",
- "98816 c4092405159366c705b62df938293a4e 23bdf6228677587ad66658b818f8f3c8 \n",
- "98817 c4092405159366c705b62df938293a4e 633996f6d703cbff7838099bc4e8c6e0 \n",
- "98818 c4092405159366c705b62df938293a4e 244d1863feeafcda8075111177de596a \n",
+ " route_id shape_id time_of_day \\\n",
+ "0 001 0010111 AM Peak \n",
+ "1 001 0010111 Early AM \n",
+ "2 001 0010111 Midday \n",
+ "3 001 0010111 PM Peak \n",
+ "4 001 0010113 AM Peak \n",
+ "... ... ... ... \n",
+ "19176 shrdserv shrdserv_loop_3 PM Peak \n",
+ "19177 valleywide valleywide AM Peak \n",
+ "19178 valleywide valleywide Evening \n",
+ "19179 valleywide valleywide Midday \n",
+ "19180 valleywide valleywide PM Peak \n",
"\n",
- " route_id direction_id route_short_name \n",
- "0 3407 1.0 Route 18 \n",
- "1 3408 0.0 Route 21 \n",
- "2 3408 0.0 Route 21 \n",
- "3 3408 0.0 Route 21 \n",
- "4 3408 0.0 Route 21 \n",
- "... ... ... ... \n",
- "98814 Orange County Line 0.0 None \n",
- "98815 Antelope Valley Line 1.0 None \n",
- "98816 Orange County Line 1.0 None \n",
- "98817 San Bernardino Line 0.0 None \n",
- "98818 Antelope Valley Line 0.0 None \n",
+ " schedule_gtfs_dataset_key n_trips trips_hr route_short_name \n",
+ "0 9809d3f8121513057bc5cb8de7b54ce2 3 1.000000 1 \n",
+ "1 9809d3f8121513057bc5cb8de7b54ce2 1 0.333333 1 \n",
+ "2 9809d3f8121513057bc5cb8de7b54ce2 5 1.000000 1 \n",
+ "3 9809d3f8121513057bc5cb8de7b54ce2 3 0.600000 1 \n",
+ "4 9809d3f8121513057bc5cb8de7b54ce2 3 1.000000 1 \n",
+ "... ... ... ... ... \n",
+ "19176 a8d5f90bfd689badb7e1deb041408e96 1 0.200000 Shared Services \n",
+ "19177 31152914d10e2d0977b8b2fabb167922 12 4.000000 None \n",
+ "19178 31152914d10e2d0977b8b2fabb167922 9 1.800000 None \n",
+ "19179 31152914d10e2d0977b8b2fabb167922 20 4.000000 None \n",
+ "19180 31152914d10e2d0977b8b2fabb167922 20 4.000000 None \n",
"\n",
- "[98819 rows x 5 columns]"
+ "[19181 rows x 7 columns]"
]
},
- "execution_count": 37,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "route_info"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "id": "2849f073-df8e-4774-a755-1cac46c80e3e",
- "metadata": {},
- "outputs": [],
- "source": [
- "test = ['x', 'y', 'x']"
+ "gtfs_schedule_wrangling.merge_route_identifiers(df, analysis_date)"
]
},
{
- "cell_type": "code",
- "execution_count": 50,
- "id": "ed9c230d-ea3d-46bc-b570-203bde23fa0a",
+ "cell_type": "markdown",
+ "id": "6a062796-ae2f-4081-b73b-8923c7bd85b2",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['x', 'y']"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
"source": [
- "list(dict.fromkeys(test))"
+ "## Where'd the J line go??\n",
+ "\n",
+ "Has no route_short_name, removed that from grouping cols and added at end"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9964cea8-8418-4d4f-9987-019d34544012",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
diff --git a/rt_segment_speeds/logs/avg_speeds.log b/rt_segment_speeds/logs/avg_speeds.log
index 238fee6c7..f2447451f 100644
--- a/rt_segment_speeds/logs/avg_speeds.log
+++ b/rt_segment_speeds/logs/avg_speeds.log
@@ -534,3 +534,12 @@
2024-10-28 10:25:32.613 | INFO | __main__:segment_averages:182 - stop_segments segment averaging for ['2024-10-18'] execution time: 0:04:26.943776
2024-10-28 10:28:46.725 | INFO | __main__:segment_averages:182 - stop_segments segment averaging for ['2024-10-19'] execution time: 0:03:14.004012
2024-10-28 10:31:47.037 | INFO | __main__:segment_averages:182 - stop_segments segment averaging for ['2024-10-20'] execution time: 0:03:00.245588
+2024-11-01 09:18:04.863 | INFO | average_segment_speeds:segment_averages_detail:239 - speedmap_segments detailed segment averaging for ['2024-10-16'] execution time: 0:06:29.243269
+2024-11-01 09:23:55.409 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:05:50.230382
+2024-11-01 09:28:10.012 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:04:14.446376
+2024-11-04 12:49:57.565 | INFO | average_segment_speeds:segment_averages_detail:245 - speedmap_segments detailed segment averaging for ['2024-10-16'] execution time: 0:06:25.396982
+2024-11-04 12:55:52.804 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:05:55.031920
+2024-11-04 13:00:43.796 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:04:50.815376
+2024-11-04 15:43:06.434 | INFO | average_segment_speeds:segment_averages_detail:246 - speedmap_segments detailed segment averaging for ['2024-10-16'] execution time: 0:06:16.711909
+2024-11-04 15:48:26.324 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:05:19.708023
+2024-11-04 15:53:12.740 | INFO | average_segment_speeds:segment_averages:182 - speedmap_segments segment averaging for ['2024-10-16'] execution time: 0:04:46.258219
diff --git a/rt_segment_speeds/scripts/average_segment_speeds.py b/rt_segment_speeds/scripts/average_segment_speeds.py
index c7b0b6368..623576360 100644
--- a/rt_segment_speeds/scripts/average_segment_speeds.py
+++ b/rt_segment_speeds/scripts/average_segment_speeds.py
@@ -185,7 +185,70 @@ def segment_averages(
)
return
+
+def segment_averages_detail(
+ analysis_date_list: list,
+ segment_type: Literal[SEGMENT_TYPES],
+ group_cols: list,
+ export_file: str,
+ weighted_averages: bool = True
+):
+ """
+ Experimental function for calculating average speeds.
+ Start from single day segment-trip speeds and
+ aggregate by all times of day.
+ """
+ start = datetime.datetime.now()
+ assert len(analysis_date_list) == 1, 'detailed calculation only avail for single day'
+
+ df = concatenate_trip_segment_speeds(
+ analysis_date_list,
+ segment_type,
+ get_pandas = False
+ )
+
+ if weighted_averages:
+ avg_speeds = delayed(segment_calcs.calculate_avg_speeds)(
+ df,
+ group_cols + ["time_of_day"],
+ ).pipe(
+ gtfs_schedule_wrangling.merge_operator_identifiers,
+ analysis_date_list,
+ columns = CROSSWALK_COLS
+ )
+
+ # If a single day is put in, use that date for segment geometry
+ analysis_date = analysis_date_list[0]
+ time_span_str = analysis_date
+
+ avg_speeds_with_geom = delayed(merge_in_segment_geometry)(
+ avg_speeds,
+ analysis_date,
+ segment_type
+ )
+ avg_speeds_with_geom = compute(avg_speeds_with_geom)[0]
+ # is this the best spot to add scheduled frequency and route_short_name?
+ sched_trips_hr = gtfs_schedule_wrangling.get_sched_trips_hr(analysis_date)
+ sched_trips_hr = sched_trips_hr.rename(columns={'n_trips': 'n_trips_sch', 'trips_hr': 'trips_hr_sch'})
+ sched_trips_hr_cols = ['route_id', 'shape_id',
+ 'time_of_day', 'schedule_gtfs_dataset_key']
+ avg_speeds_with_geom = pd.merge(avg_speeds_with_geom, sched_trips_hr, on=sched_trips_hr_cols)
+ avg_speeds_with_geom = gtfs_schedule_wrangling.merge_route_identifiers(avg_speeds_with_geom, analysis_date)
+
+ utils.geoparquet_gcs_export(
+ avg_speeds_with_geom,
+ SEGMENT_GCS,
+ f"{export_file}_{time_span_str}"
+ )
+
+ end = datetime.datetime.now()
+ logger.info(
+ f"{segment_type} detailed segment averaging for {analysis_date_list} "
+ f"execution time: {end - start}"
+ )
+
+ return
if __name__ == "__main__":
diff --git a/rt_segment_speeds/scripts/average_speedmap_segment_speeds.py b/rt_segment_speeds/scripts/average_speedmap_segment_speeds.py
index c5643cb6e..cf82fb324 100644
--- a/rt_segment_speeds/scripts/average_speedmap_segment_speeds.py
+++ b/rt_segment_speeds/scripts/average_speedmap_segment_speeds.py
@@ -8,7 +8,7 @@
from loguru import logger
from update_vars import GTFS_DATA_DICT, SEGMENT_GCS
-from average_segment_speeds import segment_averages, OPERATOR_COLS
+from average_segment_speeds import segment_averages_detail, segment_averages, OPERATOR_COLS
if __name__ == "__main__":
@@ -29,10 +29,18 @@
STOP_PAIR_COLS = [*dict_inputs["stop_pair_cols"]]
SHAPE_SEG_FILE = dict_inputs["shape_stop_single_segment"]
+ SHAPE_SEG_DETAIL_FILE = dict_inputs["shape_stop_single_segment_detail"]
ROUTE_SEG_FILE = dict_inputs["route_dir_single_segment"]
for analysis_date in analysis_date_list:
+ segment_averages_detail(
+ [analysis_date],
+ segment_type,
+ group_cols = OPERATOR_COLS + SHAPE_STOP_COLS + ROUTE_DIR_COLS + STOP_PAIR_COLS,
+ export_file = SHAPE_SEG_DETAIL_FILE
+ )
+
segment_averages(
[analysis_date],
segment_type,
diff --git a/rt_segment_speeds/segment_speed_utils/gtfs_schedule_wrangling.py b/rt_segment_speeds/segment_speed_utils/gtfs_schedule_wrangling.py
index d73c378bd..b98470d7a 100644
--- a/rt_segment_speeds/segment_speed_utils/gtfs_schedule_wrangling.py
+++ b/rt_segment_speeds/segment_speed_utils/gtfs_schedule_wrangling.py
@@ -122,6 +122,18 @@ def add_weekday_weekend_column(df: pd.DataFrame, category_dict: dict = time_help
return df
+def count_trips_by_group(df: pd.DataFrame, group_cols: list):
+ """
+ Given a df with trip_instance_key and an arbitrary list of
+ group_cols, return trip counts by group.
+ """
+ assert "trip_instance_key" in df.columns
+ df = (df.groupby(group_cols)
+ .agg({"trip_instance_key": "count"})
+ .reset_index()
+ )
+ df = df.rename(columns = {"trip_instance_key": "n_trips"})
+ return df
def aggregate_time_of_day_to_peak_offpeak(
df: pd.DataFrame,
@@ -141,23 +153,13 @@ def aggregate_time_of_day_to_peak_offpeak(
df = add_peak_offpeak_column(df)
- all_day = (df.groupby(group_cols)
- .agg({"trip_instance_key": "count"})
- .reset_index()
- .assign(time_period = "all_day")
- )
-
- peak_offpeak = (df.groupby(group_cols + ["peak_offpeak"])
- .agg({"trip_instance_key": "count"})
- .reset_index()
- .rename(columns = {"peak_offpeak": "time_period"})
- )
+ all_day = count_trips_by_group(df, group_cols).assign(time_period = "all_day")
+ peak_offpeak = count_trips_by_group(df, group_cols + ["peak_offpeak"]).rename({"peak_offpeak":"time_period"})
df2 = pd.concat(
[all_day, peak_offpeak],
axis=0, ignore_index = True
- ).rename(columns = {"trip_instance_key": "n_trips"})
-
+ )
# Add service frequency (trips per hour)
# there are different number of hours in peak and offpeak periods
@@ -513,6 +515,52 @@ def merge_operator_identifiers(
return df
+def merge_route_identifiers(
+ df: pd.DataFrame,
+ analysis_date: str,
+) -> pd.DataFrame:
+ """
+ Merge in route_short_name given df with route_id,
+ schedule_gtfs_dataset_key.
+ Can't group by route_short_name or route_long_name in pipeline since either can
+ be nan per GTFS spec; grouping will result in those being dropped which is
+ undesireable.
+ """
+ keep_trip_cols = ['gtfs_dataset_key', 'route_id', 'route_short_name']
+ trips = helpers.import_scheduled_trips(analysis_date, columns=keep_trip_cols)
+ trips = trips.rename(
+ columns={'gtfs_dataset_key': 'schedule_gtfs_dataset_key'})
+ routes = trips.drop_duplicates()
+ df = pd.merge(
+ df,
+ routes,
+ on = ["schedule_gtfs_dataset_key", "route_id"],
+ how = "inner"
+ )
+
+ return df
+
+def get_sched_trips_hr(analysis_date: str) -> pd.DataFrame:
+ """
+ For speedmaps (and other analyses), it's helpful to have scheduled
+ frequency available. Currently only supports detailed time of day.
+ """
+ keep_trip_cols = ['trip_instance_key', 'gtfs_dataset_key', 'route_id',
+ 'shape_id']
+ trips = helpers.import_scheduled_trips(analysis_date, columns=keep_trip_cols)
+ trips = trips.rename(
+ columns={'gtfs_dataset_key': 'schedule_gtfs_dataset_key'})
+ time_buckets = get_trip_time_buckets(analysis_date)
+ trips = pd.merge(trips, time_buckets, on='trip_instance_key', how='inner')
+ schedule_trip_counts = count_trips_by_group(trips,
+ ['route_id', 'shape_id',
+ 'time_of_day', 'schedule_gtfs_dataset_key']
+ )
+ durations = rt_utils.time_of_day_durations()
+ schedule_trip_counts['trips_hr'] = schedule_trip_counts.apply(
+ lambda x: x.n_trips / durations[x.time_of_day], axis=1)
+ return schedule_trip_counts
+
def fill_missing_stop_sequence1(df: pd.DataFrame) -> pd.DataFrame:
"""