探索結果から前後のダイヤを取得する
ダイヤによる探索での経路探索結果を用いて、前後のダイヤを取得します。
※ API利用時のイメージ図 駅すぱあと for web
関連URL
操作手順
行いたい内容により、手順が異なります。
経路全体の前後のダイヤを取得したい場合の手順
1. 経路探索を行う
ダイヤによる探索を行います。 下記に示す2つの値を取得します。
- 区間インデックス : ResultSet / Course / Route / Line / index
- 経路シリアライズデータ: ResultSet / Course / SerializeData
リクエスト例では、2020年10月01日の午前9時出発、自由が丘駅(駅コード:22755) -> 高円寺(駅コード:22671)という条件で、ダイヤによる探索を行います。
リクエスト例では、経路探索 /search/course/extreme を利用していますが、
ダイヤでの探索を行うことができる他のAPI(経路簡易探索 /search/course)でも利用することができます。
GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=22755:22671&date=20201001&time=0900&answerCount=1&searchType=departure
<ResultSet apiVersion="1.27.0.0" engineVersion="202010_05a">
<Course searchType="departure" dataType="onTimetable">
<Price kind="FareSummary">
:
</Price>
<Route index="1" transferCount="2" ...>
<Point index="1">
<Station code="22755">
<Name>自由が丘</Name>
<Type>train</Type>
<Yomi>じゆうがおか</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(1区間目) -->
<Line stopStationCount="5" track="railway" index="1" ...>
<!-- 列車名 -->
<Name>東急東横線・渋谷行</Name>
<Type>train</Type>
<ArrivalState>
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:16:00+09:00</Datetime>
</ArrivalState>
<Destination>渋谷</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="5・6">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:01:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="2">
<Station code="22715">
<Name>渋谷</Name>
<Type>train</Type>
<Yomi>しぶや</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(2区間目) -->
<Line stopStationCount="2" track="railway" index="2" ...>
<!-- 列車名 -->
<Name>JR山手線外回り・新宿・池袋方面</Name>
<Type>train</Type>
<ArrivalState no="15">
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:31:00+09:00</Datetime>
</ArrivalState>
<Destination>大崎</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="1">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:24:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="3">
<Station code="22741">
<Name>新宿</Name>
<Type>train</Type>
<Yomi>しんじゅく</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(3区間目) -->
<Line track="railway" index="3" ...>
<!-- 列車名 -->
<Name>JR中央・青梅線快速・青梅行</Name>
<Type>train</Type>
<ArrivalState no="3">
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:42:00+09:00</Datetime>
</ArrivalState>
<Destination>青梅</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="11">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:35:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="4">
<Station code="22671">
<Name>高円寺</Name>
<Type>train</Type>
<Yomi>こうえんじ</Yomi>
</Station>
:
</Point>
</Route>
<!-- 経路シリアライズデータ -->
<SerializeData>VkV4QaECpwzIAsMCpgE0Pi0DpgE0PiwEkcIBQwAAAAKmATQ|LAPJAQECAQMBBAEHAQgBCgIPQv9_EKX_9wWYwQKlWOPBAqVYu8ECpVjVwQKlWI_BAqVzK8ECpVgfwQKlWBjBAqVZLAaTwwEBAgEDxgGmAAGLsAIUAxoFpHkHBAgBwwEBAgEDxwGlC7ICIwMmBaR5BkQ5MzFHBwUIBcMBAQIBA8cBpZoIAgUDBwUDBkQ5NjlUBwcIBgeTxQGmATQ|KQOlAh0EpQIsBQAIAMYBpgE0PikCAQOlAjQEpQI7BQAIAMYBpgE0PikCAgOlAj8EpQJGBQAIAAiTxAQBBQEHpQE6CAHGAgEEAgUBBgEHpQLNCALGAgIEAwUBBgEHpG0IAwmSwQMBwwEBAgIDAQ|RxQGUAAECAwKTwwEAAgADAMMBAQIBAwHDAQICAgMCA5PDAQACAAMAwwEBAgEDAcMBAgICAwIEkgABBZIAAA**--T3221233232319:F332112212000:A23121141:--dce776ff3f76c13e6279e17a06c737968d9a44fc--0--0--0--364</SerializeData>
:
</Course>
</ResultSet>
例の場合、「自由が丘--東急東横線--渋谷--JR山手線外回り--新宿--JR中央線快速--高円寺」の経路となっており、
区間インデックス1:自由が丘(9:01) -- 東急東横線 -- 渋谷(9:16)
区間インデックス2:渋谷(9:24) -- JR山手線外回り -- 新宿(9:31)
区間インデックス3:新宿(9:35) -- JR中央快速 -- 高円寺(9:42)
となっています。
2. 前後のダイヤの取得
1の経路探索結果を利用して、前後のダイヤ探索から前後のダイヤを取得します。
例として、1の経路探索結果に対し、区間インデックス2に対し、前後のダイヤを取得します。
1で取得した経路探索結果を以下のパラメータに代入して、リクエストを送信します。
- sectionIndex :1で取得した区間インデックス
- serializeData:1で取得した経路シリアライズデータ
GET /search/course/pattern?key=アクセスキーを入力してください§ionIndex=2&serializeData=VkV4QaECpwzIAsMCpgE0Pi0DpgE0PiwEkcIBQwAAAAKmATQ|LAPJAQECAQMBBAEHAQgBCgIPQv9_EKX_9wWYwQKlWOPBAqVYu8ECpVjVwQKlWI_BAqVzK8ECpVgfwQKlWBjBAqVZLAaTwwEBAgEDxgGmAAGLsAIUAxoFpHkHBAgBwwEBAgEDxwGlC7ICIwMmBaR5BkQ5MzFHBwUIBcMBAQIBA8cBpZoIAgUDBwUDBkQ5NjlUBwcIBgeTxQGmATQ|KQOlAh0EpQIsBQAIAMYBpgE0PikCAQOlAjQEpQI7BQAIAMYBpgE0PikCAgOlAj8EpQJGBQAIAAiTxAQBBQEHpQE6CAHGAgEEAgUBBgEHpQLNCALGAgIEAwUBBgEHpG0IAwmSwQMBwwEBAgIDAQ|RxQGUAAECAwKTwwEAAgADAMMBAQIBAwHDAQICAgMCA5PDAQACAAMAwwEBAgEDAcMBAgICAwIEkgABBZIAAA**--T3221233232319:F332112212000:A23121141:--dce776ff3f76c13e6279e17a06c737968d9a44fc--0--0--0--364
上記をリクエストすると、5つの経路が取得できます。
例として、一番最後の5番目の経路を確認します。
<ResultSet apiVersion="1.27.0.0" engineVersion="202010_05a">
<Course dataType="onTimetable">
<!-- 取得できた1つ目の経路 -->
:
</Course>
<Course dataType="onTimetable">
<!-- 取得できた2つ目の経路 -->
:
</Course>
<Course dataType="onTimetable">
<!-- 取得できた3つ目の経路 -->
:
</Course>
<Course dataType="onTimetable">
<!-- 取得できた4つ目の経路 -->
:
</Course>
<Course dataType="onTimetable">
<!-- 取得できた5つ目の経路 -->
<Price kind="FareSummary">
:
</Price>
<Route index="5" transferCount="2" ...>
<Point index="1">
<Station code="22755">
<Name>自由が丘</Name>
<Type>train</Type>
<Yomi>じゆうがおか</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(1区間目) -->
<Line stopStationCount="5" track="railway" index="1" ...>
<!-- 列車名 -->
<Name>東急東横線・渋谷行</Name>
<Type>train</Type>
<ArrivalState>
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:16:00+09:00</Datetime>
</ArrivalState>
<Destination>渋谷</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="5・6">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:01:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="2">
<Station code="22715">
<Name>渋谷</Name>
<Type>train</Type>
<Yomi>しぶや</Yomi>
</Station>
</Point>
<!-- 区間インデックス(2区間目) -->
<Line stopStationCount="2" track="railway" index="2" ...>
<!-- 列車名 -->
<Name>JR山手線外回り・新宿・池袋方面</Name>
<Type>train</Type>
<ArrivalState no="15">
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:40:00+09:00</Datetime>
</ArrivalState>
<Destination>大崎</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="1">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:32:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="3">
<Station code="22741">
<Name>新宿</Name>
<Type>train</Type>
<Yomi>しんじゅく</Yomi>
</Station>
</Point>
<!-- 区間インデックス(3区間目) -->
<Line stopStationCount="3" track="railway" index="3" ...>
<!-- 列車名 -->
<Name>JR総武線・三鷹行</Name>
<Type>train</Type>
<ArrivalState no="1">
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2020-10-01T09:53:00+09:00</Datetime>
</ArrivalState>
<Destination>三鷹</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="16">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2020-10-01T09:42:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="4">
<Station code="22671">
<Name>高円寺</Name>
<Type>train</Type>
<Yomi>こうえんじ</Yomi>
</Station>
:
</Point>
</Route>
<SerializeData>VkV4QaECpwbIAsMCpgE0Pi0DpgE0PiwEkcIBQwAAAAKmATQ|LAPJAQECAQMBBAEHAQgBCgIPQv9_EKX_9wWYwQKlWOPBAqVYu8ECpVjVwQKlWI_BAqVzK8ECpVgfwQKlWcrBAqVXWQaTwwEBAgEDxgGmAAGLsAIUAxoFpHkHBAgBwwEBAgEDxwGlC9gCBQMIBaR5BkQ5MTVHBwUIBcMBAQIBA8cBpZgpAh4DIgWkeQZEODI1QgcHCAYHk8UBpgE0PikDpQIdBKUCLAUACADGAaYBND4pAgEDpQI8BKUCRAUACADGAaYBND4pAgIDpQJGBKUCUQUACAAIk8QEAQUBB6UBOggBxgIBBAIFAQYBB6UCzQgCxgICBAMFAQYBB6RuCAMJksEDAcMBAQICAwEPkcUBlAABAgMCk8MBAAIAAwDDAQECAQMBwwECAgIDAgOTwwEAAgADAMMBAQIBAwHDAQICAgMCBJIAAQWSAAA*--T3221233232319:F332112212000:A23121141:--0801d1217336f33835a0d72ac8d67add4d833d47--0--0--0--365</SerializeData>
:
</Course>
</ResultSet>
5つ目の経路の場合、「自由が丘--東急東横線--渋谷--JR山手線外回り--新宿--JR中央・総武線各駅停車--高円寺」の経路となっており、
区間インデックス1:自由が丘(9:01) -- 東急東横線 -- 渋谷(9:16)
区間インデックス2:渋谷(9:32) -- JR山手線外回り -- 新宿(9:40)
区間インデックス3:新宿(9:42) -- JR中央・総武線各駅停車 -- 高円寺(9:53)
となっています。
リクエストで指定した区間インデックスは2であるため、
最初に取得した経路と比べ、区間インデックス2以降の経路が異なっていることが分かります。
経路の1つの区間に対して前後のダイヤを取得したい場合の手順
京都(駅コード:25647) -> 大阪(駅コード:25853)の1区間目の前後ダイヤ取得を例に解説します。
1. 経路探索を行う
ダイヤによる探索を行います。 下記に示す4つの値を取得します。
- 列車名 : ResultSet / Course / Route / Line / Name
- 区間の出発時刻 : ResultSet / Course / Route / Line / DepartureState / Datetime
- 区間の到着時刻 : ResultSet / Course / Route / Line / ArrivalState / Datetime
- 区間インデックス : ResultSet / Course / Route / Line / index
- 経路シリアライズデータ: ResultSet / Course / SerializeData
リクエスト例では、2018年6月1日午前9時出発、京都駅(駅コード: 25647)-> 大阪駅(駅コード: 25853)という条件で、ダイヤによる探索を行います。
リクエスト例では、経路探索 /search/course/extreme を利用していますが、 ダイヤでの探索を行うことができる他のAPI(経路簡易探索 /search/course)でも利用することができます。
GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=25647:25853&date=20180601&time=0900&answerCount=1&searchType=departure
<ResultSet apiVersion="1.27.0.0" engineVersion="201805_02a">
<Course searchType="departure" dataType="onTimetable">
<Route index="1" transferCount="1">
<Point index="1">
<Station code="25647">
<Name>京都</Name>
<Type>train</Type>
<Yomi>きょうと</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(1区間目。今回の例ではこちらを利用) -->
<Line stopStationCount="0" track="railway" index="1" ...>
<!-- 列車名 -->
<Name>JR新幹線のぞみ</Name>
<Type detail="shinkansen">train</Type>
<ArrivalState no="22">
<Type>normal</Type>
<!-- 区間の到着時刻 -->
<Datetime operation="today">2018-06-01T09:13:00+09:00</Datetime>
</ArrivalState>
<Destination>新大阪</Destination>
<Number>201</Number>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="13">
<Type>normal</Type>
<!-- 区間の出発時刻 -->
<Datetime operation="today">2018-06-01T09:00:00+09:00</Datetime>
</DepartureState>
<Color>051102255</Color>
</Line>
<Point index="2">
<Station code="25978">
<Name>新大阪</Name>
<Type>train</Type>
<Yomi>しんおおさか</Yomi>
</Station>
:
</Point>
<!-- 区間インデックス(2区間目。今回の例ではこちらは利用しません) -->
<Line stopStationCount="0" track="railway" index="2" ...>
:
</Line>
:
</Route>
:
<!-- 経路シリアライズデータ -->
<SerializeData>VkV4QaEByALDAqYBM|4WA6YBM|4WBJHCAUMAAAACpgEz7hYDyQEBAgEDAQQBBwEIAQoCD0L_fxCl__cFlsECpWQvwQKlZXrBAqVk_cECpVkswQKlZ27BAqVj3QaSwwEBAgEDyQGlK|ICBQMGBKTJBQ8GRDIwMUEHAwgBCQbDAQECAQPHAaUbAgIdAx4FAwZENzM1VAcFCAQHksYBpgEz7nkDpQIcBKUCKQUABgIIAMYBpgEz7nkCAQOlAi8EpQIzBQAIAAiSxQQBBQEGAQekhggBxgIBBAIFAQYBB6SxCAIJkcICAQMBD5HFAZMAAQICksMBAAIAAwDDAQECAQMBA5LDAQACAAMAwwEBAgEDAQSRAAWRAA**--T3221233232319:F332112212000:A23121141:--24580c099d679f9421ade5ce2300dd28070eebbb--0--0--0--277</SerializeData>
</Course>
</ResultSet>
2. 前後のダイヤの取得
1の経路探索結果を利用して、平均路線情報から区間ごとに前後のダイヤを取得します。 まず、1で取得した経路探索結果を以下のパラメータに代入して、リクエストを送信します。
- sectionIndex :1で取得した区間インデックス
- serializeData:1で取得した経路シリアライズデータ
前後のダイヤを取得するには、探索結果と合致する、基準のダイヤが必要となります。
平均路線情報で取得した結果から、1で取得した列車名
、及び出発時刻
と合致する/ResultSet/Line
を探します。
- 出発時刻: / ResultSet / Line / DepartureState / Datetime
- 列車名 : / ResultSet / Line / Name
例では、/ResultSet/Line/code
がBoth:81
となっている路線情報が合致しました。
/ResultSet/Line/code
の値のBoth以下の数値は、/ResultSet/Line/DepartureState/Datetime
の昇順となっています。
従って、前後の5つの発着時刻を取得したい場合は、以下の要素下を参照します。
- 前のダイヤ: / ResultSet / Line / code の値がBoth:76 ~ Both:80となっている要素
- 後のダイヤ: / ResultSet / Line / code の値がBoth:82 ~ Both:86となっている要素
以上の操作で、前後のダイヤを取得できます。 sectionIndexの値を変更することで、他の区間を指定することが可能です。
GET /rail?key=アクセスキーを入力してください§ionIndex=1&serializeData=VkV4QaEByALDAqYBM|4WA6YBM|4WBJHCAUMAAAACpgEz7hYDyQEBAgEDAQQBBwEIAQoCD0L_fxCl__cFlsECpWQvwQKlZXrBAqVk_cECpVkswQKlZ27BAqVj3QaSwwEBAgEDyQGlK|ICBQMGBKTJBQ8GRDIwMUEHAwgBCQbDAQECAQPHAaUbAgIdAx4FAwZENzM1VAcFCAQHksYBpgEz7nkDpQIcBKUCKQUABgIIAMYBpgEz7nkCAQOlAi8EpQIzBQAIAAiSxQQBBQEGAQekhggBxgIBBAIFAQYBB6SxCAIJkcICAQMBD5HFAZMAAQICksMBAAIAAwDDAQECAQMBA5LDAQACAAMAwwEBAgEDAQSRAAWRAA**--T3221233232319:F332112212000:A23121141:--24580c099d679f9421ade5ce2300dd28070eebbb--0--0--0--277
<ResultSet apiVersion="1.27.0.0" engineVersion="201805_02a">
:
<Line code="Both:81">
<!-- 列車名 -->
<Name>JR新幹線のぞみ</Name>
<Type detail="shinkansen">train</Type>
<ArrivalState no="22">
<Datetime operation="today">09:13:00+09:00</Datetime>
</ArrivalState>
<Number>201</Number>
<DepartureState no="13">
<!-- 出発時刻 -->
<Datetime operation="today">09:00:00+09:00</Datetime>
</DepartureState>
<Color>051102255</Color>
</Line>
:
</ResultSet>