画面に表示する用にトラックの点を間引く

前回のエントリ GPSログ(トラック)の点を間引く でGPSログを保存する方法として「間引かれた点が設定した幅を越えてハミ出さないようにする」ってのを書きました。

この方法は地図の縮尺に合わせた間引き加減のトラックを用意するってのにちょうどよかったりします。

例えば20万分の1地勢図上にGPSログをプロットしていくことを考えます。
この縮尺だと地図上の0.1mmは実際の20mになりますので、20m以内の軌跡のフレは地図上の0.1mm以内のフレということでもうペンの滲みみたいなもんです。なのでこの縮尺においては前回のエントリの方法で

 幅20mを閾値として点を間引く

とすれば、間引かれたログでも元のログとほとんど変わらない形状を地図上にプロットできることが保証されます。他の縮尺の場合でも、地図上での許容幅を考えてそれに合わせてログのフレ幅の閾値を設定すればよい。

これが等時間や等距離での間引きだとこうはいかず、どの縮尺の時にどれくらいの間隔に設定したらいいのかは勘や経験則に頼る他ありません。

タイルマップに合わせてズームレベル毎に最適な点数の軌跡を用意する場合は、ズームレベルがひとつ下がると縮尺が半分なので倍の幅の閾値で間引けばいいかんじです。
名称未設定-8-のコピー
黄→青→赤→緑、と順に倍の幅で点を間引いた例。それぞれを例えばz=16、z=15、z=14、z=13のズームレベルの時に表示すれば、閾値の幅が画面上で一定になる。

この方法の欠点は

  間引かれる点の数をコントロールしずらい

ってところで、等時間や等距離で間引く場合は「半分の縮尺用に点の数を1/4に減らす」ってのは楽にやれますが、この方法だと幅wを倍にしても点の数が1/2とか1/4に減るのかというとその辺の保証が全然ない。「縮尺が変わっても点の密度を一定にしたい」と思っても困ったことになる。

でももともと等時間や等距離でやるよりも少ない点数で十分な軌跡を表示できるし、実際実装してやってみた印象では広域用に幅を大きくするとそれに見合った分以上に点の数が減ってくれるカンジがします。(個人的な感想です)