【发布时间】:2017-10-28 17:52:39
【问题描述】:
我正在使用几个不同的 GTFS 和 GTFS-RT 提要,并将这些数据存储到 SQL 数据库中。
我应该如何将静态 GTFS 数据与 GTFS-RT 行程更新匹配/链接?
我正在尝试显示特定 stop_id 的停止时间。我能够从静态 GTFS 获取停止时间,但我想用 GTFS-RT 行程更新停止时间更新“修补”这些时间。
看起来 GTFS-RT 的规定非常松散,只有少数字段是强制性的。我正在使用的 GTFS-RT 提要之一在其行程更新中有trip_id,另一个提要没有trip_id。
更新 4.11.2017
我设法使用下面的查询将 GTFS-RT 行程更新与静态 GTFS 匹配。出于某种原因,无法获取所有行程更新的 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();
【问题讨论】:
-
是的,这是一个定义松散的标准。最近的 GTFS-rt 2.0 Spec 澄清了这一点,但这仍然是允许的。为什么?有一个用例可以为短期中断提供服务信息。这被许多使其正常的提要滥用。您可能必须编写一些可以在提要和 GTFS 之间进行匹配的逻辑。但是,如果不知道您在谈论什么提要,就很难说这是否可能。
-
您使用的是哪个DBMS 产品?后格雷斯?甲骨文? “SQL”只是一种查询语言,并不是特定数据库产品的名称。
-
我正在使用 mariadb。