目前我正在使用分布式网格进行数值模拟:我使用由边界框组成的增强rtree作为搜索工具。我有很多边界框,每个框都有一个标记(unsigned int:“拥有”单元格的过程)。
在全球范围内,我需要更“不精确”的描述:因此我使用rtree.bounds()然后通过全局通信发送此框。不幸的是,这并不总是有效,因为标签是以下列方式生成的:
由于rtree是由边界框组成的,我试图访问rtree结构,这样我就可以获得两个或更多(可能很少)的原始边界框(rtree的第一层/第二层)。这可能吗?或者是否有快速算法来拆分rtree.bounds()框?
目前我正在“手动”切割边界框,但由于我已将它们放在树中,我相信这是浪费计算能力。
编辑:我发现这个论坛http://boost-geometry.203548.n3.nabble.com/How-could-I-get-nodes-MBRs-of-the-R-Tree-td4026812.html似乎是我的问题的答案。我将尝试使用它,如果解决,发布解决方案:)
正如您所知,有一种访问节点的方法,但它不是R树的官方接口的一部分。您必须实现遍历R树的访问者并使用boost::geometry::index::detail::rtree::utilities::view
将其应用于R树。
看看this visitor遍历R-tree深度优先并在每个级别检查节点的边界框是否包含来自较低级别的所有元素。 Here你可以看到这个访客如何应用于R树。