【发布时间】:2018-11-29 22:59:33
【问题描述】:
从纬度/经度数据(以弧度表示)开始,我试图有效地找到最近的 n 个邻居,最好是测地线 (WGS-84) 距离。
现在我正在使用带有半正弦距离的sklearn’s BallTree(KD-Tres 只采用 minkowskian 距离),它既好又快(在 7500 个可能的匹配中为 1200 个位置找到最近的 5 个邻居需要 3-4 秒),但是不像我需要的那样准确。代码:
tree = BallTree(possible_matches[['x', 'y']], leaf_size=2, metric='haversine')
distances, indices = tree.query(locations[['x', 'y']], k=5)
当我用自定义函数替换度量 (metric=lambda u, v: geopy.distance.geodesic(u, v).miles) 时,它需要“不合理”的长时间(与上述相同的情况下为 4 分钟)。据记录,自定义函数可能需要很长时间,但并不能帮助我解决我的问题。
我研究了使用带有 ECEF 坐标和欧几里德距离的 KD-Tree,但我不确定这是否更准确。
如何在保持当前方法的速度的同时提高距离精度?
【问题讨论】:
标签: python scipy scikit-learn geospatial