駅すぱあと API BLOG

駅すぱあと APIの開発チームが作るブログです。

経路探索結果から前後のダイヤを調べることができるようになりました

f:id:ekispert_api:20201016185246j:plain

こんにちは、駅すぱあとWebサービス開発チームの山崎です。

この度「駅すぱあとWebサービス」では、経路探索結果からルートを変更せず、 前後のダイヤを見て乗りたい電車の選択ができる「前後のダイヤ探索」機能をリリースしました。

これにより、ある駅で乗り換えで、1本前や1本後の電車に乗った場合、最終的に何時に到着駅に着くのか、といった一覧を表示できるようになります。

具体的には?

新機能として、「前後のダイヤ探索」(/search/course/pattern)が追加されます。

この機能を利用する場合、基本的な流れは以下のようになります。
1. 経路探索をする
2. 前後のダイヤ探索をする

まず最初に、経路探索を行います。 例として、「高円寺駅から池袋駅」の経路探索を行います。

「高円寺駅から池袋駅」の経路探索は、以下のリクエストになります。

https://api.ekispert.jp/v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=22671:22513&time=1000

※ レスポンスのフォーマットはJSON形式も選択可能です。
※ 22671は高円寺駅の駅コード、22513は池袋駅の駅コードになります。

次に、経路探索の結果から、1つの経路を選択し、前後のダイヤの基準となる区間を選びます。

例として、上記の探索結果から 高円寺--JR中央線快速--新宿--JR湘南新宿ライン--池袋 という経路を選択したとします。

(以下は経路の画面イメージです)
f:id:ekispert_api:20201021191702p:plain

2区間目の「新宿--JR湘南新宿ライン--池袋」の区間から、前後のダイヤを調べる場合は、以下のリクエストになります。

https://api.ekispert.jp/v1/xml/search/course/pattern?key=アクセスキーを入力してください&serializeData=経路のシリアライズデータ&sectionIndex=2&answerCount=20&previousCount=9

answerCountパラメータは、前後のダイヤ情報を何件取得するか指定します。
最大20まで指定が可能なので、20を指定した場合、基準となる経路を含めて前後20本のダイヤ情報を取得することができます。
また現在出ている経路を基準に、前の時間を何本、後の時間を何本にするかという指定ができるので(実際パラメータで指定するのは前の列車の本数のみです。後ろの列車は、前の列車の本数とanswerCountパラメータの値を元に、自動で算出されます。)、例では、9つ前までの経路を取得するように、パラメータ(previousCount)を設定します。
この場合、基準となる経路の前のダイヤを9経路、後のダイヤを10経路取得することになります。

レスポンスは経路探索と同様の結果が返ってきますので、一覧をリストで表示したい場合には、結果から乗り換え回数や発着時間、所要時間など、サービスに合わせて必要な部分を表示してください。

一本前、一本後との違いは?

「駅すぱあとWebサービス」には、似たようなことできる経路探索結果の一本前、一本後の経路を取得する機能があります。

具体的には、経路再現機能(/course/edit)のassignInstructionパラメータに一本前であればAutoPrevious、一本後であればAutoNextを 指定します。 ドキュメントにTipsもありますので、よければご覧ください。 docs.ekispert.com

今回の「前後のダイヤ探索」との違いは、「経路のルート(経由駅や路線)のままか、そうでないか」になります。
前後のダイヤ探索機能(/search/course/pattern)では、取得する経路は基本的に元の経路のルートのままになります。
一方で、経路再現機能(/course/edit)の一本前、一本後の場合は、指定した日時で最適なルートを選択するため、元の経路とは異なるルートになることがあります。

注意点

注意点は以下になります。

1. 経路に複数区間が存在する場合、選択した区間から後のダイヤの経路では、選択した区間より前の区間は元の経路のままになります
2. 指定した区間に対して、始発以前や終電以降の経路は返却されません

・注意点1について

今回の機能は、探索結果の区間を選択しますが、上記の例のように経路が2区間から構成されており、2区間目から前後のダイヤを取得する場合、前のダイヤの場合は1区間目もあわせて変わりますが、後のダイヤの場合には1区間目は同じになります。

例で示した経路に発着時間を付けた場合、以下のようになります。 高円寺--(10:00発)JR中央線快速(10:06着)--新宿--(10:12発)JR湘南新宿ライン(10:18着)--池袋

そして、前のダイヤを2つに指定した取得した結果は以下のような結果になります。

・2つ前のダイヤ
高円寺--(09:45発)JR中央線快速(09:52着)--新宿--(10:02発)JR埼京線(10:07着)--池袋

・1つ前のダイヤ
高円寺--(10:00発)JR中央線快速(10:06着)--新宿--(10:06発)JR埼京線(10:12着)--池袋

・元のダイヤ
高円寺--(10:00発)JR中央線快速(10:06着)--新宿--(10:12発)JR湘南新宿ライン(10:18着)--池袋

・1つ後のダイヤ
高円寺--(10:00発)JR中央線快速(10:06着)--新宿--(10:15発)JR埼京線(10:21着)--池袋

・2つ後のダイヤ
高円寺--(10:00発)JR中央線快速(10:06着)--新宿--(10:18発)JR埼京線(10:24着)--池袋

・注意点2について

指定した区間に対して、始発以前や終電以降の経路は返却されません。そのため、最大回答数を指定しても、その回答数が必ず返ってくるわけではないので、ご注意ください。

おわりに

今回の機能により、途中の駅に早く着いた場合、逆に遅くついた場合に、最終的に何時に到着駅につけるのか、という便利な探索ができるようになります。 区間からの前後のダイヤ探索機能のドキュメントを以下に記載しますので、よろしければご覧ください。

docs.ekispert.com


駅すぱあとWebサービスを使ってみるには? 駅すぱあとWebサービス スタンダードプランは90日間無料でお試しできます。 こちらから申し込みして気軽に触ってみてください!

ekiworld.net