我想计算两个坐标为(rho
和(lat1, lon1
)的数组中存储的点之间的大圆距离(角度)lat2, lon2
。:
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
数组lat1
和lon1
包含数量级〜70000数据点,lat2
和lon2
包含数量级〜1200数据点。我需要使用不同的坐标数组进行多次(〜100000)次计算。可能的唯一lat1
和lat2
值来自具有450个数据点的数组,可能的唯一lon1
和lon2
值来自具有900个数据点的数组。>
当前,计算是“缓慢的”(从大约100000次迭代的预期总时间而言),在单个内核上每次迭代大约需要4.5秒。如何加快计算速度?庞大的查找表,可用于所有可能的带有索引的坐标对?并行化?更快的numpy
或scipy
本机功能?