计算树之间的交集

Calculate intersections between rtrees

本文关键字:之间 计算      更新时间:2023-10-16

我正在关注提升几何 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 搜索"空间连接"。

我不认为任何高级方法都比我上面描述的天真方法好得多,但我没有了解该主题的最新情况。