在 JTS 中联合几何更快?
Union geometries faster in JTS?
我编写了代码来连接(合并)几何图形。我将它包装成 Java8 流 Collector. Inside it it just uses Geometry#union 以联合几何:
geometries[0] = geometries[0].union(geometry);
不幸的是,它运行得相当慢。
是否可以通过使用 prepared geometry 或其他技巧来加快速度?
更新
几何图形是这样的:
而且它们的规模非常不同。
考虑使用一元联合。参见 http://bjornharrtell.github.io/jsts/1.2.1/apidocs/org/locationtech/jts/operation/union/UnaryUnionOp.html
您所述的方法会很慢,因为它将每个几何按顺序合并到结果中,每个并集可能会变得越来越大。
一元并集使用空间索引对几何图形进行聚类并按层次合并它们,从而提供更好的性能。不幸的是,这可能不适用于 Java 流的顺序性质。
PreparedGeometry 不为合并等叠加操作提供任何加速。
我编写了代码来连接(合并)几何图形。我将它包装成 Java8 流 Collector. Inside it it just uses Geometry#union 以联合几何:
geometries[0] = geometries[0].union(geometry);
不幸的是,它运行得相当慢。
是否可以通过使用 prepared geometry 或其他技巧来加快速度?
更新
几何图形是这样的:
而且它们的规模非常不同。
考虑使用一元联合。参见 http://bjornharrtell.github.io/jsts/1.2.1/apidocs/org/locationtech/jts/operation/union/UnaryUnionOp.html
您所述的方法会很慢,因为它将每个几何按顺序合并到结果中,每个并集可能会变得越来越大。
一元并集使用空间索引对几何图形进行聚类并按层次合并它们,从而提供更好的性能。不幸的是,这可能不适用于 Java 流的顺序性质。
PreparedGeometry 不为合并等叠加操作提供任何加速。