【发布时间】:2014-12-17 17:17:33
【问题描述】:
我正在尝试查看New York City Subway Realtime GTFS Feeds。经过大量阅读,我了解了Protocol Buffers并安装了protoc编译器。
New York City Transit 的文件 nyct-subway.proto.txt 第一行显示 NYCT 地铁对 GTFS 实时协议的扩展。这是否应该与 gtfs-realtime-proto 结合使用?我分别编译了两个协议缓冲区并得到了警告:
[libprotobuf WARNING google/protobuf/compiler/parser.cc:471]
No syntax specified for the proto file.
Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)
在 Python 中写了一行来调用 protoc 创建的任何库:
import gtfs_realtime_pb2, nyct_subway_pb2
尽管我之前进行了安装,但 Python 对 import google.protobuf 一无所知,所以它知道 sudo pip install protobuf。
此时我仍然没有读取任何数据——我可以得到一个不可读的带有http://datamine.mta.info/mta_esi.php?key=<key>&feed_id=1 的 gtfs 文件。
如何结合它从 GTFS 文件中读取数据?
【问题讨论】:
-
你找到解决办法了吗?
-
nyct-subway.proto 文件依赖于 protoc 编译时的 gtfs-realtime.proto 文件。因此,一旦 protoc 从这些 .proto 文件生成 Python 代码,您应该能够只导入生成的 Python 代码并在代码中使用名为 FeedMessage 或 transit_realtime.FeedMessage 的生成类。当您调用 FeedMessage.FromString(s) 时,此代码会将二进制提要响应解码为一个实例,其中 s 是原始提要响应。
标签: python protocol-buffers gtfs