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。也许问题在数据本身,我的查询有什么问题吗?
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();发布于 2017-10-30 09:19:25
问题可能是
.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“,或者调整上面的子句。
https://stackoverflow.com/questions/46992742
复制相似问题