[OSGeoJapan-discuss] Douglas-Peukerなどを用いた簡素化についてのアルゴリズムを教えてください。

wakasa masao machio @ mac.com
2010年 6月 26日 (土) 01:32:33 EDT


若狭です。

ラインの単純化を行うPostGISのST_SimplifyのようなものをJava及びJavaScriptの2言語で行おうとうしています。
Douglas-Peukerを用いてるというのはマニュアルにもあるので、このアルゴリズムが実装出来ればいいのかなと思っています。
ですが、Googleで検索しても、アルゴリズムとしては紹介されるものの、どのようなものなのかが探しきれませんでした。
なんとか下記のようなActionScriptで作られたものを見つけて、このコードを元に移植してみました。
http://www.lostinactionscript.com/blog/index.php/2007/07/11/douglas-peuker-line-generalization/

ところが、同じデータを投入したところでST_Simplifyと自作プログラムの性能の差が出ました。
ST_Simplifyの方が5倍以上圧縮されなおかつ綺麗にできています。
上記の参考にしたプログラムは、ポイントポイントに単にフラグを立てて類似ものを消すという間引きの動作のようですが、
ST_Simplifyで出来上がったものを見ると、渡したデータでは存在してない点にポイントが打たれたり、
似たような図形を描画するためにという動作に見えます。
参考にしたコードがDouglas-Peukerを実装されてるのかどうかも定かではないのでなんですが。

なので、ご存知でしたら
・ST_Simplifyに近い簡略化ができるようなアルゴリズム
・Douglas-Peukerを利用したライブラリやソースコードなど
はどのようなものがあるでしょうか?

私自身このあたりの学術的な知識が無く、ご存知の方がいらっしゃいましたら、お教えください。

ちなみにPostGISを使えば解決なのですが
・Javaで作る必要性は、簡略化の為にSQL書くのは、速度的にも負荷的にも高くなってしまう
・JSで作る必要性は、大きめのデータを渡してフロント側で簡略化し表示負荷及びネットワーク負荷を下げたい
という理由でなんとかしたい状態です。

よろしくお願いします。

------------
wakasa masao


OSGeoJapan-discuss メーリングリストの案内