Java 联合几何体在JTS中更快?

Java 联合几何体在JTS中更快?,java,optimization,jts,set-union,Java,Optimization,Jts,Set Union,我编写了连接(并集)几何体的代码。我把它包装成Java8流。在其内部,它仅用于合并几何图形: geometries[0] = geometries[0].union(geometry); 不幸的是,它的工作相当缓慢 有没有可能通过使用或其他一些黑客使其更快 更新 几何图形如下所示: 它们的尺度非常不同。考虑使用一元并集。请参见您所述的方法会很慢,因为它会按顺序将每个几何体合并到结果中,随着每次合并,结果可能会越来越大 一元联合使用空间索引对几何图形进行聚类并按层次合并,从而提供更好的性能。不幸

我编写了连接(并集)几何体的代码。我把它包装成Java8流。在其内部,它仅用于合并几何图形:

geometries[0] = geometries[0].union(geometry);
不幸的是,它的工作相当缓慢

有没有可能通过使用或其他一些黑客使其更快

更新

几何图形如下所示:


它们的尺度非常不同。

考虑使用一元并集。请参见

您所述的方法会很慢,因为它会按顺序将每个几何体合并到结果中,随着每次合并,结果可能会越来越大

一元联合使用空间索引对几何图形进行聚类并按层次合并,从而提供更好的性能。不幸的是,对于Java流的顺序性质,这可能无法很好地工作


PreparedGeometry不提供任何叠加操作(如union)的加速功能。

您能提供一些数据吗?多少几何图形的速度有多慢?我总共有大约8000个几何图形,但我构建了复杂的树来按层次连接它们(这些是地图上的区域、块、普查区域等,我想处理不同的缩放),连接大约每秒3个几何图形。所以,我需要40多分钟来处理它们。我不经常使用JTS,但可能有一个空间索引功能。您对此进行了测试吗?这有助于联合吗?它应该有助于计算任何空间运算,例如交叉、重叠……我也遇到了同样的问题,使用UnaryUnionOp,运算速度至少快7倍。谢谢@Ohlsen1980