VMT的GTFS服务时间理解疑问及数据矛盾技术咨询
解答GTFS服务可用性的理解误区
嘿,我来帮你理清这个GTFS规则的困惑!你遇到的问题其实是对GTFS中calendar.txt和calendar_dates.txt的协作规则理解有偏差,不是数据错误哦,关键点拆解如下:
1. 先明确calendar.txt的字段含义
calendar.txt里的前7个数字分别对应周一到周日的默认运行状态:
1:该工作日在start_date到end_date区间内默认运行0:该工作日在区间内默认不运行
你提到的service_id=45的条目:
45,0,0,0,0,0,0,0,20191101,20200229
意思是:在2019-11-01至2020-02-29的整个区间里,所有星期几都默认不运行,而不是整个区间都不可用。
2. calendar_dates.txt的作用是覆盖默认规则
calendar_dates.txt是用来修正calendar.txt的默认规则的,其中exception_type的含义是:
1:添加运行——强制让原本默认不运行的日期变为可用状态2:取消运行——强制让原本默认运行的日期变为不可用状态
你看到的calendar_dates.txt中,service_id=45的多条记录都是exception_type=1,日期覆盖20191101至20191220,这就意味着:在这些日期里,直接覆盖了calendar.txt的默认不运行规则,强制让该服务生效。
3. 为什么2019-11-14的trip可用?
因为2019-11-14属于calendar_dates.txt中exception_type=1的日期范围内,所以service_id=45在当天是生效的,对应的trip ID=9782458自然就显示可用了。
总结你遗漏的关键点
- 误把
calendar.txt中全0的默认状态理解为“整个区间不可用”,实际是“区间内所有工作日默认不运行” - 没意识到
exception_type=1是添加运行,可以直接覆盖默认不运行的规则
内容的提问来源于stack exchange,提问作者Noran
相关产品推荐
相关产品推荐

