Boost rtree.bounds():让更多框 and/or 访问其结构

Boost rtree.bounds(): getting more boxes and/or accessing to its structure

目前我正在使用分布式网格进行数值模拟:我正在使用由边界框组成的boost rtree作为搜索工具。我有很多边界框,每个边界框都有一个标签(一个无符号整数:"owns" 单元格的过程)。

在全球范围内,我需要更多 "imprecise" 描述:因此我使用 rtree.bounds() 然后通过全球通信发送此框。 不幸的是,这并不总是有效,因为标签是通过以下方式生成的:

  1. 具有相同标签的盒子都聚集在一起:在这种情况下它就像一个魅力。
  2. 具有相同标签的框形成两个 "connected" 簇:在这种情况下,额外的空 space 意味着以后的计算将产生大量无用的通信

由于 rtree 由边界框组成,我试图访问 rtree 结构,以便我可以获得两个或更多(可能很少)粗边界框(rtree 的 first/second 层) .这可能吗?或者是否有快速算法来拆分 rtree.bounds() 框?

目前我正在切割边界框 "by hand",但由于我已经将它们放在树中,我认为这是对计算能力的浪费。

编辑:我发现这个论坛 http://boost-geometry.203548.n3.nabble.com/How-could-I-get-nodes-MBRs-of-the-R-Tree-td4026812.html 似乎是我问题的答案。我会尝试使用它,如果解决了,post解决方案:)

如您所见,有一种访问节点的方法,但它不是 R 树官方接口的一部分。您必须实现一个遍历 R 树的访问者,并使用 boost::geometry::index::detail::rtree::utilities::view.

将其应用于 R 树

看看 this visitor traversing the R-tree depth-first and checking at each level if bounding box of a node contains all elements from the lower level. Here 你可以看到这个访问者是如何应用于 R 树的。