Polylineを良い感じに間引きする


八王子防犯マップ for Android にて、市境を表示する機能を追加したところ、市境のpolylineデータが8000ポイント以上になり、アプリがもっさり動作になってしまいました。

そのため、良い感じに間引いてくれるアルゴリズムを探したところ、douglas-peuckerアルゴリズムを利用するのが一般的のようです。
手頃な実装がないかと探すと、C#のサンプルをCodeProject内に発見。


A C# Implementation of Douglas-Peucker Line Approximation Algorithm


上記を参考に、ちょっとしたフィルタプログラムを書いて地点数を1/10程度にまで間引いたところ、描画速度は劇的に改善しました。表示品質も、拡大するとガクガクするけれど、目安としては十分に思える物に見えます。

device-2012-11-27-131122

地図アプリなどで、いろいろと応用できそうです。

というわけで、上記の内容が果たしてうまくいったかは、八王子防犯マップ for Android をインストールして試してみてください。

en_app_rgb_wo_60

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です