LoginSignup
1
1

More than 1 year has passed since last update.

公共交通オープデータセンターのGTFS-RTを触ってみよう!

Posted at

公共交通オープデータセンターとは

公共交通オープデータ協議会に参画している事業者が持つデータを集約し一般に公開しているサービスです。
鉄道をはじめ、バス、飛行機、船舶などの静的・動的データを利用することができます。

東京都交通局のAPIを使ってみよう

事前準備物

  • 公共交通オープデータセンターの開発者登録(登録はこちら
    ※ユーザー登録の完了まで最長2営業日ほどかかりますが、1日後くらいには承認のメールが届き使えるようになります。
  • Docker環境、docker-compose環境

アクセストークンの取得方法

① 開発者サイトにアクセスする

② アカウント欄からアクセストークンの確認・追加のページ(添付画像の赤枠)を開く

アクセストークンの場所1

③ デフォルトアプリケーション欄のアクセストークン(添付画像の黒帯部分)をコピペ

アクセストークンの場所2

環境構築

① GTFS簡易ツールをクローン

ターミナル
$ git clone https://github.com/Kaas59/GTFS-Python

② アクセストークンを環境変数に設定

ターミナル
# 作業ディレクトリに入る
$ cd GTFS-Python

# .envファイルを作成
$ cp .env.sample .env

# .envファイルにアクセストークンをペースト
$ nano .env
.env
token=ここにアクセストークンをペースト

② Dockerイメージをビルド

ターミナル
# makeコマンド環境がある人
$ make build

# makeコマンド環境が無い人
$ docker-compose build

③ コンテナを起動

ターミナル
# makeコマンド環境がある人
$ make up

# makeコマンド環境が無い人
$ docker-compose up

④ コンテナにアクセス

ターミナル
# makeコマンド環境がある人
$ make exec

# makeコマンド環境が無い人
$ docker-compose exec python3 bash

使ってみる

今回使用するデータは「東京都交通局のバスのロケーション情報」です。
このデータは、GTFS-RTという形式で提供されている。また、データのフォーマットはGoogleが定めた「Protocol Buffers」という形式でバイナリ化されて送られてくる。そのため、そのままでは人間が読み取ることはできないのでデコーディングし理解可能な状態にする必要がある。

実際にロケーション情報を取得してみる

ターミナル(コンテナ内)
# makeコマンド環境がある人
$ make gtfs

# makeコマンド環境が無い人
$ python3 main.py

最後に

今回利用した公共交通オープデータセンターの他にも様々なデータを提供しているところがありますのでぜひ使ってみてください。

おまけ「今回使用したProtocol Buffersについて」

Protocol BuffersはAPIを通してデータを送信する前に特定の形式にそってエンコードされており、通常その形式がわからないとデコーディングすることはかなり困難である。しかし、公共交通オープデータセンター内でその詳細な形式は公開されていない。だが、GTFS-JPとい団体と国土交通省により日本での形式のサンプル(Googleが配布しているものと同じ)が配布されており、そちらを利用することでデコーディングを行うことが出来ます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1