我正在消耗幾個不同的GTFS & GTFS-RT訂閱源,即時將這些數據存儲到SQL數據庫。如何使靜態GTFS與GTFS-RT行程更新匹配
我應該如何將靜態GTFS數據與GTFS-RT行程更新進行匹配/鏈接?
我試圖顯示特定stop_id的停止時間。我能夠從靜態GTFS獲得停止時間,但我想用GTFS-RT行程更新停止時間更新「補丁」這些時間。
它看起來像GTFS-RT是非常鬆散的指定,只有幾個領域是強制性的。其中一個即時消費的GTFS-RT訂閱源在trip更新中有trip_id,另一個feed沒有trip_id。
更新2017年4月11日
我設法匹配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闡明瞭這一點,但這仍然是允許的。爲什麼?有一個用例可以爲短期中斷提供服務信息。這被濫用的一些飼料,使其正常。 您很可能必須編寫一些可以在Feed和GTFS之間進行匹配的邏輯。但很難說如果不知道你在談論什麼飼料,這是否可能。 –
您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)產品? Postgres的?甲骨文? 「_SQL_」只是一種查詢語言,而不是特定數據庫產品的名稱。 –
即時通訊使用mariadb。 – devha