ブルベのルートデータの間引き

以前書いたように,ブルベのルートデータを作るのに,RideWithGPSで引いたTRKデータを,轍とカシミール3DでRTEデータに変換するようにしています. いずれもよく出来たツールでありがたく使わせてもらっていますが,やはり複数ソフトを行き来するのは手間がかかって大変です.そこで,TRKデータを一括して間引いてRTEデータに変換するツールを自作しています. TRKデータをRTEデータに変換するのは簡単なのですが,間引きのアルゴリズムが課題です.私が使っているeTrex 30xではルートデータは最大250点なので効率よく間引かないと実用的なルートデータになりません. 検索するといくつかアルゴリズムが見つかりますが,ブルベで重要なのは曲がり角を確実に残すこと.そこで以下のようなアルゴリズムを考えてみました.なす角が180度近い点は捨ててしまう作戦です.

while ポイント数 > ターゲット do 隣り合う3点のポイントのなす角を計算 なす角が最小となるポイントを除去 end

これで実用に足るといえば足るのですが,峠道にポイント数を割り振り過ぎている感があります. そこで,ポイント間の距離を勘案すべく,以下の様にしてみました.内積の逆数にすることで,隣り合う点と距離が離れた点は捨てにくくする作戦です.

while ポイント数 > ターゲット do 隣り合う3点のポイントの内積の逆数を計算 なす角が最小となるポイントを除去 end

試してみたところ,これでは曲がり角を保存できず,あまり実用的ではなさそうです. もう少し考えてみます.