【发布时间】:2019-01-06 10:09:59
【问题描述】:
我正在尝试在 C++ 代码中实现提升树。目前我正在做以下事情:给定一个边界框向量 v_bboxes,我用它构建一棵树。
LinearPointRtree built_tree(v_bboxes.begin(), v_bboxes.end());
然后,给定一个点,我想知道该点位于 v_bboxes 的哪个边界框中(可能是一个或多个)。目前我正在做以下查询:
built_tree.query(bgi::intersects(point), std::back_inserter(result));
结果是一个包含包含点的边界框的向量,而我对引用原始向量 v_bboxes 的索引感兴趣。
我可以将“结果”与原始向量进行比较,并找出返回了哪些边界框,但这会效率低下,我相信有更好的方法可以直接使用 boost,我只是在文档中找不到任何内容。
目前我还想做的是从元组向量(边界框、索引)开始构建一棵树,但它会抛出一个非常长且看起来很糟糕的编译错误:
错误:没有匹配的调用函数 'boost::geometry::index::detail::varray >, 17>::push_back(std::tuple >, unsigned int>&)'
有人知道我应该改变什么或有建议吗?
【问题讨论】:
-
把代码放到创建rtree对象的地方。
rtree对象的第一个模板参数是什么 -pair<bbox,integer-type>如何将元素插入 rtree ?显示代码,没有错误。
标签: c++ boost tree boost-geometry