c++ - 计算 rtrees 之间的交集

标签 c++ boost r-tree boost-geometry

我正在关注 boost geometry rtree文档。我能够使用一个框执行空间查询,以检索与其相交的 rtree 元素列表。

我想知道是否有一种方法可以在 rtree 和另一个 rtree(相同类型)之间执行空间查询。

类似于:

typedef bg::model::point<float, 2, bg::cs::cartesian> point;
typedef bg::model::box<point> box;
typedef std::pair<box, unsigned> value;

bgi::rtree< value, bgi::quadratic<16> > rtree1;
//... create first rtree
bgi::rtree< value, bgi::quadratic<16> > rtree2;
//... create second rtree
std::vector<value> result_s;
rtree1.query(bgi::intersects(rtree2), std::back_inserter(result_s));
// At this point result_s should contain elements of rtree1 that intersect with rtree2

是否可能有类似的东西,或者我只能使用相同类型的 rtree 模板元素的元素执行查询?

最佳答案

我认为你的意思是所谓的“空间连接”。天真的方法会遍历较小树的所有元素并在较大树上执行矩形查询。对此有一些研究,只需在 scholar.google.com 上搜索 'spatial join' .

我不认为任何高级方法明显优于我上面描述的朴素方法,但我不是最新的主题。

关于c++ - 计算 rtrees 之间的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952220/

相关文章:

c++ - 我可以将多个 BOOST 单元测试链接到一个测试二进制文件中吗?

python - 用于存储嵌套框的数据结构?

c++ - ~ 和 - 之间的区别

c++ - ffmpeg编码过程运行时更新参数

c++ - ReadFile 只读取一个缓冲区字符?

c++ - boost spirit - 无法获得属性

C++:如何将字符串拆分为大小均匀的较小字符串?

C++11 如何在 std::unordered_map 中存储指向方法的指针?

java - 对于小型动态数据,K-D 树与 R-树

algorithm - 如何检测二维形状是否包含另一个具有 R 树的形状?