存储距离敏感空间数据的最佳数据结构是什么?

时间:2015-12-23 06:38:24

标签: algorithm geospatial spatial spatial-index r-tree

考虑一下我在全球范围内有关于气象台坐标,历史温度值和城市中心坐标的数据。 Meteo车站距离市中心不同。任务是根据气象站的数据确定城市温度的​​平均历史值。

要为每个城市解决这个问题,我需要在某个半径范围内找到最近的meteo站点集并平均其数据。粗暴的方式是计算从每个城市到每个气象站的距离,但这对我的数据来说太慢了。所以我认为一些树数据结构可以在这里提供帮助。我尝试使用R-tree按坐标划分meteo站但是有一个问题 - 这种方法允许我在一些树节点中找到meteo站,但它没有给我相关节点的信息,快速计算半径条件(例如,如果城市非常靠近R树的节点边界)。

是否存在允许快速搜索所需节点的标准树数据结构,还提供了同一树级别的空间邻居集合?

2 个答案:

答案 0 :(得分:1)

使用数据库怎么样?然后查询它以找到接近某个特定点的点?许多数据库已经支持地理空间数据,您可以对其进行索引和查询:

答案 1 :(得分:1)

你可能不应该关注同一级别的邻居'或者说,这些信息并不一定意味着什么。我想你应该

  1. 决定是否要在给定距离(范围查询)内的所有气象站或最近的k气象站。
  2. 然后我会使用你用来查找电台的索引的API。
  3. 然后计算距离。
  4. R-Trees可以做到这一点,但它们的加载速度通常很慢。如果加载时间有问题,您可能需要尝试R +树,R *树或可能是Quadtrees(对于小数据集)或PH-Tree(对于大型数据集,我在Java中的实现)。

    如何在树内组织数据不应该成为一个问题。曾经实施过树的人可能实现了找到理想邻居的最有效方法。