如何解决查找 GPS 坐标组之间的最小距离
几年前我问过一个与此类似的问题,并得到了一个很好的实用答案。但是,我希望显着提高此代码的速度。
我基本上有两组 gps 坐标:例如,一组数据框是酒店的坐标,另一组是机场的坐标。我想查看具有纬度/经度坐标的数据框 A(酒店),然后从每个酒店的数据框 B 中找到最近的机场。
我可以使用以下代码执行此操作,并且一切正常:
import pandas as pd
import geopy.distance
df = pd.read_csv('AirportCoords.csv')
df2 = pd.read_csv('HotelCoords.csv')
for i,row in df.iterrows(): # A
a = row.latitude,row.longitude
distances = []
for j,row2 in df2.iterrows(): # B
b = row2.lat,row2.long
distances.append(geopy.distance.geodesic(a,b).km)
min_distance = min(distances)
min_index = distances.index(min_distance)
但是,这需要很长时间。我试图通过使用 scipy 的 cdist 来加快速度,但是,虽然速度很快,但返回的是欧几里德距离。
有什么方法可以将 cdist 输出转换为我想要的?或者有什么其他方法可以让这个过程快速进行?
from scipy.spatial import distance
a = np.array(df[['lat','long']])
b = np.array(df2[['lat','long']])
print(distance.cdist(a,b).min(axis=1)
这会打印最短的欧几里得距离,而我正在尝试获取公里。
提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。