予定表(自動チェックイン)アプリや、列車時刻表を作っていて、鉄道駅のデータベースが欲しいと感じたので、既存サービスを利用しつつ、自前の簡単なデータベースを作ってみる。想定しているのは、
・時刻表アプリを使って乗車予定を作成し、
・その結果をスケジューラに自動登録し、
・予定時刻になったら位置情報サービスに自動チェックインする
という流れで、「訪問予定地(駅)」と「位置情報サービスの地点ID」を紐付けるのが今回の目的。
元になる路線や駅のデータとして、「駅データ.jp」が提供しているものを利用させていただく。
まず、CSV形式で提供される以下のデータを取り込む。
- 事業者マスタ
JSON形式に変換し、サーバに配置する(ファイル名:rw_company.json、サイズ:58kb)。 - 路線マスタ
JSON形式に変換し、サーバに配置する(ファイル名:rw_line.json、サイズ:231kb)。 - 駅マスタ
JSON形式に変換し、サーバに配置する(ファイル名:rw_station.json、サイズ:3,215kb)。あわせて位置情報サービス用の項目を付加し、データストアにも保存する。(JSONファイルは検索用のため、いずれ廃止する想定。) - 各マスタの関連(駅.jpサイトより引用)
取り込んだデータのビューアを作成する。実装サンプルはこちら。(動作は若干不安定。)
- 全体イメージ
上パネルで「事業者名」-「路線名」-「駅名」の絞込み検索を行う。各項目は指定した文字列で検索を行うこともできる。路線名まで絞り込んだら、左パネルに駅リストを、中央パネルに路線地図を表示する。右パネルには選択した駅の詳細情報を表示する。
- 事業者・路線・駅検索(リスト)
各マスタをコンボボックスにマッピングし、絞込み検索を行う。
・事業者を選択中
・路線を選択中
選択が完了すると、左パネルに駅のリストを、中央パネルに駅の地図を表示する。(全ての駅が表示されるように縮尺を変更する。)
・駅を選択中
駅の選択は左パネルのリストからも可能。選択した駅の情報を右パネルに表示する。また選択した駅を地図の中心とし、縮尺を変更する。
- 乗換駅(同一駅)の表示
駅は路線に属しているが、(1)同一改札内の駅、(2)改札が異なっていても乗換可能な駅、については路線が異なっていても「同じ駅グループコード」が与えられている。これを使って、駅が選択されたら、同一駅を検索し上パネルの右に表示する。
上記の例では、「函館本線の函館駅」に対し、「江差線」「函館市電2系統」「函館市電5系統」の函館駅を表示している。 - 事業者・路線・駅検索(文字列)
コンボボックスの右の検索ボックスで、任意の文字列(部分一致)で検索できる。
・「東」を含む事業者を検索中
・「東」を含む路線を検索中
・「大阪」を含む駅を検索中-乗換駅(同一駅)もあわせて表示