乗り換えしたくない駅を除外して経路探索を行う
乗り換えしたくない駅を除外して経路探索を行います。
これにより、バリアフリーが不足している駅や、駅が複雑で迷いやすい駅、駅構内の混雑が激しい駅など、
特定の駅での乗り換えを回避したいケースにおいて、指定した駅で乗り換えをしない経路を案内することができるようになります。
※イメージ図(「高円寺」から「渋谷」を経路探索した結果)
※イメージ図(「高円寺」から「渋谷」を経路探索する際に、乗り換えしたくない駅として「新宿」を指定した結果)
関連URL
- 経路探索 /search/course/extreme
- 経路の再現/定期券・指定列車利用 /course/edit
手順
- 1. 乗り換えしたくない駅を指定して経路探索を行う
- 2. 1の経路探索結果に対して、経路の操作を行う
- 例: 「乗り換えしたくない駅」の設定を引き継いだまま、経路結果を「一本後のダイヤ」にする
1. 乗り換えしたくない駅を指定して経路探索を行う
interruptTransferStationCodeList
パラメータに、乗り換えしたくない駅の駅コードを指定して、経路探索 /search/coruse/extreme
を行います。
下記のリクエスト例は、「高円寺」(22671) から「渋谷」(22715) まで移動する際に、「新宿」(22741) で乗り換えしたくない、というリクエストになります。
GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=22671:22715&time=0800&interruptTransferStationCodeList=22741
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202006_01a">
<Course searchType="departure" dataType="onTimetable">
<Route timeOther="6" timeOnBoard="17" index="1" distance="92" timeWalk="0" transferCount="1" ...>
<Point index="1">
<Station code="22671">
<Name>高円寺</Name>
:
</Point>
<Line stopStationCount="4" timeOnBoard="12" track="railway" fareIndex="1" index="1" distance="65" trainID="784B" ...>
<Name>JR総武線・西船橋行</Name>
<ArrivalState no="4">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:13:00+09:00</Datetime>
</ArrivalState>
<DepartureState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:01:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="2">
<Station code="23043">
<Name>代々木</Name>
:
</Point>
<Line stopStationCount="1" timeOnBoard="5" track="railway" fareIndex="1" index="2" distance="27" trainID="718G" ...>
<Name>JR山手線内回り・渋谷・品川方面</Name>
<ArrivalState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:24:00+09:00</Datetime>
</ArrivalState>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:19:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="3">
<Station code="22715">
<Name>渋谷</Name>
:
</Point>
</Route>
<Price fareRevisionStatus="none" toLineIndex="2" fromLineIndex="1" kind="Fare" index="1" selected="true">
<Type>Fare</Type>
<Oneway>170</Oneway>
<RevisionStatus>latest</RevisionStatus>
<Round>340</Round>
</Price>
<Price kind="FareSummary">
<Oneway>170</Oneway>
<Round>340</Round>
</Price>
:
<SerializeData>xxxxxxxxxx</SerializeData>
<Teiki>
<SerializeData>...</SerializeData>
<DisplayRoute>高円寺--JR中央・総武線各駅停車--代々木--JR山手線内回り--渋谷</DisplayRoute>
</Teiki>
</Course>
:
</ResultSet>
仮に、 interruptTransferStationCodeList
パラメータが未指定の場合、つまり通常の経路探索では「高円寺--JR中央・総武線各駅停車--新宿--JR山手線内回り--渋谷」のように、「新宿」で乗り換えする経路が返りますが、
今回は、 interruptTransferStationCodeList
パラメータに「新宿」を指定しているため、「高円寺--JR中央・総武線各駅停車--代々木--JR山手線内回り--渋谷」のように、「新宿」で乗り換えする経路が避けられ、「代々木」で乗り換えする経路が返ります。
経路探索結果の操作を行わない場合、手順はここで終了です。
経路結果を「一本前/一本後のダイヤにする」、指定区間を「指定した列車で置き換える」「指定した時刻で再探索する」、等といった各種経路の操作を行う場合は、2の手順もご確認ください。
2. 1の経路探索結果に対して、経路の操作を行う
1のレスポンスで取得できる経路シリアライズデータ /ResultSet/Course/SerializeData
から経路を再現すると、
1で指定された乗り換えしたくない駅が除外された結果の経路として、経路が再現されます。
ただし、経路シリアライズデータには、「乗り換えしたくない駅として、どの駅が指定されたか」という情報は保持していません。あくまで、1の「結果の」経路情報のみ保持しています。
つまり、そのまま経路を再現する分には、乗り換えしたくない駅が除外された結果の経路になりますが、その経路結果を「一本前/一本後のダイヤにする」、指定区間を「指定した列車で置き換える」「指定した時刻で再探索する」、等といった経路の再現/定期券・指定列車利用 /course/edit
のパラメータ組み合わせ時の各種経路の操作を行う場合は、あらためて、乗り換えしたくない駅を指定する必要があります。
例: 「乗り換えしたくない駅」の設定を引き継いだまま、経路結果を「一本後のダイヤ」にする
経路の再現/定期券・指定列車利用 /course/edit
にて、 serializeData
パラメータに1のレスポンスで取得できる経路シリアライズデータ /ResultSet/Course/SerializeData
の値、 assignInstruction
パラメータに AutoNext
を指定し、
加えて、 interruptTransferStationCodeList
パラメータに乗り換えしたくない駅の駅コードを指定します。
下記のリクエスト例は、08:01発「高円寺--JR中央・総武線各駅停車--代々木--JR山手線内回り--渋谷」の経路結果を「一本後のダイヤ」にする際に、「新宿」(22741) で乗り換えしたくない、というリクエストになります。
GET /v1/xml/course/edit?key=アクセスキーを入力してください&serializeData=1で取得できる経路シリアライズデータを入力してください&assignInstruction=AutoNext&interruptTransferStationCodeList=22741
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202006_01a">
<Course dataType="onTimetable">
<Route timeOther="8" timeOnBoard="17" index="1" distance="92" timeWalk="0" transferCount="1" ...>
<Point index="1">
<Station code="22671">
<Name>高円寺</Name>
:
</Point>
<Line stopStationCount="4" timeOnBoard="12" track="railway" fareIndex="1" index="1" distance="65" trainID="778B" ...>
<Name>JR総武線・千葉行</Name>
<ArrivalState no="4">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:16:00+09:00</Datetime>
</ArrivalState>
<DepartureState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:04:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="2">
<Station code="23043">
<Name>代々木</Name>
:
</Point>
<Line stopStationCount="1" timeOnBoard="5" track="railway" fareIndex="1" index="2" distance="27" trainID="730G" ...>
<Name>JR山手線内回り・渋谷・品川方面</Name>
<ArrivalState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:29:00+09:00</Datetime>
</ArrivalState>
<DepartureState no="2">
<Type>normal</Type>
<Datetime operation="today">2020-06-01T08:24:00+09:00</Datetime>
</DepartureState>
:
</Line>
<Point index="3">
<Station code="22715">
<Name>渋谷</Name>
:
</Point>
</Route>
<Price fareRevisionStatus="none" toLineIndex="2" fromLineIndex="1" kind="Fare" index="1" selected="true">
<Type>Fare</Type>
<Oneway>170</Oneway>
<RevisionStatus>latest</RevisionStatus>
<Round>340</Round>
</Price>
<Price kind="FareSummary">
<Oneway>170</Oneway>
<Round>340</Round>
</Price>
:
<SerializeData>xxxxxxxxxx</SerializeData>
<Teiki>
<SerializeData>...</SerializeData>
<DisplayRoute>高円寺--JR中央・総武線各駅停車--代々木--JR山手線内回り--渋谷</DisplayRoute>
</Teiki>
</Course>
</ResultSet>
結果は、「新宿」で乗り換えない指定が引き継がれた状態で、元は08:01発だったダイヤが一本後の08:04発のダイヤになっています。