駅すぱあと Python SDKを使って平均待ち時間探索を行う
本記事はヴァル研究所の支援として作成された記事です
駅すぱあとはAPIを公開しており、駅情報や経路探索などをAPI経由で行えます。メソッドはすべてGETメソッドで、情報取得系のみです。レスポンスはJSONまたはXMLで返ってきます。
この駅すぱあと APIを利用しやすくするSDKを開発しはじめました。SDKはPythonで作っており、CLIやWebサービスの中で利用できます。
今回は、スタンダードプランで提供されている平均待ち時間探索APIに対応したので、その使い方を解説します。
平均待ち時間探索とは
平均待ち時間探索は、時刻表を加味しないで目的地への色々な経路を探索します。平均待ち時間とは、1日に運行されている列車の本数などから割り出した、平均的に考えられる待ち時間になります。
詳細は平均待ち時間による探索 - 駅すぱあと API Documents 駅データ・経路検索のWebAPIを参照してください。
必要な情報
SDKを利用する際にはAPIキーが必要です。無料トライアルがあるので、こちらから取得してください。
注意点
- SDKは非公式です。公式サポートへの問い合わせはご遠慮ください
インストール
インストールは pip
コマンドで行います。
pip install ekispert
初期化
先ほど取得したAPIキーを使ってSDKを初期化します。
from ekispert.client import Ekispert
client = Ekispert("YOUR_API_KEY")
平均待ち時間の検索条件設定
平均待ち時間検索は searchCoursePlainQuery
を使います。このクエリーオブジェクトを取得し、検索条件を設定します。 from
はPythonの予約後なので、 from_
に変更しています。
query = client.searchCoursePlainQuery()
# From/Toは必須
query.from_ = 25077
query.to = 29090
検索条件は 平均待ち時間探索 - 駅すぱあと API Documents 駅データ・経路検索のWebAPI にあるものを指定できます。
検索の実行
検索条件を設定したら、検索処理を実行します。結果は Course
クラスの配列になります。
courses = query.execute()
エラーだった場合
もし検索がエラーだった場合は、 例外を補足してください。
try:
courses = query.execute()
except Exception as e:
print(e)
成功した場合
courses
の中に経路情報が入っています。各経路には prices
(金額情報) や routes
(経路) プロパティなどがあります。
courses[0].search_type # "plain"
courses[0].prices[0].kind # "ChargeSummary"
courses[0].prices[0].one_way # 2530
courses[0].prices[0].round # 5060
courses[0].teiki.display_route # "名古屋--JR東海道新幹線--新大阪--OsakaMetro御堂筋線--なんば(地下鉄)"
courses[0].routes[0].time_other # 17
courses[0].routes[0].exhaust_co2 # 3884
courses[0].routes[0].points[0].station.name # "名古屋"
courses[0].routes[0].points[1].station.name # "新大阪"
ソースコード
SDKのコードは以下のリポジトリにて公開しています。ライセンスはMIT Licenseです。
まとめ
経路探索は今回紹介したものの他、前後のダイヤ探索や時刻表を加味した経路探索などさまざまな種類があります。今後のSDKのアップデートにて対応する予定なので、ぜひご利用ください。
何か不具合があれば、Issueにて連絡いただければ対応します。
Discussion