5
0

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.

バスのオープンデータに触れたら頭がたんぽぽになったのでAPIを作った

Last updated at Posted at 2020-01-25

はじめに

🌻←これはひまわり

2020/02/08追記

今更OpenTripPlannerを知りました
穴があったら潜って冬眠したい

📖 前提条件

General Transit Feed Specification (GTFS)とGTFS Realtimeを理解していること

今回触れる事

  • GTFS-JP
  • GTFS Realtime

今回触れない事

  • GTFS
  • たんぽぽ

なぜ触れないのか

GTFSにはGTFSGTFS-JP(標準的なバス情報フォーマット)とGoogleが拡張しているGTFSが存在し、日本では主にGTFS-JPが使われているから触れない

正直紛らわしいからGoogleのやつに統一して欲しい

🚩 この記事の目標

頭がたんぽぽになる前にAPIを使って欲しい事を伝える

🔗 利用するデータ

宇野バス: http://www3.unobus.co.jp/opendata

宇野バスのデータを使用する理由

ライセンスめっちゃ緩いから
普段乗っているのが宇野バス🚌であり、現実とデータの比較がしやすいから

オープンデータに関して

出会い

筆者は宇野バスのデータを約3年間研究してきた
その最中に出会った仕様との出会いをここに書いておく

🕛 リアルタイムデータの更新頻度

公式には

約20秒ごとに更新

と書かれているが、実際は3~25秒程の周期で更新されている
※2017年に__CSVデータ__で計測した時の値

🕓 リアルタイムデータの遅延

宇野バスのリアルタイムデータは現実から15~30秒程遅れている
果たしてこれはリアルタイムと言って良いのだろうか

✅ データの信頼性

運行中のバスがリアルタイムデータに無い時がある

リアルタイムデータに無い時は、そもそもバスからデータが送られていないらしい
※中の人に聞いた

📍 位置情報の誤差

たまに5m程離れた所に居る事がある

これは一般のスマートフォンで起こる位置ズレと同等

📝 その他メモ

本記事とは関係ないが、宇野バスのCSVデータは更新時に一瞬空になる
これはデータ内に//LASTが存在するかどうかで更新処理が完了したか分かるらしい
※これも中の人に(ry

❗ 伝えたい事

オープンデータは所詮オープンデータなので、割り切って使おう

🍳 GTFSの調理法

まずは刺身にたんぽぽを(うわなにをすくぁwせdrftgyふじこlp

🚌 バスの位置情報と運行ルートの取得方法

これはGTFS Realtimeに含まれている**VehiclePosition**を使えば取得出来るのだけれど、方法が2通りある

  1. VehiclePosition.trip.trip_idを利用する方法
  2. VehiclePosition.trip.route_idVehiclePosition.trip.start_dateVehiclePosition.trip.start_timeを利用する方法

1は簡単、2の場合はGTFSを使ってtrip_idを導き出さなければならない、面倒くさい

そして、trip_idを使って**stop_times.txt**内を検索すると運行ルートが出てくる

、実際は**calendar.txt**とかの処理もしないといけない、面倒くさい

とにかく面倒くさい

実際GTFSを調理している時に頭がたんぽぽになりかけたし、記事を書くのが面倒くさくなった

後で気づいた事だが、宇野バスのオープンデータはちゃんと整備されてて凄く扱いやすい
他社のオープンデータはマジで頭たんぽぽになる
特に両備、時刻表が存在しない停留所を何故残しているんだ

👄 愚痴だけでは終われない

面倒くさい事をしなくていいようにAPIを作りました
https://github.com/come25136/Atom

Atomは静的データとリアルタイムデータに対応しており、データの自動更新も行ってくれます

また、リアルタイムデータはsocket.ioを使用してWebSocketでデータが自動的に流れてきます(環境によってはポーリング)
※リアルタイムデータに関しては利用方法が定まっておらず、ドキュメントには記載していません

現時点では公開サーバーが無い為、試しに使ってみたいという方が居れば @come25136_airまでメッセージを送ってください
開発用の不安定なサーバーで良ければ、リンクをお教えします

余談

運賃の計算APIとかは用意していないので、必要であればプルリク送ってください

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?