データファイルは、faredio2.0ディレクトリ直下のdatasディレクトリに保存します。 サンプルファイル(keikyu.js、metro.js、odakyu.js、tokyu.js)が入っていますので、これらのファイルを参考にしていただけると分かりやすいと思います。
本頁では、京都市営地下鉄のデータファイル(kyotoSubway.js)を例に取り上げながらデータファイルの作成方法を説明します。
記述例Code01〜Code04を順に1つのファイルに記述すると、そのまま京都市営地下鉄のデータファイルになります(一部省略部分は補う必要があります)。
型の名前 | 説明 |
---|---|
String | 文字列型です。ダブルクォーテーション(")記号で囲って記述します。 |
integer | 整数型です。半角数字で記述します。 前後をダブルクォーテーションで囲むことはありません。 |
double | 小数型です。半角数字で記述します。整数型と違い小数が使用できます。 |
boolean | 真偽値型です。trueまたはfalseの値をとります。 |
データファイルの冒頭で、ファイルの基本的な情報を記述します。
変数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
dataName | String | データの名称 | 必須 |
dataFileName | String | データファイル名 | 必須 |
userCalc | String | ユーザー指定スクリプトのファイル名 | ユーザー指定スクリプトを使用しない場合は記述不要 |
MAXLINE | integer | 最大路線数 | 最大何路線使用する経路まで検索するか指定(何も指定しなければ5路線) |
//記述例:kyotoSubway.js -Code01 dataName = "京都市営地下鉄"; dataFileName = "kyotoSubway.js"; MAXLINE = 2;
次に駅を追加します。下記のように記述します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_name | String | 駅名 | 必須 |
_roman | String | 駅名のローマ字表記 | 必須(空指定("")も可) |
_numberling | String | 駅ナンバリング | 必須(空指定("")も可) |
なお、現状では駅ナンバリングは各駅に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です。
路線を追加するには、まず路線インスタンスを作成する必要があります。路線インスタンスを作成するには、次のように記述します。
[variableName1]〜[variableName3]には、変数名として任意のアルファベットの文字列を指定します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_name | String | 路線名 | 必須 |
_fareRule | integer | 適用する運賃規定の番号 | 必須(1種類のテーブルしか利用しないなら0) |
_walk | boolean | 徒歩連絡経路のフラグ | 必ずfalseを指定 |
_color | String | 路線カラー | 路線カラーを16進RGB値か色名で指定(省略可) |
路線カラーを指定すると、検索結果表示時にその路線のカラーで経路が表示されます。何も指定しなければデフォルト色(灰色)になります。
//記述例:烏丸線の路線インスタンスを作成する場合 var Karasu = new Line("烏丸線", 0, false, "#00b0b3"); var KstaList = new Array(); var KBS = new Array();
3.で作成した路線が通る駅を指定します。
通る駅の指定の仕方には、以下の4種類の方法があります。
ローマ字表記または駅番号による指定は、それらが2.で指定されている場合のみ使用できます。
[variableName2]には3.で指定した路線インスタンスの変数名を入力します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_staIdx | integer | 駅番号 | 2.でデータテスター実行時に駅一覧に表示される番号 |
_staName | String | 駅名 | 2.で指定した駅名 |
_roman | String | ローマ字表記 | 2.で指定した駅名のローマ字表記 |
_numberling | String | 駅ナンバリング | 2.で指定した駅ナンバリング |
また、駅間キロは次の構文で指定します。
[variableName3]には3.で指定した路線インスタンスの変数名を入力します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_killo | double | 駅間キロ | 駅間キロ(単位: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")); //北山
路線インスタンスを作成したら、それらを登録する必要があります。以下のコードで登録できます。
[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.で指定したものと一字でも異なるとエラーになりますので、確認してみてください。
正しく作成されていると、「動作確認」の項目が以下のような画面になります。
まず、以下の構文で運賃規定のインスタンスを作成します。
[variableName4]には、変数名として任意のアルファベットの文字列を指定します。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_ICmode | integer | 普通乗車券運賃の端数処理 | 0、1、2のいずれかの値で指定 |
0:ICカード運賃の円単位の部分を切り捨て | |||
1:ICカード運賃の円単位の部分を切り上げ | |||
2:ICカード運賃の円単位の部分を四捨五入 |
次に、対キロ区間制のキロ階級毎の運賃を設定します。最大距離をわずかにでも超える経路は次階級の運賃で計算されます。
引数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
_minK | integer | 階級の最小キロ | 必須 |
_maxK | integer | 階級の最大キロ | 必須 |
_fare | integer | その階級のICカード運賃 | 必須 |
一通り階級毎の運賃の設定が完了したら、最後にインスタンスの登録を行います。
変数名 | 型 | 設定項目 | 備考 |
---|---|---|---|
fareRuleNum | integer | 運賃規定の番号 | 必須(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に運賃規定を登録
正しく記述されていれば、データファイルテスターで次のように表示されます。
以上で、データファイルの作成は完了です。
テスターで動作確認を行い、正しい経路・運賃が表示されるか確認しましょう。
運賃計算の例外指定の項目を参照して下さい。