8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

python3でGTFS Realtimeを読み込む

Last updated at Posted at 2020-07-25

python3 GTFS Realtime を読み込む

Googleのpython用のサンプルコードが手元のpython3の環境で動かなかったので、urllibの部分をアップデートしたものです。

環境構築

GTFS Realtimeはプロトコルバッファ形式でデシリアライズされたバイナリデータです。
プロトコルバッファを何も知らずにデータを展開できるライブラリがあります。
コマンドプロンプトでご自身の環境に合わせて導入してください。
(anacondaにcondaコマンドで入れる方法があれば知りたいです。)

# Using easy_install
easy_install --upgrade gtfs-realtime-bindings

# Using pip
pip install --upgrade gtfs-realtime-bindings

ソースコード

read_gtfs_rt.py3
from google.transit import gtfs_realtime_pb2
import urllib.request, urllib.error
feed = gtfs_realtime_pb2.FeedMessage()
with urllib.request.urlopen('URL OF YOUR GTFS-REALTIME SOURCE GOES HERE') as res:
    feed.ParseFromString(res.read())
    print(feed) #デバッグ用出力
    #以下大幅略

おまけ

宇野バスさんのデータを部分的にCSV風の出力をする
公開元: http://www3.unobus.co.jp/opendata/

注意:Google乗換案内に使われているものと同じデータです。過剰な頻度のアクセスはしないでね。

read_gtfs_rt_uno_bus.py3
from google.transit import gtfs_realtime_pb2
import urllib.request, urllib.error
url ='http://www3.unobus.co.jp/GTFS/GTFS_RT-VP.bin'
feed = gtfs_realtime_pb2.FeedMessage()
with urllib.request.urlopen(url) as res:
    feed.ParseFromString(res.read())
    #print(feed)
    for entity in feed.entity:
        print(
              entity.id,                         #車両ID
              entity.vehicle.vehicle.id,         #車両ナンバー
              entity.vehicle.trip.trip_id,       #路線番号?
              entity.vehicle.timestamp,          #車両時刻
              entity.vehicle.position.longitude, #車両緯度
              entity.vehicle.position.latitude,  #車両経度
              entity.vehicle.occupancy_status,   #混雑度
              sep=',')
8
10
1

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
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?