Protocol Buffers入門から各地のGTFS Realtimeを覗いてみよう3. 事業者 配信元 ベンダー
Vehicle
Position
Trip
Update
Alert ライセンス
宇野バス 配信元 その筋屋 ○ ○ ○ CC BY 4.0
両備バス・
岡電バス 配信元 Bus-Vison(リオス) ○ ○ CC BY 4.0
和歌山バス 配信元 Bus-Vison(リオス) ○ ○ CC BY 4.0
佐賀市交通局 配信元 ○ ○ ○ CC BY 4.0
中津川市コミュ
ニティバス
配信元 SkyBrain(ヴァル研究所) ○ ○ CC BY 4.0
オープンデータとして提供されている
GTFSリアルタイムデータ
6. • データ構造を定義する表現
– 例:polyline.proto
• 表現されること
– データの型
– データの必要性
• required, optional, repeated(配列)
• プログラミング言語毎のprotocでコンパ
イルすることで、言語毎にシリアライズ、
デシリアライズするためのプログラムが
得られる
プロトコル定義ファイル
(Proto Definition file (.proto)
polyline.proto
9. • 国交省資料でも紹介
• ダウンロードして解凍、インス
トーラを実行
• Windows/Macで動作確認済み
• Macの場合は以下に起動スクリプ
トがインストールされる
– /Applications/RecordEdit/ProtoBuf/bi
n/runEditor.sh
ProtoBufEditor:
Protocol Buffersをとりあえず眺めるツール
https://sourceforge.net/projects/protobufeditor/
14. var GtfsRealtimeBindings = require('gtfs-realtime-bindings');
var request = require('request');
var requestSettings = {
method: 'GET’,
url: 'http://www3.unobus.co.jp/GTFS/GTFS_RT-VP.bin’,
encoding: null
};
request(requestSettings, function (error, response, body) {
if (!error && response.statusCode == 200) {
var feed = GtfsRealtimeBindings.FeedMessage.decode(body);
console.log(JSON.stringify(feed));
}
});
コピペ用テキスト
20. • TripDescriptor
– 便を指定している。trip_id があればよい。無い場合には、
trip_id が一意に定まる情報を格納する
• VehicleDescriptor
– 車両を特定する情報。ナンバー番号も入る
• Position
– 位置情報など、GPSから得られる情報
• current_stop_sequene
– 同じバス停を複数回停まる便もあるので、何番目のバス停かの
情報が大事
• current_status
• Timestamp
– 全体のタイムスタンプと異なっていい
VehiclePositionの構造(宇野バス)
21. • 項目が入力されているか否か
– trip_id があれば他は不要ではある
• VehicleDescriptorのラベル
– Webアプリで車両を指定するIDと同
一か?
– 「サンタバスナビ」作れるよね
• stop_id
– 不要だが、SQL叩いてさがすのが面
倒なのでうれしいかも
岡電と宇野バスの比較
22. • TripDescriptorは同一
• VehicleDescriptorは何故か含まれず
• StopTimeUpdate
– 直前の実績値のみを格納
• それ以上の過去や未来予測は含まず
• StopTimeEvent
– arrivalはなし。departureのみ
• departureのStopTimeEvent
– 300秒の遅れ。秒単位だが、60秒単位に丸めている可能性あり
• delay
– trip 単位でのdelayは設定していない
TripUpdate(宇野バス)