JavaScript GTFS-realtime 言語バインディング¶
GTFS-realtime プロトコル バッファ仕様から生成された JavaScript クラスとそれに関連する型を提供します。これらのクラスを使用すると、バイナリ プロトコル バッファ GTFS リアルタイム データ フィードを JavaScript オブジェクトに解析できます。
これらのバインディングは Node.js 環境で使用するように設計されていますが、少し努力すれば、他の JavaScript 環境でも使用できる可能性があります。
JavaScript プロトコル バッファのサポートには ProtoBuf.js ライブラリを使用します。
依存関係の追加¶
独自のプロジェクトでgtfs-realtime-bindings
クラスを使用するには、まず Node.js npm パッケージ をインストールする必要があります。
npm install gtfs-realtime-bindings
サンプル コード¶
次の Node.js コード スニペットは、GTFS リアルタイム データ フィードのダウンロードを示しています。特定の URL からデータ フィードを取得し、それをFeedMessage (GTFS リアルタイム スキーマのルート タイプ) として解析し、結果を反復処理します。
この例を機能させるには、まず NPM でnode-fetch
をインストールする必要があります。
注: この例は ES モジュール (import
/export
構文) を使用しており、CommonJS (require
構文) とは互換性がありません。import
をrequire
に変換し、 node-fetch@2
で` CommonJS を使用できます。ES モジュールの詳細については、こちら を参照してください。_
``t
import GtfsRealtimeBindings from "gtfs-realtime-bindings";
import fetch from "node-fetch";
(async () => {
try {
const response = await fetch("${response.url}: ${response.status} ${response.statusText}
);
error.response = response;
throw error;
process.exit(1);
}
const buffer = await response.arrayBuffer();
const feed = GtfsRealtimeBindings.transit_realtime. FeedMessage.decode(
new Uint8Array(buffer)
);
feed.entity.forEach((entity) => {
if (entity.tripUpdate) {
console.log(entity.tripUpdate);
}
});
}
catch (error) {
console.log(error);
process.exit(1);
}
})();
```
gtfs-realtime.proto から生成される JavaScript クラスの命名規則の詳細については、Protocol Buffer のシリアル化を処理するために使用する ProtoBuf.js プロジェクト をご覧ください。