我正在关注 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/