我问这个是因为我确定之前已经提出但不确定如何调用它。 我需要一种有效的方法来搜索和存储度量空间中的某些点。具体来说,我需要在空间和时间的某些点找到天气。我有一个API可以做到这一点,但如果我过去已经查询了距离新点几英寸远的点并且在它之前几秒钟,我不想再提出另一个请求,因为那里的天气会是相同。
所以当我收到一个新点时,我需要问 - 我是否在缓存中有一个“足够接近”的点(它与新点的距离是否低于阈值)? 如果我这样做 - 采取与该点相关的数据。否则,缓存新点。 这可以通过串行检查轻松完成,但我对如何更有效地完成它感兴趣。
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
您可能需要的是从缓存点构建的Voronoi diagram。
答案 2 :(得分:0)
假设您的thresshold是t
,您可以将搜索空间拆分为网格,
具有宽度和高度t
的单元格。
每个单元格都有一个包含在其中的点列表。
现在,当给出一个新点时,你计算它落入哪个单元格, 让这个单元格[i,j],你检查这个单元格及其所有的neigbors (即共9个单元格),无论它们是否包含任何点,如果它们包含任何点, 这些是你的候选人,比你更接近点。 您现在将计算所有这些的距离。
由于单元格宽t
,t
高,所有点的距离
躺在任何其他细胞中至少是t
。
您可以将网格单元存储在TreeMap中,比较器基于[i,j]对。 (您只存储最后一个点的单元格。)