如何从boost::rtree获得所有边界



我有一个内置的boost rtree:

using CBGPoint3d    = boost::geometry::model::point<float, 3, boost::geometry::cs::cartesian>;
using CBGBox3D      = boost::geometry::model::box<CBGPoint3d>;
using CBGTreeItem   = std::pair<CBGBox3D, CEntityLoaderBase*>;
boost::geometry::index::rtree<CBGTreeItem, boost::geometry::index::dynamic_rstar> m_tree;

我可以通过叶节点进行迭代:

for (auto const& v : m_tree)
//do something

我可以得到根边界:

m_tree.bounds();

但是我怎样才能得到其他级别的界限呢?没有边界迭代器。。。。

这不是官方界面的一部分,但可以手动遍历R-树。您必须实现自己的节点访问者,并使用bgi::detail::rtree::utilities::view<Rtree>将其应用于根节点。看看这个目录中的实用程序:

https://github.com/boostorg/geometry/tree/develop/include/boost/geometry/index/detail/rtree/utilities

特别是检查层次结构中边界框的正确性的一个:

https://github.com/boostorg/geometry/blob/develop/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp

以及收集关于R树内部结构的统计信息的一个:

https://github.com/boostorg/geometry/blob/develop/include/boost/geometry/index/detail/rtree/utilities/statistics.hpp

最新更新