JA:Average tracks

From OpenStreetMap Wiki
Jump to navigation Jump to search

複数の不正確なトラックから精度をあげたトラックを作成するなら、複数のGPSトラックを「ベストフィットのライン」に結合/マージして「平均化する」という便利な方法があります。以下は、Michiel Faberさんが作成されたRスクリプトを使用したプロセスです。Michielさんによると、完璧な方法ではないけれど、うまくいくということです。彼の言う方法とはTopoFusionソフトウェアと、もっと洗練された方法をまとめた論文のことです(訳注:TopoFusion の英語版解説はこちら)。この課題は、gsbabelのその他メーリングリストでも議論しています。

このスクリプトには、github.comに専用のリポジトリがあります。

スクリプトは完成していないので、くれぐれも出力結果を鵜呑みにせず、平均化されたトラックに異常が含まれていることを前提に、平均的なトラックでもじっくり確認してから利用する必要があります。

前提条件

  1. 端末を利用可能にします。
  2. スクリプトを実行するには、Rソフトウェアパッケージが必要です。Rプロジェクトのダウンロードページを参照するか、以下の方法を試します。
UbuntuにRをインストールするには、端末で次のように記述します(ターミナルウィンドウは開いたままにします。後でまた使用するからです)。
sudo apt-get update
sudo apt-get install r-base-core

使い方

  1. 平均化するトラックをクリーンアップします。基本的に同じルートに沿っていることが必要で、片方のトラックに迂回路があり、他のトラックにない場合、それは「平均化した」迂回路としては無意味なことに注意してください。
  2. Rスクリプトはgithub.comから、作業するディレクトリにダウンロードします。(入力ファイルを置いてある場所です)。
  3. 入力ファイルをcsvに変換:gpsbabel -i gpx -f mygpstrack1.gpx -o csv -F mygpstrack1.csv
  4. スクリプトを実行: R --no-save < average-tracks.R
    • 結果の「平均トラック」は averageTrack.csvという名前になります
  5. csvをgpxに戻す: gpsbabel -i csv -f averageTrack.csv -x transform,trk=wpt,del -o gpx -F averageTrack.gpx

完了です!

開発をすすめるには

より洗練された方法を gpsbabel の「平均化」フィルターとして使うと改善できるかもしれませんが、短期的には、Michielさんのスクリプトを使いやすくする方法として、bash スクリプト(またはその他スクリプト)でラップすると、ファイル処理と gpsbabel を使用した gpx-csv-gpx 変換の処理も難しくありません。

github で問題報告と機能のリクエストをしてください

イラストについて

平均的なトラックを示すjosmのスクリーンショット。 赤い線は平均トラック、両側の2本はソースのトラックを示します。

平均的なトラックを示すjosmのスクリーンショット。 赤い線は平均トラック、両側の2本はソースのトラックを示す。

歴史

関連項目