二区間定期券利用時の運賃計算

二区間定期券利用時の運賃計算を行います。

attention!

定期として割り当てることが出来る経路は鉄道のみです。

関連URL

手順

1. 経路探索に用いる条件を生成する

探索条件生成のnikukanteikiパラメータに、二区間定期の利用フラグを指定します。

GET /v1/xml/toolbox/course/condition?key=アクセスキーを入力してください&nikukanteiki=true
<ResultSet apiVersion="1.26.0.0" engineVersion="201601_02a">
<Condition>T3221233232319:F3321122220:A23121141:</Condition>
</ResultSet>

2. 定期経路の文字列を作成する

平均待ち時間による探索を行います。

ダイヤによる探索では定期経路の文字列を作成することはできません。リクエスト例では経路探索/search/course/extremeを用いていますが、平均待ち時間による探索を行うことができるAPI(経路簡易探索平均待ち時間探索)でも可能です。

※リクエスト例では日本語で記述しておりますが、リクエストパラメータに日本語が含まれる場合には、日本語の部分をUTF8でURLエンコード(パーセントエンコード)してください。

GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=池袋:練馬&searchType=plain&conditionDetail=T3221233232319:F3321122220:A23121141:
<ResultSet apiVersion="1.26.0.0" engineVersion="201602_02a">
:
<Point index="1">
<Station code="22513">
<Name>池袋</Name>
:
<Line direction="Up" stopStationCount="2" teiki3Index="1" teiki6Index="1" timeOnBoard="6" exhaustCO2="70" fareIndex="1" index="1" exhaustCO2atPassengerCar="537" distance="32" teiki1Index="1">
<Name>東京メトロ有楽町線(和光市-新木場)</Name>
:
<Point index="2">
<Station code="22679">
<Name>小竹向原</Name>
:
<Line direction="Down" stopStationCount="1" teiki3Index="1" teiki6Index="1" timeOnBoard="4" exhaustCO2="57" fareIndex="2" index="2" exhaustCO2atPassengerCar="436" distance="26" teiki1Index="1">
<Name>西武有楽町線</Name>
:
<Point index="3">
<Station code="22889">
<Name>練馬</Name>
:
<PassStatus teiki3Index="1" teiki6Index="1" kind="nikukanteiki" index="1" selected="true" teiki1Index="1">
<Name>一般定期</Name>
<Type>Normal</Type>
<Comment/>
</PassStatus>
<PassStatus teiki3Index="1" teiki6Index="1" kind="nikukanteiki" index="2" selected="false" teiki1Index="1">
<Name>だぶるーと</Name>
<Type>Daburoute</Type>
<Comment/>
</PassStatus>
:

駅名称ResultSet/Course/Route/Point/Station/Nameと、ResultSet/Course/Route/Line/Nameと、ResultSet/Course/Route/Line/directionの文字列を:でつなげて、池袋:東京メトロ有楽町線(和光市-新木場):Up:小竹向原:西武有楽町線:Down:練馬という定期経路文字列を作成します。3で利用するassignDetailRouteパラメータの値となります。

3. 経路探索を行う

2で作成した定期経路文字列を用いて、経路探索/search/course/extremeを行います。

2のレスポンスで出力される、ResultSet/Course/PassStatusで、二区間定期を表している要素のindexResultSet/Course/PassStatus/indexを、assignNikukanteikiIndexパラメータの値に利用します。 bringAssignmentErrorパラメータを利用すると、割り当てされていない場合にエラーを出力します。

※リクエスト例では日本語で記述しておりますが、リクエストパラメータに日本語が含まれる場合には、日本語の部分をUTF8でURLエンコード(パーセントエンコード)してください。

GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=池袋:椎名町&searchType=plain&assignDetailRoute=池袋:東京メトロ有楽町線(和光市-新木場):Up:小竹向原:西武有楽町線:Down:練馬&assignNikukanteikiIndex=2&bringAssignmentError=true
<ResultSet apiVersion="1.26.0.0" engineVersion="201602_02a">
:
<Price fareRevisionStatus="none" toLineIndex="1" fromLineIndex="1" kind="Fare" index="1" selected="true">
<Type>WithTeiki</Type>
<Oneway>0</Oneway>
<Round>0</Round>
</Price>
:

探索した経路内で定期券が利用されている事がわかります。

note

本当に二区間定期が利用されているのか、3のリクエスト例からassignNikukanteikiIndexパラメータを除いて確かめることができます。

GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=池袋:椎名町&searchType=plain&assignDetailRoute=池袋:東京メトロ有楽町線(和光市-新木場):Up:小竹向原:西武有楽町線:Down:練馬&bringAssignmentError=true
<ResultSet apiVersion="1.26.0.0" engineVersion="201602_02a">
<Error code="E153">
<Message>定期券で利用できる経路がありません。</Message>
</Error>
</ResultSet>

assignRoute, assignDetailRouteは、デフォルトで普通定期を利用しているため、西武池袋線を利用する池袋-椎名町の経路では、定期券の割り当てが行えなかったことが分かります。

attention!

定期券利用時の運賃計算を行う際にassignRouteパラメータを利用することも出来ますが、一部の環状線は逆方向も控除されてしまう事があるため、経路の厳密性を担保するために、路線の方向を考慮するassignDetailRouteパラメータの利用を推奨しています。 方向(上り・下り)の要素も付加したassignDetailRouteパラメータを指定することで、より正確に区間控除を行うことが可能となります。