【发布时间】:2015-03-14 16:03:20
【问题描述】:
我有使用静态 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的protocol buffer,然后用protocol buffer编译gifts-realtime.proto,生成可以读取API源码的代码。
【讨论】:
安装 Nugget 包 Google.Protobuf
PM> 安装包 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 实时模型以将数据持久保存到数据库中。
【讨论】: