我有一个n个位置的列表,每个位置包括一个纬度、经度和一个时间戳。这些地点将被钉在地图上。
然而,它需要分组的位置是接近的,最近改变的位置为中心,这样地图就不会被引脚淹没。
我最初的想法是:
这种方法有效,但效率很低。最坏的情况是~O(n^2)。
有什么算法可以做得更好吗?
发布于 2017-09-17 13:51:51
若要击败二次运行时,请使用索引。
在纬度和经度上,您可能需要使用R树、球树、覆盖树或类似的树,因为kd树显然只适用于欧几里得距离,而不是haversine。
发布于 2017-09-17 19:16:11
我有一个麻烦的解决方案给你,如果你对大致的答案满意的话,它可能会有效。
通常,纬度经度超过几个小数点,如(12.9877949,77.6095064)。现在,你只能在小数点之后选择几个数字,这通常是在几公里之内。
和12.9877979,77.6095054类似,接近12.9877949,77.6095064,所以如果我只取两个小数点,两者都会变成12.98,77.60,现在我遍历这个列表,选择那些值相同的。
但是,如果您需要非常精确的计算,这将无法工作。
https://stackoverflow.com/questions/46261332
复制相似问题