【发布时间】:2020-09-16 20:36:10
【问题描述】:
我在 Pandas 中有 2 个数据框,其中包含 longitude 和 latitude。我正在尝试遍历第一行中的每一行,并在第二个数据框中找到最匹配的 longitude 和 latitude。
到目前为止,我在 python 中有这个,我在另一个 SO 帖子中找到了它......
from math import cos, asin, sqrt
def distance(lat1, lon1, lat2, lon2):
p = 0.017453292519943295
a = 0.5 - cos((lat2-lat1)*p)/2 + cos(lat1*p)*cos(lat2*p) * (1-cos((lon2-lon1)*p)) / 2
return 12742 * asin(sqrt(a))
def closest(data, v):
return min(data, key=lambda p: distance(v['lat'],v['lon'],p['lat'],p['lon']))
tempDataList = [{'lat': 39.7612992, 'lon': -86.1519681},
{'lat': 39.762241, 'lon': -86.158436 },
{'lat': 39.7622292, 'lon': -86.1578917}]
v = {'lat': 39.7622290, 'lon': -86.1519750}
print(closest(tempDataList, v))
我将尝试修改它以用于我的 pandas 数据帧,但有没有更有效的方法可以使用 PyProj 来做到这一点?
有人有例子或类似的代码吗?
【问题讨论】: