首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将静态GTFS与GTFS-RT trip更新匹配

如何将静态GTFS与GTFS-RT trip更新匹配
EN

Stack Overflow用户
提问于 2017-10-28 17:52:39
回答 1查看 383关注 0票数 0

Im消耗两个不同的GTFS和GTFS提要,将这些数据存储到SQL数据库中。

如何将静态GTFS数据与GTFS更新匹配/链接?

我试图显示特定stop_id的停止时间。我能够从静态GTFS获得停止时间,但是我想用GTFS更新停止时间更新来“修补”这些时间。

看起来GTFS是非常松散的指定,只有很少的字段是强制的.我消费的GTFS提要之一在其trip更新中包含了trip_id,而另一个提要没有trip_id。

更新4.11.2017

使用下面的查询,我设法将GTFS更新与静态GTFS相匹配。由于某些原因无法获得所有trip更新的trip_id。也许问题在数据本身,我的查询有什么问题吗?

代码语言:javascript
复制
const trip = await knex('trips')
  .select('trips.trip_id')
  .innerJoin('routes', 'routes.route_id', 'trips.route_id')
  .innerJoin('stop_times', 'stop_times.trip_id', 'trips.trip_id')
  .whereIn('trips.service_id', *day active service ids*)
  .andwhere('routes.route_id', tripUpdate.route_id)
  .andWhere('stop_times.departure_time', tripUpdate.trip_start_time)
  .andWhere('trips.direction_id', tripUpdate.direction_id)
  .orderBy('stop_times.stop_sequence')
  .first();
EN

回答 1

Stack Overflow用户

发布于 2017-10-30 09:19:25

问题可能是

代码语言:javascript
复制
.andWhere('stop_times.departure_time', tripUpdate.trip_start_time)

子句在select语句中。

gtfs规范指出,时间必须是HH:MM:SS格式的8位数字(如果时间从0开始,也接受H:MM:SS),如果调度时间为5:37:00,而start_time中的TripUpdates为05:37:00,则您的语句将不会返回旅行id。如果这是问题所在,那么在将它们从stop_times.txt添加到数据库中时,您需要在这样的时间中加上"0“,或者调整上面的子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46992742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档