【发布时间】:2014-12-15 06:50:20
【问题描述】:
我有一组很多轴对齐的矩形,它们可能是嵌套的和相交的。我希望能够找到包围/绑定查询点的所有矩形。什么是一个好的方法?
编辑:附加信息-
1. 我的意思是大约 1 亿或更多。
2.矩形分布在一个巨大的跨度(一个国家的跨度)上。尺寸没有限制。
3. 是的,矩形可以被预处理并存储在树形结构中。
4.不需要实时插入和删除。
5. 我只需要找到所有包围/包围给定查询点的矩形。我不需要最近邻。
您可能已经猜到了,这是针对移动设备上的实时地理围栏应用程序,因此 -
6. 不需要对离点足够远的矩形重复搜索。
我通过将每个矩形逼近一个点来尝试 KD 树和四叉树。根据矩形的大小,他们给了我可变的性能。 有没有更直接的方法? r 树呢?
【问题讨论】:
-
“非常多”是多少?您可以对矩形进行预处理以构建用于查询的数据结构吗?您会针对同一组矩形检查多个点吗?在任何情况下,您都可以从幼稚的方法开始。它很可能对您的目的来说足够快,如果不是,那么至少您有一个已知的工作算法,您可以根据该算法测试您的优化。
-
嗨,吉姆,您的幼稚方法到底是什么意思?另外,我已经编辑了问题以使其更清楚。
-
我猜你所拥有的矩形是事先知道的,它们不太可能“移动”、“缩小”或“跨度”。如果我是正确的,那么您应该考虑批量加载的 R-tree(或其变体)。
-
天真的方法是顺序搜索整个列表,这对于一亿个矩形的列表显然是不切实际的。
标签: algorithm data-structures geospatial spatial-index