【 GTFS-RT format 】公共交通オープンデータセンターのデータを覗いてみました【バス・地下鉄・・】

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

東京公共交通オープンデータチャレンジ っていうのがあって。。それのデータ元として、公共交通オープンデーターセンターというところに、データが集まっているようです。

公共交通オープンデータ協議会
Newsもっと見るCategory2019年5月31日より、公共交通オープンデータセンターの運用を開始しました。日本における公共交通事業者とデータ利用者を結ぶデータ連携プラットフォームの確立を目指し、公共交通事業者の協力を得ながら、提供デー

データカタログとしては、こちらに130件のデータが存在しているようです。(2022/06/29時点)

データセット - 公共交通オープンデータセンター データカタログサイト

小平で検索すると。。

期待どおりの展開(笑)

西武バスとかかな?と見ると。。

なんか役立ちそうなデータありそうですね。。

それで、データの中身を見ようと思ったんですが、

この読み方は、開発者登録して、アカウントから、アクセストークンの確認・追加から、トークンを読んで。。 それぞれのAPIのURLに KEY=[あなたのトークン] をつけたらダウンロードできるとのこと。。

開発者登録しないといけないというのと、開発者登録してもなかなか承認されていなかったので、見れなかったんですが。。なんと承認されたようで、無事見ることができるように。。

で。。 JSONはわかるけど。。GTFS,GTFS-RTって何??

GTFSは、ここにフォーマットが出てます。

GTFS.JP

で。。GTFS-RTは? なぜかGoogle君のサイトに。。

GTFS リアルタイム リファレンス  |  リアルタイム乗換案内データ  |  Google for Developers

へーーーー 試しに、ダウンロードして、Textエディタで見てみたら、どうも。。Null文字が入っているみたい。

どうやって見るんだろう?って。。読み進めると。。Pythonのコードサンプルもあるじゃないですか!

Python サンプル  |  リアルタイム乗換案内データ  |  Google for Developers

ってことで。。

Google Collaboratory で見てみることに。。

西武バス バスロケーション情報 / Bus location information of Seibu Bus

https://ckan.odpt.org/dataset/b_bus_location-seibubus

このデータを見てみると。。

header { gtfs_realtime_version: "2.0" timestamp: 1656507042 } 
entity { id: "620" 
         vehicle { trip { trip_id: "63001-2_02-\345\271\263\346\227\245_5765" 
                          schedule_relationship: SCHEDULED 
                          route_id: "63001" 
                          direction_id: 0 } 
                  position { latitude: 35.737186431884766 
                             longitude: 139.60499572753906 
                             bearing: 252.0 } 
                  current_stop_sequence: 3 
                  timestamp: 1656507029 
                  stop_id: "30029-01" 
                  vehicle { id: "620" label: "620" } 
                  occupancy_status: FEW_SEATS_AVAILABLE 
                  } 
        } 
entity { id: "696" vehicle { trip { start_time: "21:17:06" start_date: "20220629" schedule_relationship: ADDED route_id: "63001" direction_id: 1 } position { latitude: 35.744564056396484 longitude: 139.60792541503906 bearing: 2.0 } current_stop_sequence: 15 timestamp: 1656507009 stop_id: "30030-02-03" vehicle { id: "696" label: "696" } occupancy_status: MANY_SEATS_AVAILABLE } }

と。。。謎の暗号が(笑)

Google Colabでのコードは

%pip install --upgrade gtfs-realtime-bindings

これを実行すると、Runtimeの再起動を言われるので、そのボタンを押し

from google.transit import gtfs_realtime_pb2
import urllib.request, urllib.error
url ='https://api.odpt.org/api/v4/gtfs/realtime/SeibuBus_vehicle?acl:consumerKey=[あなたのトークン]'
feed = gtfs_realtime_pb2.FeedMessage()
with urllib.request.urlopen(url) as res:
feed.ParseFromString(res.read())
print(feed)

で読めます。

JSON形式で読めるので、CSVなり何なりできますね。。

print(entity.id)  :620

print(entity.vehicle.trip.trip_id) : “63001-2_02-\345\271\263\346\227\245_5765”

print(entity.vehicle.trip.route_id) : “63001”

print(entity.vehicle.trip.position.latitude):35.737186431884766

longitude: 139.60499572753906 で緯度経度?

が出てくるって感じですね。

で。。id が なに?? stop_idって何?? ってなるわけで。。

次は静的情報GTFS

今度は、こちらを見てみることに

https://ckan.odpt.org/dataset/b_bus_gtfs-seibubus/resource/3f545750-c58d-4df7-acbe-c0b05a929bde

そうすると、今度はなんと。。Zipファイルでテキストが入っています。

fare_ は料金? routes. はルート stops.はバス停 stop_times.は時刻表?

って感じで入っています。

試しに、さっきの stop_id 30029-01 を検索してみると。。

30029-01,,禅定院前,,35.73743,139.605334,30029-01,,0,,,

が入っています。route_id  63001で route.txtから検索すると

63001,6013301006270,荻14,,,3,,ff7800,000000,

が出てきます。

なるほど。

JSON形式でもある!(笑)

バスロケーション情報JSON形式でもある!! ので、こっちの方にアクセスすると

https://ckan.odpt.org/dataset/b_bus_location-seibubus/resource/d285ac87-0289-4367-ae64-6b21d52865ec
[{"@id":"urn:ucode:_00001C000000000000010000033040F9","@type":"odpt:Bus","dc:date":"2022-06-29T22:28:35+09:00","geo:lat":35.725103,"@context":"http://vocab.odpt.org/context_odpt_Bus.jsonld","geo:long":139.603927,"dct:valid":"2022-06-29T22:29:12+09:00","odpt:note":"620:荻窪駅(上井草)石神井公園駅:63001:1:井草中学校:上井草駅","owl:sameAs":"odpt.Bus:SeibuBus.Ogi14.63001.1.620","odpt:azimuth":348,"odpt:busroute":"odpt.Busroute:SeibuBus.Ogi14","odpt:operator":"odpt.Operator:SeibuBus","odpt:busNumber":"620","odpt:frequency":30,"odpt:busTimetable":"odpt.BusTimetable:SeibuBus.Ogi14.63001.1.5480.Specific.SeibuBus.2.Weekday","odpt:toBusstopPole":"odpt.BusstopPole:SeibuBus.Kamiigusaeki.30020.2","odpt:busroutePattern":"odpt.BusroutePattern:SeibuBus.Ogi14.63001.1","odpt:fromBusstopPole":"odpt.BusstopPole:SeibuBus.Igusachuugakkou.30019.2","odpt:occupancyStatus":"odpt.OccupancyStatus:FewSeatsAvailable","odpt:fromBusstopPoleTime":"2022-06-29T22:27:00+09:00","odpt:startingBusstopPole":"odpt.BusstopPole:SeibuBus.Ogikuboeki.20127.2","odpt:terminalBusstopPole":"odpt.BusstopPole:SeibuBus.Shakujiikouenekiminamiguchi.30031.15"},

位置情報ないじゃん!(笑)

でも。。少し日本語も入っているので、わかりやすいかも??

結論

関東バス・ ブルベーバス とかもあったら。。 バスの乗換案内をGoogleレベルで作れるな!(笑)

ってことで。。 西武バスの場合は、ちゃんとデータがあることがわかりました!!

ちなみに・・

こんな配信サービスもあるみたいですが。。 どうも静的情報だけのようです。

公共交通データHUBシステム