gpt4 book ai didi

python - GTFS实时数据: How to Convert Feed Message Print to Terminal to GTFS

转载 作者:行者123 更新时间:2023-11-30 22:39:01 25 4
gpt4 key购买 nike

我已按照此链接中的示例进行操作

Parsing NYC Transit/MTA historical GTFS data (not realtime)

它获取历史 GTFS 实时数据源,然后使用 python 语言绑定(bind)将 gtfs_rt.FeedMessage 输出到终端。

将其打印到终端后,我完全不知道下一步该做什么。我一直在尝试找到一种方法来读取终端输出,然后希望将提要消息转换为 JSON 格式?理想情况下,我希望它与静态数据的 GTFS 数据格式相当,以便我可以计算延迟时间等。

谢谢!

最佳答案

具体答案取决于您想对 Feed 执行什么操作。但一般来说,您有两种选择。

第一个选项是直接解析 FeedMessage 对象。通用Python protobuf引用here对你有用,GTFS-rt的具体协议(protocol)是here 。例如,解析消息后,您可以获取 Feed 中所有行程的车辆 ID 和行程 ID,如下所示:

for feed_entity in msg.entity:
if feed_entity.hasField('trip_update'):
tu = feed_entity.trip_update
vid = tu.vehicle.vehicle.id
tid = tu.trip.trip_id
print "vehicle {} is covering trip {}".format(vid, tid)

但这完全取决于您想从 feed 中获得什么。如果您对延迟感兴趣,您可能会解析 StopTimeUpdate 对象(但请注意,如果车辆已经到达/离开某个站点,这些对象可以包含过去/当前的实际延迟,或者包含稍后停靠点的 future 预计延迟)路线)。

如果您更喜欢使用 dict 而不是直接使用 protobuf 消息,我已经成功完成了 protobuf-to-dict 项目(请参阅 here ),该项目可以通过 pip 安装。我通常发现在 Python 中使用 dict 比使用 protobuf 对象更自然。

关于python - GTFS实时数据: How to Convert Feed Message Print to Terminal to GTFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com