【发布时间】:2020-02-12 00:00:06
【问题描述】:
我有一个由几个 Boost.Geometry 多边形组成的数组,我需要将它们合并成一个多边形。我已经成功地实现了将每个连续的多边形与前两个的并集合并的东西(只是循环它们并合并另一个多边形)。
multi_polygon polygons; // an array of initial polygons
multi_polygon border; // the unioned polygons
for (polygon p : polygons) {
// add another polygon each iteration
multi_polygon tmp_poly;
union_(border, p, tmp_poly);
border = tmp_poly;
}
但是,这需要相当长的时间来执行。我听说在一个视频中提到了assign 函数可以用于此,但没有详细说明如何使用,我也找不到关于此的任何其他内容。我怎样才能加快这个过程?
【问题讨论】:
-
也许可以实现一个更好的算法,通过线扫描同时合并所有多边形。如果做不到这一点,请尝试将它们分组到二叉树中(合并 1 和 2,合并 3 和 4,合并结果),这可能会稍微快一些。
标签: c++ boost boost-geometry