墨西哥城GTFS文件在R库计算行程时间失败的问题排查
我从TransitLand下载了墨西哥城的GTFS文件,希望用它计算行程时间,但该文件无法在R语言的gtfsrouter和tidytransit库中正常工作,无法获取两地、两站点间的行程时间。
使用gtfsrouter时的报错情况
library(gtfsrouter) gtfs <- extract_gtfs ("MexicoCity_TransitLand.zip") # 文件能正常加载 gtfs <- gtfs_timetable (gtfs, day = "Wed") gtfs_route (gtfs, from = "Las Torres", to = "Plaza Ermita", start_time = 120)
报错信息:Error in rcpp_csa(gtfs$timetable, gtfs$transfers, nrow(gtfs$stop_ids), : Index out of bounds: [index='from_stop_id'].
尝试更换不同地点、日期、时间均无效。
另一段尝试代码:
from <- "Las Torres" start_times <- 12 * 3600 + c (0, 60) * 60 # 8:00-9:00 res <- gtfs_traveltimes (gtfs, from, start_times)
报错:Error: gtfs must have a transfers table; please use 'gtfs_transfer_table()' to construct one
添加transfers表后重新尝试:
gtfs_tt <- gtfs gtfs_tt$transfers <- gtfs_transfer_table(gtfs_tt) res <- gtfs_traveltimes (gtfs_tt, from, start_times)
仍报错:Error in gtfs_traveltimes(gtfs_tt, from, start_times) : There are no scheduled services after that time.
使用tidytransit时的报错情况
library(tidytransit) gtfs <- read_gtfs("MexicoCity_TransitLand.zip") gtfs <- cluster_stops(gtfs, group_col = "stop_name", cluster_colname = "stop_name") stop_times <- filter_stop_times(gtfs, "2021-05-01") tts <- travel_times(stop_times, "Las Torres", return_coords = TRUE)
报错:Error in travel_times(stop_times, "Las Torres", return_coords = TRUE) : Stops and transfers not found in filtered_stop_times attributes. Use filter_stop_times() to prepare data or use raptor() for lower level access.
疑似GTFS文件存在的问题
查看gtfs$stop_times发现,所有行程的起始时间均为"00:00:00",仅存储了首站到同行程其他站点的耗时,这与标准GTFS中存储到站时间的格式不符。
疑问
请问是我的操作有误,还是GTFS文件存在问题?是否有解决办法?
内容的提问来源于stack exchange,提问作者Orlando Sabogal

