r5r包等时线未纳入公共交通耗时问题排查求助
已获取指定来源的GTFS.zip文件及bbbike提取服务生成的OSM地图文件,网络构建成功,isochrone函数参数(如departure_datetime)设置后,等时线结果仅纳入步行距离,未包含公共交通出行。代码如下:
library(rJava) options(java.parameters = '-Xmx20G') library(r5r) library(sf) library(tmap) tmap_mode("view") # create network data_path <- "path to where GTSF.zip and osm are" r5r_core <- build_network(data_path) # create the origin ff <- data.frame(id="Frauenfeld", lon=c(8.89613304), lat=c(47.55590075)) # calculate isochrones isochrones <- r5r::isochrone( r5r_network = r5r_core, origins = ff, departure_datetime = as.POSIXct("04-11-2025 09:00:00", format = "%d-%m-%Y %H:%M:%S"),# mode = c('walk', 'transit'), mode_egress = "walk", cutoffs = c(0,30,60), max_trip_duration = 120, max_rides=5, time_window=30, ) # show result in tmap tm_shape(shp=isochrones) + tm_polygons(fill="isochrone", fill_alpha=0.5)+tm_basemap(server="SwissFederalGeoportal.NationalMapGrey")
修正GTFS文件路径拼写错误
代码中data_path注释里的GTSF.zip是拼写错误,应为GTFS.zip,确认文件路径下的GTFS文件名正确,否则R5无法加载公共交通数据。验证GTFS文件的运营日期匹配
检查GTFS文件的calendar.txt或calendar_dates.txt,确认2025年11月4日(你的departure_datetime日期)有公交运营。若该日期不在运营日历内,R5会自动忽略公共交通线路。可使用gtfsio::import_gtfs()读取文件,核对日期覆盖范围。明确设置
departure_datetime的时区
当前代码未指定时区,as.POSIXct会使用系统默认时区,可能导致时间解析偏差。瑞士时区为"Europe/Zurich",需明确添加时区参数:departure_datetime <- as.POSIXct("04-11-2025 09:00:00", format = "%d-%m-%Y %H:%M:%S", tz = "Europe/Zurich")检查网络构建的GTFS加载日志
运行build_network()时,查看控制台输出,确认有公交线路、班次的加载记录。如果没有相关日志,说明GTFS文件未被正确识别,需检查文件完整性(比如是否缺少trips.txt、stop_times.txt等核心文件)。验证起点与公交站点的步行可达性
使用find_nearest_stops()函数查询起点附近的公交站点,确认存在步行可达的站点:nearest_stops <- find_nearest_stops(r5r_core, ff, max_walk_dist = 1000) print(nearest_stops)若返回空结果,说明起点无法连接到任何公交站点,自然无法生成含公共交通的等时线。
调整计算参数逻辑
尝试缩小max_trip_duration至60分钟,同时保持time_window=30,测试是否能生成包含公交的等时线。过大的max_trip_duration可能干扰路径搜索逻辑。
内容的提问来源于stack exchange,提问作者Beat Louis

