对我来说,您似乎不需要直接处理 Protobuf 文件,因为您的数据库中已经有了数据。所以其他人已经负责阅读这些信息。
GTFS-realtime 的数据结构是Protobuf 协议,你需要确切地知道它是如何工作的。这是读取 Protobuf 数据的典型过程的概述。这些说明不适用于 PHP,但它可以让您大致了解该过程。
- 首先你需要安装 Protobuf 编译器。如果您使用的是 Mac OS X,请阅读此.
- 使用
protoc
命令为您的 GTFS 实时数据生成协议缓冲区 API。命令行仅支持 C++、Java 和 Python。
- 您可以使用此 API 来读取您的数据。
据我了解,您链接到的存储库仅适用于 GTFS 实时数据,因此已经创建了协议缓冲区 API。您唯一需要做的就是使用页面中提供的代码片段:
require_once 'vendor/autoload.php';
use transit_realtime\FeedMessage;
$data = file_get_contents("URL OF YOUR GTFS-REALTIME SOURCE GOES HERE");
$feed = new FeedMessage();
$feed->parse($data);
foreach ($feed->getEntityList() as $entity) {
if ($entity->hasTripUpdate()) {
error_log("trip: " . $entity->getId());
}
}
结论:
GTFS-realtime 是 Protobuf 协议中处理传输信息的一种特殊数据。您可以创建一个 Protobuf API 来从 Protobuf 文件中读取数据。但是,如果您的数据库中已经有了它们,那么就没有什么可做的了。