2017-06-01 12 views
3

(ユニオン)ジオメトリを結合するコードを記述しました。私はそれをJava8ストリームCollectorにラップしました。その中にそれだけで労働組合の形状にGeometry#unionを使用しています。JTSでは結合ジオメトリが高速ですか?

geometries[0] = geometries[0].union(geometry); 

残念ながら、それはかなり遅い動作します。

prepared geometryやその他のハッキングの使用によって高速化することはできますか?

UPDATE

ジオメトリはこのようなものです:enter image description here

と、彼らは非常に異なるスケールです。

+0

いくつかのデータを提供できますか?どのくらいの幾何学的形状でどれくらい遅いですか? –

+0

私は合計で約8000の図形を持っていますが、それらを階層的に結合するために複雑なツリーを構築しています(地図、ブロック、国勢調査エリアなどの領域で、さまざまなズームを処理したい)。したがって、それらをすべて処理するには40分以上かかることになります。 – Dims

答えて

1

それぞれのジオメトリを結果に順番にマージするため、各ユニオンで大きくなる可能性があります。

ユニーアユニオンでは、空間インデックスを使用してジオメトリをクラスタ化し、階層化してマージするため、パフォーマンスが向上します。残念ながら、これはJavaストリームの連続性にはうまく機能しない可能性があります。

PreparedGeometryは、共用体のようなオーバーレイ操作のスピードアップを提供しません。

関連する問題