Faredio 2.0 Official Web

データファイルの作成

データファイルは、faredio2.0ディレクトリ直下のdatasディレクトリに保存します。 サンプルファイル(keikyu.js、metro.js、odakyu.js、tokyu.js)が入っていますので、これらのファイルを参考にしていただけると分かりやすいと思います。

本頁では、京都市営地下鉄のデータファイル(kyotoSubway.js)を例に取り上げながらデータファイルの作成方法を説明します。
記述例Code01〜Code04を順に1つのファイルに記述すると、そのまま京都市営地下鉄のデータファイルになります(一部省略部分は補う必要があります)。

データファイル作成時の注意点

  • データファイルは、JavaScriptファイルになります。文法はJavaScriptの文法に従います。
  • ファイル名の拡張子は".js"とします。
  • 行の末尾は必ずセミコロン";"で終わるようにします。
  • コメント(動作に影響しない注釈)は"//"で始め、その行の終わりまでです。
  • "/*"と"*/"で囲まれた部分も同じくコメントになります。
  • 英字、数字、スペース、セミコロンやその他記号はすべて半角で入力します。
  • 大文字と小文字は区別されます。また、変数名に日本語は使用できません。

型について

型の名前説明
String文字列型です。ダブルクォーテーション(")記号で囲って記述します。
integer整数型です。半角数字で記述します。
前後をダブルクォーテーションで囲むことはありません。
double小数型です。半角数字で記述します。整数型と違い小数が使用できます。
boolean真偽値型です。trueまたはfalseの値をとります。

作成手順

1.基本情報の指定

データファイルの冒頭で、ファイルの基本的な情報を記述します。

変数名設定項目備考
dataNameStringデータの名称必須
dataFileNameStringデータファイル名必須
userCalcStringユーザー指定スクリプトのファイル名ユーザー指定スクリプトを使用しない場合は記述不要
MAXLINEinteger最大路線数最大何路線使用する経路まで検索するか指定(何も指定しなければ5路線)
//記述例:kyotoSubway.js -Code01

dataName = "京都市営地下鉄";
dataFileName = "kyotoSubway.js";
MAXLINE = 2;

2.駅の追加

次に駅を追加します。下記のように記述します。

stationList.addToStaList(new Station(_name, _roman, _numberling));
または
stationList.stationList.push(new Station(_name, _roman, _numberling));
引数名設定項目備考
_nameString駅名必須
_romanString駅名のローマ字表記必須(空指定("")も可)
_numberlingString駅ナンバリング必須(空指定("")も可)

なお、現状では駅ナンバリングは各駅に1種類のみ設定できます。同一駅で路線ごとに異なる駅ナンバリングを割り当てることは出来ません。

//記述例:国際会館、松ヶ崎、北山の3駅を追加する場合

stationList.addToStaList(new Station("国際会館", "Kokusaikaikan", "K01"));
stationList.addToStaList(new Station("松ヶ崎", "Matsugasaki", "K02"));
stationList.addToStaList(new Station("北山", "Kitayama", "K03"));
//記述例:kyotoSubway.js -Code02
//京都市営地下鉄の駅、全駅を追加した例

//烏丸線の駅
stationList.addToStaList(new Station("国際会館", "Kokusaikaikan", "K01"));
stationList.addToStaList(new Station("松ヶ崎", "Matsugasaki", "K02"));
stationList.addToStaList(new Station("北山", "Kitayama", "K03"));
//…
stationList.addToStaList(new Station("烏丸御池", "Karasuma-Oike", "K08"));
//…
stationList.addToStaList(new Station("竹田", "Takeda", "K15"));

//東西線の駅
stationList.addToStaList(new Station("六地蔵", "Rokujizo", "T01"));
stationList.addToStaList(new Station("石田", "Ishida", "T02"));
stationList.addToStaList(new Station("醍醐", "Daigo", "T03"));
//…
//烏丸御池←先ほど、烏丸線の駅を記述したときに既に追加されているので書かない
//…
stationList.addToStaList(new Station("太秦天神川", "Uzumasa-Tenjingawa", "T17"));

ここまでコードを記述したら、いったんデータファイルテスターでデータが正しく記述されているか確認しましょう。
データファイルテスターの「駅一覧」に、追加した駅全駅が正しく表示されていますか?
もし表示されていなければ、どこかに記述の誤りがあります。 全角・半角を打ち間違えていないか、ダブルクォーテーションでの囲い忘れがないか、カッコの数は正しいか、行末のセミコロンを忘れていないかなどを確認してみましょう。
下図のように表示されればOKです。

駅一覧が正しく表示されている場合の例

3.路線の追加(1) 路線インスタンスの作成

路線を追加するには、まず路線インスタンスを作成する必要があります。路線インスタンスを作成するには、次のように記述します。

var [variableName1] = new Line(_name, _fareRule, _walk, _color);
var [variableName2] = new Array();
var [variableName3] = new Array();

[variableName1][variableName3]には、変数名として任意のアルファベットの文字列を指定します。

引数名設定項目備考
_nameString路線名必須
_fareRuleinteger適用する運賃規定の番号必須(1種類のテーブルしか利用しないなら0)
_walkboolean徒歩連絡経路のフラグ必ずfalseを指定
_colorString路線カラー路線カラーを16進RGB値か色名で指定(省略可)

路線カラーを指定すると、検索結果表示時にその路線のカラーで経路が表示されます。何も指定しなければデフォルト色(灰色)になります。

//記述例:烏丸線の路線インスタンスを作成する場合

var Karasu = new Line("烏丸線", 0, false, "#00b0b3");
var KstaList = new Array();
var KBS = new Array();

4.路線の追加(2) 路線上に存在する駅の指定

3.で作成した路線が通る駅を指定します。
通る駅の指定の仕方には、以下の4種類の方法があります。 ローマ字表記または駅番号による指定は、それらが2.で指定されている場合のみ使用できます。

【直接駅番号を指定する方法】
[variableName2].push(_staIdx);
【駅名で指定する方法】
[variableName2].push(stationList.searchFromName(_staName));
【ローマ字表記で指定する方法】
[variableName2].push(stationList.searchFromRoman(_roman));
【駅番号で指定する方法】
[variableName2].push(stationList.searchFromNumberling(_numberling));

[variableName2]には3.で指定した路線インスタンスの変数名を入力します。

引数名設定項目備考
_staIdxinteger駅番号2.でデータテスター実行時に駅一覧に表示される番号
_staNameString駅名2.で指定した駅名
_romanStringローマ字表記2.で指定した駅名のローマ字表記
_numberlingString駅ナンバリング2.で指定した駅ナンバリング

また、駅間キロは次の構文で指定します。

[variableName3].push(_killo);

[variableName3]には3.で指定した路線インスタンスの変数名を入力します。

引数名設定項目備考
_killodouble駅間キロ駅間キロ(単位:km)を指定
//記述例:烏丸線に国際会館、松ヶ崎、北山の3駅を設定する場合

KstaList.push(stationList.searchFromRoman("Kokusaikaikan"));	//国際会館
KBS.push(1.6);		//国際会館〜松ヶ崎間のキロ
KstaList.push(stationList.searchFromRoman("Matsugasaki"));	//松ヶ崎
KBS.push(1.0);		//松ヶ崎〜北山間のキロ
KstaList.push(stationList.searchFromRoman("Kitayama"));		//北山

5.路線の追加(3) 路線インスタンスの登録

路線インスタンスを作成したら、それらを登録する必要があります。以下のコードで登録できます。

[variableName1].setSta([variableName2], [variableName3]);
lines.push([variableName1]);

[variableName1][variableName3]には3.で指定した路線インスタンスの変数名を入力します。

//記述例:烏丸線の路線インスタンスを登録する場合

Karasu.setSta(KstaList, KBS);
lines.push(Karasu);
//記述例:kyotoSubway.js -Code03
//烏丸線、東西線の路線インスタンス作成・登録例

//■■■烏丸線■■■

//インスタンス作成
var Karasu = new Line("烏丸線", 0, false, "#00b0b3");
var KstaList = new Array();
var KBS = new Array();

//駅の指定
KstaList.push(stationList.searchFromRoman("Kokusaikaikan"));	//国際会館
KBS.push(1.6);		//国際会館〜松ヶ崎間のキロ
KstaList.push(stationList.searchFromRoman("Matsugasaki"));	//松ヶ崎
KBS.push(1.0);		//松ヶ崎〜北山間のキロ
KstaList.push(stationList.searchFromRoman("Kitayama"));		//北山
KBS.push(1.2);		//北山〜北大路間のキロ
//…
KstaList.push(stationList.searchFromRoman("Karasuma-Oike"));	//烏丸御池
KBS.push(0.9);		//烏丸御池〜四条間のキロ
//…
KstaList.push(stationList.searchFromRoman("Takeda"));		//竹田

//インスタンス登録
Karasu.setSta(KstaList, KBS);
lines.push(Karasu);

//■■■東西線■■■

//インスタンス作成
var Tozai = new Line("東西線", 0, false, "#ee1c25");
var TstaList = new Array();
var TBS = new Array();

//駅の指定
TstaList.push(stationList.searchFromRoman("Rokujizo"));		//六地蔵
TBS.push(1.1);		//六地蔵〜石田間のキロ
TstaList.push(stationList.searchFromRoman("Ishida"));		//石田
TBS.push(1.3);		//石田〜醍醐間のキロ
TstaList.push(stationList.searchFromRoman("Daigo"));		//醍醐
TBS.push(1.2);		//醍醐〜小野間のキロ
//…
TstaList.push(stationList.searchFromRoman("Karasuma-Oike"));	//烏丸御池
TBS.push(0.8);		//烏丸御池〜二条城前間のキロ
//…
TstaList.push(stationList.searchFromRoman("Uzumasa-Tenjingawa"));//太秦天神川

//インスタンス登録
Tozai.setSta(TstaList, TBS);
lines.push(Tozai);

路線インスタンスを登録したら、再びデータテスターでデータが正しく表示されるか確認してみましょう。
正しく作成されていれば「動作確認」の項目に各路線ごとの駅一覧がリンク付きで表示されます。
途中で表が途切れている場合は、途切れた箇所の記述に誤りがあります。 ローマ字表記や駅ナンバリングが2.で指定したものと一字でも異なるとエラーになりますので、確認してみてください。

正しく作成されていると、「動作確認」の項目が以下のような画面になります。

駅一覧が正しく表示されている場合の例

6.運賃規定の設定

まず、以下の構文で運賃規定のインスタンスを作成します。

var [variableName4] = new FareTable(_ICmode);

[variableName4]には、変数名として任意のアルファベットの文字列を指定します。

引数名設定項目備考
_ICmodeinteger普通乗車券運賃の端数処理0、1、2のいずれかの値で指定
0:ICカード運賃の円単位の部分を切り捨て
1:ICカード運賃の円単位の部分を切り上げ
2:ICカード運賃の円単位の部分を四捨五入

次に、対キロ区間制のキロ階級毎の運賃を設定します。最大距離をわずかにでも超える経路は次階級の運賃で計算されます。

var [variableName4].fareRows.push(new FareRow(_minK, _maxK, _fare));
引数名設定項目備考
_minKinteger階級の最小キロ必須
_maxKinteger階級の最大キロ必須
_fareintegerその階級のICカード運賃必須

一通り階級毎の運賃の設定が完了したら、最後にインスタンスの登録を行います。

fareRule[fareRuleNum] = [variableName4];
変数名設定項目備考
fareRuleNuminteger運賃規定の番号必須(0から始まる整数値)
//記述例:kyotoSubway.js -Code04
//運賃規定(番号0)の登録例

//インスタンス作成
var normRule = new FareTable(1);	//ICカード運賃は円単位切り上げに設定
//各階級の運賃を設定
normRule.fareRows.push(new FareRow(1, 3, 210));
normRule.fareRows.push(new FareRow(4, 7, 260));
normRule.fareRows.push(new FareRow(8, 11, 290));
normRule.fareRows.push(new FareRow(12, 15, 320));
normRule.fareRows.push(new FareRow(16, 100, 350));
//最高額の階級では最大キロの値を大きめにとると安全↑
//インスタンス登録
fareRule[0] = normRule;			//運賃規定番号0に運賃規定を登録

正しく記述されていれば、データファイルテスターで次のように表示されます。

運賃規定が正しく表示されている場合の例

7.データファイルの動作確認

以上で、データファイルの作成は完了です。
テスターで動作確認を行い、正しい経路・運賃が表示されるか確認しましょう。

8.特定運賃・加算運賃・徒歩連絡等の設定

運賃計算の例外指定の項目を参照して下さい。

Copyright(C) tamantrain. All rights reserved.
本サイトおよびFaredio 2.0のシステムは、最新版のFirefox、Opera、IEで動作確認を行っています。