Boost rtree.bounds():获取更多框和/或访问其结构

问题描述 投票:1回答:1

目前我正在使用分布式网格进行数值模拟:我使用由边界框组成的增强rtree作为搜索工具。我有很多边界框,每个框都有一个标记(unsigned int:“拥有”单元格的过程)。

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

  1. 具有相同标签的盒子都聚集在一起:在这种情况下,它就像一个魅力。
  2. 具有相同标签的盒子形成两个“连接”集群:在这种情况下,额外的空白空间意味着以后的计算将进行大量无用的通信

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

目前我正在“手动”切割边界框,但由于我已将它们放在树中,我相信这是浪费计算能力。

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

c++ boost boost-geometry r-tree
1个回答
1
投票

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

看看this visitor遍历R-tree深度优先并在每个级别检查节点的边界框是否包含来自较低级别的所有元素。 Here你可以看到这个访客如何应用于R树。

© www.soinside.com 2019 - 2024. All rights reserved.