考虑一下我在全球范围内有关于气象台坐标,历史温度值和城市中心坐标的数据。 Meteo车站距离市中心不同。任务是根据气象站的数据确定城市温度的平均历史值。
要为每个城市解决这个问题,我需要在某个半径范围内找到最近的meteo站点集并平均其数据。粗暴的方式是计算从每个城市到每个气象站的距离,但这对我的数据来说太慢了。所以我认为一些树数据结构可以在这里提供帮助。我尝试使用R-tree按坐标划分meteo站但是有一个问题 - 这种方法允许我在一些树节点中找到meteo站,但它没有给我相关节点的信息,快速计算半径条件(例如,如果城市非常靠近R树的节点边界)。
是否存在允许快速搜索所需节点的标准树数据结构,还提供了同一树级别的空间邻居集合?
答案 0 :(得分:1)
使用数据库怎么样?然后查询它以找到接近某个特定点的点?许多数据库已经支持地理空间数据,您可以对其进行索引和查询:
答案 1 :(得分:1)
你可能不应该关注同一级别的邻居'或者说,这些信息并不一定意味着什么。我想你应该
R-Trees可以做到这一点,但它们的加载速度通常很慢。如果加载时间有问题,您可能需要尝试R +树,R *树或可能是Quadtrees(对于小数据集)或PH-Tree(对于大型数据集,我在Java中的实现)。
如何在树内组织数据不应该成为一个问题。曾经实施过树的人可能实现了找到理想邻居的最有效方法。