library(tidyverse) library(tidyr) library(stringr) library(xml2) # compile a big file of baseline, and doubling capacity, with and without one lane less, short termm and long term baseline <- read_csv("output/experiments-pieter/set2/baseline/analysis/linkCounts.csv") %>% tibble() %>% rename(longterm = volume) %>% left_join( read_csv( "output/experiments-pieter/set2/baseline-nomc/analysis/linkCounts.csv" ) %>% tibble() %>% rename(shortterm = volume) ) baseline_cap <- read_xml( "output/experiments-pieter/set2/baseline/duesseldorf-25pct-dc_114-no-lanes.output_network.xml.gz" ) baseline_cap <- tibble( id = baseline_cap %>% xml_find_all("//link") %>% xml_attr("id") , cap = baseline_cap %>% xml_find_all("//link") %>% xml_attr("capacity") ) doubled <- read_csv("output/experiments-pieter/set2/dbl-no-redux/analysis/linkCounts.csv") %>% tibble() %>% rename(longterm = volume) %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-no-redux-nomc/analysis/linkCounts.csv" ) %>% tibble() %>% rename(shortterm = volume) ) doubled_cap <- read_xml( "output/experiments-pieter/set2/dbl-no-redux/duesseldorf-25pct-dc_114-no-lanes.output_network.xml.gz" ) doubled_cap <- tibble( id = doubled_cap %>% xml_find_all("//link") %>% xml_attr("id") , cap = doubled_cap %>% xml_find_all("//link") %>% xml_attr("capacity") ) doubled_reduced <- read_csv("output/experiments-pieter/set2/dbl-redux/analysis/linkCounts.csv") %>% tibble() %>% rename(longterm = volume) %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-redux-nomc/analysis/linkCounts.csv" ) %>% tibble() %>% rename(shortterm = volume) ) reduced_cap <- read_xml( "output/experiments-pieter/set2/dbl-redux/duesseldorf-25pct-dc_114-no-lanes.output_network.xml.gz" ) reduced_cap <- tibble( id = reduced_cap %>% xml_find_all("//link") %>% xml_attr("id") , cap = reduced_cap %>% xml_find_all("//link") %>% xml_attr("capacity") ) write.csv( baseline %>% left_join(baseline_cap), "projects/komodnext/website/corridor/baseline_volume.csv", row.names = F, quote = F ) write.csv( doubled %>% left_join(doubled_cap), "projects/komodnext/website/corridor/doubled_volume.csv", row.names = F, quote = F ) write.csv( doubled_reduced %>% left_join(reduced_cap), "projects/komodnext/website/corridor/doubled_reduced_volume.csv", row.names = F, quote = F ) corridor <- read.csv("scenarios/input/northeast_corridor_grafenberger_allee.csv") %>% select(id = ID) longterm.traveltimes <- read_csv("output/experiments-pieter/set2/baseline/analysis/linkTimesVolumes.csv") %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(baseline = mean(tt)) %>% ungroup() %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-no-redux/analysis/linkTimesVolumes.csv" ) %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(doubled = mean(tt)) %>% ungroup() ) %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-redux/analysis/linkTimesVolumes.csv" ) %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(reduced = mean(tt)) %>% ungroup() ) write.csv( longterm.traveltimes %>% group_by(hour) %>% summarise(across(baseline:reduced, ~ sum(.x, na.rm = T) / 60)) %>% filter(complete.cases(.)), file = "projects/komodnext/website/corridor/longterm_tt.csv", row.names = F, quote = F ) shortterm.traveltimes <- read_csv("output/experiments-pieter/set2/baseline-nomc/analysis/linkTimesVolumes.csv") %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(baseline = mean(tt)) %>% ungroup() %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-no-redux-nomc/analysis/linkTimesVolumes.csv" ) %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(doubled = mean(tt)) %>% ungroup() ) %>% left_join( read_csv( "output/experiments-pieter/set2/dbl-redux-nomc/analysis/linkTimesVolumes.csv" ) %>% tibble() %>% select(id = linkId, time, tt = avgTravelTime) %>% right_join(corridor) %>% mutate(hour = round(time / 3600)) %>% group_by(id, hour) %>% summarise(reduced = mean(tt)) %>% ungroup() ) write.csv( shortterm.traveltimes %>% group_by(hour) %>% summarise(across(baseline:reduced, ~ sum(.x, na.rm = T) / 60)) %>% filter(complete.cases(.)), file = "projects/komodnext/website/corridor/shortterm_tt.csv", row.names = F, quote = F ) # switchers --------- baseline_trips <- read_delim( "output/experiments-pieter/set2/baseline/duesseldorf-25pct-dc_114-no-lanes.output_trips.csv.gz", delim = ";" ) baseline_corridorpax <- read_csv("output/experiments-pieter/set2/baseline/analysis/corridorpaxplans.csv") %>% transmute(person = as.character(personId), trip_id, time) doubled_trips <- read_delim( "output/experiments-pieter/set2/dbl-no-redux/duesseldorf-25pct-dc_114-no-lanes.output_trips.csv.gz", delim = ";" ) doubled_corridorpax <- read_csv("output/experiments-pieter/set2/dbl-no-redux/analysis/corridorpaxplans.csv") %>% transmute(person = as.character(personId), trip_id, time) doubled_reduced_trips <- read_delim( "output/experiments-pieter/set2/dbl-redux/duesseldorf-25pct-dc_114-no-lanes.output_trips.csv.gz", delim = ";" ) doubled_reduced_corridorpax <- read_csv("output/experiments-pieter/set2/dbl-redux/analysis/corridorpaxplans.csv") %>% transmute(person = as.character(personId), trip_id, time) doubled_join <- baseline_trips %>% select(trip_id, main_mode_x = main_mode) %>% left_join(doubled_trips %>% select(trip_id, main_mode_y = main_mode)) %>% left_join(baseline_corridorpax %>% transmute(trip_id, incorridorbaseline = T)) %>% left_join(doubled_corridorpax %>% transmute(trip_id, incorridordoubled = T)) %>% filter(!(is.na(incorridorbaseline) & is.na(incorridordoubled))) %>% mutate( main_mode_x = ifelse( main_mode_x == "car" & is.na(incorridorbaseline), "avoided_corridor", main_mode_x ), main_mode_x = ifelse(main_mode_x == "car", "used_corridor", main_mode_x), main_mode_y = ifelse( main_mode_y == "car" & is.na(incorridordoubled), "avoided_corridor", main_mode_y ), main_mode_y = ifelse(main_mode_y == "car", "used_corridor", main_mode_y) ) %>% group_by(main_mode_x, main_mode_y) %>% summarise(num = n()) doubled_join %>% write.csv(file = "projects/komodnext/website/corridor/longterm_doubled_sankey.csv", row.names = F, quote = F) reduced_join <- baseline_trips %>% select(trip_id, main_mode_x = main_mode) %>% left_join(doubled_reduced_trips %>% select(trip_id, main_mode_y = main_mode)) %>% left_join(baseline_corridorpax %>% transmute(trip_id, incorridorbaseline = T)) %>% left_join(doubled_reduced_corridorpax %>% transmute(trip_id, incorridordoubled = T)) %>% filter(!(is.na(incorridorbaseline) & is.na(incorridordoubled))) %>% mutate( main_mode_x = ifelse( main_mode_x == "car" & is.na(incorridorbaseline), "avoided_corridor", main_mode_x ), main_mode_x = ifelse(main_mode_x == "car", "used_corridor", main_mode_x), main_mode_y = ifelse( main_mode_y == "car" & is.na(incorridordoubled), "avoided_corridor", main_mode_y ), main_mode_y = ifelse(main_mode_y == "car", "used_corridor", main_mode_y) ) %>% group_by(main_mode_x, main_mode_y) %>% summarise(num = n()) reduced_join %>% write.csv(file = "projects/komodnext/website/corridor/longterm_reduced_sankey.csv", row.names = F, quote = F)