Faredio 2.0には、特殊な運賃計算方法に対応するための機能がいくつか実装されています。それらの機能について説明します。
運賃計算の際、乗換駅と運賃を計算する場合の路線の分岐地点が異なる場合があると思います(例:小田急小田原線、江ノ島線の相模大野分岐点)。 この状況に対応するため、分岐点を設けることが出来ます。
分岐点は、通常の駅と同様の方法で設置します。駅名、ローマ字表記、駅ナンバリングのそれぞれの先頭を"BRH_"で始めると分岐点になります。
//分岐点の設置例:小田急線相模大野分岐点
//相模大野駅
stationList.addToStaList(new Station("相模大野","Sagamiono","OH28"));
//相模大野分岐点
stationList.addToStaList(new Station("BRH_相模大野","BRH_Sagamiono","BRH_OH28"));
複数の路線が並走している場合などで、その駅を通るが乗降は出来ないような駅を設置したい場合(例:阪急京都線中津駅)に、駅を乗降禁止に設定することが出来ます。
駅を乗降禁止にするには、以下のいずれかの構文を路線インスタンス登録の直前の行に挿入します。
[variableName1]には、その駅で乗降禁止となる路線インスタンスの変数名を入力します。例えば、阪急京都線の中津駅を乗降禁止としたい場合は阪急京都線の路線インスタンス名を指定します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_staIdx | integer | 駅番号 | 乗降禁止とする駅の駅番号 |
_staName | String | 駅名 | 乗降禁止とする駅の駅名 |
_roman | String | ローマ字表記 | 乗降禁止とする駅のローマ字表記 |
_numberling | String | 駅ナンバリング | 乗降禁止とする駅の駅ナンバリング |
//記述例:阪急京都線(HKyoto)の中津駅を乗降禁止にする場合
HKyoto.banUse.push(stationList.searchFromRoman("Nakatsu"));
複数の路線が並走している場合などで、ある特定の路線から別の路線への乗換を禁止したい場合に指定します。
指定は路線単位になります。例えば、池袋駅で東京メトロ副都心線から有楽町線への乗換を禁止する設定を行うと、副都心線→有楽町線の乗換は不可能になりますが、副都心線→有楽町線以外の路線や有楽町線→副都心線の乗換は可能になります。
X駅において、路線Aから路線Bへの乗換を禁止したい場合は、以下のいずれかの構文を路線Aの路線インスタンス登録の直前の行に挿入します。
[variableNameA]は路線Aの路線インスタンス変数名です。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_staNum | integer | 駅番号 | X駅の駅番号 |
_staName | String | 駅名 | X駅の駅名 |
_roman | String | ローマ字表記 | X駅のローマ字表記 |
_numberling | String | 駅ナンバリング | X駅の駅ナンバリング |
_lineNum | integer | 路線番号 | 必須。路線Bの路線番号 |
//記述例:地下鉄成増駅で有楽町線(Yurakucho)から副都心線(路線番号10)への乗換を禁止する場合
Yurakucho.addBanTrans(stationList.searchFromRoman("Chikatetsu-Narimasu"), 10);
徒歩連絡駅(例:東京メトロ永田町駅、赤坂見附駅)のようなパターンを設定することが出来ます。
例えば、X駅、Y駅、Z駅の3駅で相互に徒歩連絡による乗換が可能な場合はデータファイルの末尾に次のような行を挿入します。 徒歩連絡駅の数には特に制限はありません。各駅の番号をカンマで区切って羅列して指定します。
[variableName]はインスタンス変数の名前であり、任意のアルファベット文字列を指定します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_staNumX | integer | X駅の駅番号 | 駅名、ローマ字表記、駅ナンバリングでの指定も可※ |
_staNumY | integer | Y駅の駅番号 | 駅名、ローマ字表記、駅ナンバリングでの指定も可※ |
_staNumZ | integer | Z駅の駅番号 | 駅名、ローマ字表記、駅ナンバリングでの指定も可※ |
※駅番号以外で指定する場合はstationList.searchFromName()、stataionList.searchFromRoman()、stationList.searchFromNumberling()を使用してください。
//記述例:東京メトロ永田町駅、赤坂見附駅の徒歩連絡
var NagataAkasaka = new WalkTransfer(new Array(stationList.searchFromRoman("Nagatacho"), stationList.searchFromRoman("Akasaka-Mitsuke")));
特定運賃を設定するときは、どの駅からどの駅までどのような経路で移動する場合に適用されるかを指定します。
例えば、京急電鉄で品川駅(駅番号1)→京急本線(路線番号0)→横浜駅(駅番号25)と移動する際に特定運賃298円(ICカード)、300円(きっぷ)が適用されるときは、データファイルの末尾に次の行を挿入します。
//記述例:京急(品川〜横浜)
specificFare.push(new SpcFare(298, 300, new Array(1,0,25)));
記述例において、赤字で示した部分が乗車経路を表しており、駅番号と路線番号を交互にカンマで区切って入力した書式になっています。
なお、この経路を逆に辿った横浜から品川までの経路にも自動的に特定運賃が適用されますので、逆パターンを指定しておく必要はありません。
加算運賃や乗継割引には鉄道会社によって様々な形態があり、Faredio 2.0の共通のシステムですべてを網羅することは困難です。 そのため、こうした機能は未実装になっています。
これらの例外的な運賃計算を行いたい場合は、ユーザー指定スクリプトの記述が必要です。 "datas"ディレクトリに入っているサンプルファイル(keikyu_kasan.js、keio_kasan.js、tokyu_kodomo.js)がその記述例です。
ユーザー指定スクリプトは、データファイルと同様"datas"ディレクトリに保存します。 ファイル名は自由ですが、データファイルの冒頭に下記の行を挿入してユーザー指定スクリプトを使用することを宣言しておく必要があります。
ユーザー指定スクリプトの処理内容は、FoundRouteクラスのscFare()メソッドをオーバーライドする形で記述します。 まずは、以下のソースコードをコピーしてエディタに貼り付けてください。
//ユーザー指定スクリプトファイルの内容
FoundRoute.prototype.scFare = function() {
/*ここに処理内容を記述します。*/
}
編集するのは、"{"〜"}"の内部(コメントが入っている部分)です。この外側には何も記述しないようにして下さい。
ユーザー指定スクリプトにより記述されるscFare()メソッドは、経路と運賃の検索がすべて終了したタイミングで呼び出されます。
記述していただくscFare()メソッドの処理内容は、経路情報から運賃計算の例外が適用される条件に当てはまっているかを判断し、運賃を修正するというものです。
FoundRouteクラスは、検索された複数の経路のうちの1つの経路に関する各種の情報を格納しています。 このクラスのプロパティの値を読み書きすることで各種の例外的な運賃計算に対応するスクリプトを作ることが出来ます(値を書き換えた場合、その結果が検索結果に反映されます)。
プロパティ名 | 型 | 項目 | 備考 |
---|---|---|---|
route | integer(配列) | 経路 | 経路の駅番号と路線番号を交互に格納した配列 |
lineAndSta | String(配列) | 経路 | 経路の駅名と路線名を交互に格納した配列 |
aprBranch | boolean | 分岐点適切性 | true: 適切な経路、false: 適切でない経路 |
fare | Object | 運賃 | 運賃格納クラス(CalcFares)のオブジェクト |
route、lineAndStaにはいずれも乗換駅と乗車路線の情報が配列として格納されています。ただし、routeには駅番号や路線番号が、lineAndStaには駅名や路線名が格納されている点で違いがあります。
【経路例】渋谷(駅番号0)→東横線(路線番号0)→自由が丘(駅番号6)→大井町線(路線番号4)→旗の台(駅番号64)→池上線(路線番号5)→五反田(駅番号71) の場合
要素 | データ |
---|---|
route[0] | 0 |
route[1] | 0 |
route[2] | 6 |
route[3] | 4 |
route[4] | 64 |
route[5] | 5 |
route[6] | 71 |
要素 | データ |
---|---|
lineAndSta[0] | 渋谷 |
lineAndSta[1] | 東横線 |
lineAndSta[2] | 自由が丘 |
lineAndSta[3] | 大井町線 |
lineAndSta[4] | 旗の台 |
lineAndSta[5] | 池上線 |
lineAndSta[6] | 五反田 |
aprBranchプロパティは、分岐点が存在するような鉄道において使用されるプロパティで、trueまたはfalseの値をとります。 適切な経路では値がtrueになります。 この値がfalseである場合は不適切な経路と見なされ、検索結果には表示されません。 通常はあまり気にする必要のないプロパティです。
fareプロパティは、ICカード運賃やきっぷ運賃、運賃計算キロを保持するプロパティで、各データは後述のCalcFaresクラスのインスタンスとして保持されます。
CalcFaresクラスが持つプロパティと、その格納している情報は下表の通りです。 各プロパティの値を書き換えると、その結果が検索結果に反映されます。
プロパティ名 | 型 | 項目 |
---|---|---|
killo | double(配列) | 運賃計算キロ |
ICFare | integer(配列) | ICカード運賃 |
TicketFare | integer(配列) | 普通乗車券運賃 |
killoは、運賃計算キロを配列として格納するプロパティです。killo[0]には全経路の合計キロが格納されます。killo[1]以降には、奇数番目に運賃規定番号、偶数番目にその運賃規定で計算されるキロ数が格納されます。
ICFareは、ICカード運賃を配列として格納するプロパティです。ICFare[0]には全経路の合計運賃が格納されます。ICFare[1]以降には、奇数番目に運賃規定番号、偶数番目にその運賃規定で計算される運賃が格納されます。
TicketFareは、ICカード運賃を配列として格納するプロパティです。TicketFare[0]には全経路の合計運賃が格納されます。TicketFare[1]以降には、奇数番目に運賃規定番号、偶数番目にその運賃規定で計算される経路毎の運賃が格納されます。
【経路例】元町・中華街→みなとみらい線(4.1km:運賃規定1)→横浜→東横線(17.2km:運賃規定0)→自由が丘→大井町線(6.3km:運賃規定0)→大井町 の場合
要素 | データ |
---|---|
killo[0] | 27.6 |
killo[1] | 1 |
killo[2] | 4.1 |
killo[3] | 0 |
killo[4] | 23.5(=17.2+6.3) |
要素 | データ |
---|---|
ICFare[0] | 477 |
ICFare[1] | 1 |
ICFare[2] | 210 |
ICFare[3] | 0 |
ICFare[4] | 267 |
要素 | データ |
---|---|
TicketFare[0] | 480 |
TicketFare[1] | 1 |
TicketFare[2] | 210 |
TicketFare[3] | 0 |
TicketFare[4] | 270 |