查找 GPS 坐标组之间的最小距离

如何解决查找 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 输出转换为我想要的?或者有什么其他方法可以让这个过程快速进行?

编辑添加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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?