a
是否有一个 Python 包可以有效地计算数组中每个(纬度,经度)点到数组中每个(纬度,经度)点的最小大圆距离b
?例如scipy.spatial.distance.cdist不幸的是,据我所知,它不支持球面距离。
对于许多数据点(例如a
和分别有 ~70000 和 ~1200 点),如果需要使用不同的和数组b
重复迭代,类似于以下示例的手动计算会变得太慢。a
b
deg2rad = np.pi/180.0
rho_cos = (np.sin(lat1[:,None]*deg2rad)*np.sin(lat2[None,:]*deg2rad) +
np.cos(lat1[:,None]*deg2rad)*np.cos(lat2[None,:]*deg2rad)*np.cos(np.abs(lon1[:,None] - lon2[None,:])*deg2rad))
rho = np.arccos(rho_cos) / deg2rad
rho_min = np.nanmin(rho,axis=1)