You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GTFS的stop_times.txt准确获取公交站点当日有效停靠时刻

解决GTFS查询站点下一班公交的日期匹配问题

核心关联逻辑

stop_times.txt本身确实没有日期/星期字段,GTFS的运营周期是通过**服务(service)**体系管理的,必须通过表关联过滤有效班次:

  • 用stop_times.txt中的trip_id关联trips.txt的trip_id,获取对应service_id
  • 用service_id关联calendar.txt或calendar_dates.txt,筛选当前日期有效的服务

具体查询步骤

1. 筛选当前日期有效的service_id

  • 优先用calendar_dates.txt处理例外日期(如节假日加开/停运):exception_type=1表示当日运营,exception_type=2表示当日停运
  • 常规日期用calendar.txt:检查当前日期在start_date和end_date范围内,且对应星期字段(monday至sunday)值为1

2. 映射获取有效trip_id

通过trips.txt,将第一步得到的有效service_id关联到对应的trip_id集合

3. 提取站点的下一班公交

在stop_times.txt中筛选:

  • 目标站点的stop_id
  • 属于第二步得到的有效trip_id
  • departure_time(或arrival_time)晚于当前时刻的条目,按时间升序排序后取第一条

时间格式处理注意

GTFS的时间可能超出24小时(如次日凌晨1点记为25:00:00),查询时需将当前日期+时间转换为统一时间戳,避免跨天判断错误。

解决重复/近时间无效条目问题

你看到的时间极近的条目,实际是对应不同运营周期的班次(如工作日/周末/节假日班次),通过上述service_id过滤后,只会保留当前日期有效的班次,自动剔除无效条目。

内容的提问来源于stack exchange,提问作者Ran Shorowitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:12:18