我有使用静态 GTFS 文件的经验,这些文件定义了特定公共交通网络的运营模型。然而,我所在的城市刚刚发布了公交位置的实时提要和网络的其他状态更新。
我的问题是,我应该如何实时查看这个提要并将提要记录到数据库中。实时提要链接如下:https ://gtfsrt.api.translink.com.au/
我有使用静态 GTFS 文件的经验,这些文件定义了特定公共交通网络的运营模型。然而,我所在的城市刚刚发布了公交位置的实时提要和网络的其他状态更新。
我的问题是,我应该如何实时查看这个提要并将提要记录到数据库中。实时提要链接如下:https ://gtfsrt.api.translink.com.au/
GTFS-realtime 规范现在包括用于以多种语言解析 GTFS-realtime 数据的代码示例:
https://developers.google.com/transit/gtfs-realtime/code-samples
在以您喜欢的语言解析 GTFS 实时数据时,这是一个很好的起点。
我需要安装google的协议缓冲区,然后用协议缓冲区编译gifts-realtime.proto以生成可以读取API源的代码。
安装 Nugget 包 Google.Protobuf
PM> Install-Package Google.Protobuf -Version 3.4.1
private FeedMessage _feedMessage;
using (MemoryStream protobufMemoryStream = new MemoryStream())
using (Stream protobufStream = await _httpClient.GetStreamAsync("", "http://gtfs.ovapi.nl/new/vehiclePositions.pb"))
{
protobufStream.CopyTo(protobufMemoryStream);
protobufMemoryStream.Position = 0;
_feedMessage = Serializer.Deserialize<FeedMessage>(protobufMemoryStream);
}
在_feedMessage 中,您已反序列化 GTFS 实时模型以将数据持久保存到数据库中。