deck.glで公共交通データ(GTFS) データを可視化する

この記事はdeck.gl Advent Calendar 2021 参加記事です。

概要

GTFS(General Transit Feed Specification)は、公共交通に関するデータを扱うための世界標準データフォーマットです。多くの地域で交通データを公開する際のフォーマットとして採用されており、日本でも徐々に普及が進んでいます。

そこで、この記事ではdeck.glを使って、GTFSに含まれる経路情報と停留所情報を地図に表示する方法を解説します。

サンプルコード

あおい交通 オープンデータ」よりダウンロードさせていただいたaoikotsu_GTFS_20211031.zipファイルから、経路データと停留所データを地図に掲載しています。

経路データはshape_idごとにグルーピングしランダムに色を塗っています。

背景地図は表示すると経路が見えにくくなるので切り替え式にしました。

解説

GTFSデータは、複数のcsvデータをzipに圧縮したものとして公開されます。

参考:静的バス情報フォーマット(GTFS-JP)の概要

そこで、loaders.glを用いてzipファイルを読み込み、フロントエンドで解凍した上で各csvデータをパースしてJavaScrpitオブジェクトへと変換しています。

また、stops.txt(停留所データ)とshapes.txt(経路データ)については、turf.jsを用いてGeoJSONへと変換しています。

経路データをGeoJSONに変換する過程で、trips.txt(便情報)を経路データの属性データとして付加しています。

一通りの変換が終わったら、deck.glのGeojsonLayerを使って可視化します。

以下は、 GTFSファイルの読み込みと、一連のコンバート処理のコードです。