计算rtrees之间的交叉点

时间:2016-01-22 17:05:40

标签: 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模板元素执行查询?

1 个答案:

答案 0 :(得分:2)

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

我认为任何先进的方法都不比我上面描述的天真方法好得多,但我不能与该主题保持同步。