駅データベース(4) – 登録したデータの管理

作成中の駅データベースは、日本の全路線・全駅をカバーしていて、駅の位置情報や、位置情報サービスでチェックインするための情報を保持している。一方、作成した列車時刻表の路線・駅のデータは、駅データベースとは別立てになっている。(また、時刻表データを登録した路線・駅のみデータを保持しているので、データ的にも全路線をカバーしているわけではない。)

そこで、2つのデータを関連付けるツールを作成する。

時刻データベース(TT_xxx) <- 時刻表データ
| (駅)
駅データベース (RW_xxx) <- 駅データ.jp

駅データベースのほうがカバー範囲が広いので、参照の向きは時刻データベース->駅データベースとし、時刻データベースの駅テーブル(kind: TTStation)に新しいフィールド(property: rw_station_cd)を設けて、ここに駅データベースの「駅」のIDを保持する。

  • 画面イメージ: xttrwst01.html
    他の画面を流用して作成。
    xttrwst01_a01
  • 時刻表の路線データ(TT路線データ)をロード・表示する
    上右パネルに表示する。時刻表の路線データは、時刻データを登録した路線のみ。
  • 路線(TTデータ)を選択すると、対応する駅データベースの路線(RWデータ)を検索する
    選択(クリック)したTT路線に対応するRW路線を検索する。まだ路線同士の関連付けが行われていない場合は、searchRWLine()で関連付けを実施する。すでに関連付けが完了している場合は、駅リストを表示する。

    // JavaScript
    function pickupTTLine(ttLine){
      // TT路線がRW路線と関連付けされているかを判断
      if ( !(parseInt(ttLine.rw_line_cd) > 0) ){
        // 関連付けられていない場合
        searchRWLine(ttLine);
      } else {
        // ...
      }
    }
    
  • TT路線データをRW路線データに関連付ける
    結果が1路線だった場合は、RW路線の路線コードをTT路線に保存する。複数だった場合は、(このアプリではなく)手動で関連付けを実施する。
    現状、路線名で検索しているが、’磐越西線’のように類似の名称で複数の路線が登録されている場合がある。
  • TT駅データをRW駅データに関連付ける
    選択されている路線に含まれる駅(TT駅データ)に対応するRW駅を検索する。対応する駅が1つだった場合は、TT駅データにRW駅データの駅コードを保存する。
    現状、駅名で検索しているが、’安子ヶ島’と’安子ケ島’のように、両者で微妙に異なっている場合があり、自動マッチしないケースがある。

    // JavaScript
    
    // 対応するRW路線(駅DBデータ)の処理
    gRWCurLine = getLineByCode(ttLine.rw_line_cd);
    //// RW駅リストを取得
    gRWCurStations = filterStationByID(ttLine.rw_line_cd);
    
    for (var i = 0; i < gTTCurStations.length; i++) {
      if ( parseInt(gTTCurStations[i].rw_station_cd) > 0 ){
        // 対応するRW駅を紐付け済の場合
      } else {
        // 未処理の場合は対応するRW駅を検索する
        var _RWStation = searchRWStation(gRWCurStations, gTTCurStations[i]);
        
        if (_RWStation){
          // 見つかった場合はTT駅にRW駅の駅コードを保存する
          addRWStationcd(gTTCurStations[i], _RWStation.station_cd);
        }
      }
    }
    
  • 画面例
    ページを開くと、時刻表の路線データをロードする。路線を選択したタイミングで対応する駅データベースの路線データとの関連付けを実施する。
    xttrwst01_a02
カテゴリー: Development, Location Service タグ: パーマリンク