高效测地最近的邻居
问题内容:
从纬度/经度数据(以弧度为单位)开始,我试图有效地找到最接近的n个邻居,理想情况下是测地线(WGS-84)的距离。
现在,我使用sklearn的BallTree与半正矢距离(KD-
特雷斯只需要minkowskian距离),这是很好的和快速(3-4秒内找到最近的5个邻居在7500个可能的匹配1200个位置),但不 准确
的我需要。码:
tree = BallTree(possible_matches[['x', 'y']], leaf_size=2, metric='haversine')
distances, indices = tree.query(locations[['x', 'y']], k=5)
当我用自定义函数代替metric(metric=lambda u, v: geopy.distance.geodesic(u, v).miles
)时,将花费“不合理的”长时间(在上述情况下为4分钟)。据记录,自定义函数可能会花费很长时间,但并不能帮助我解决问题。
我看着使用带有ECEF坐标和欧几里得距离的KD-Tree,但是我不确定这是否更准确。
如何保持当前方法的速度,但提高距离精度?
问题答案: