计算球坐标中两点之间的距离

2024-04-25 04:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算球坐标中两点之间的距离

有两个纬度和经度阵列,大小约为1100000

lat = [-10, 10, 1, 82, ..., -72]
lon = [120, -58, 13, 22, ..., 122]

此外,还有一个标准点

loc_lat = -60
loc_lon = -50

所以我试着用下面的代码来计算,但是它花费了太多的时间。 有什么有效的方法吗

from geopy import distance    
D_from_loc = [distance.distance((lat[i], lon[i]), (loc_lat, loc_lon)).km for i in range(len(lon))]

Tags: 方法代码fromimport距离标准时间loc
1条回答
网友
1楼 · 发布于 2024-04-25 04:41:17

sklearn实现相当快

import numpy as np
from sklearn.metrics import pairwise_distances
size = 1100000
X = np.random.random( (size,2))
Y = np.array([[-60,-50]])

radians_X = np.radians(X)
radians_Y = np.radians(Y)

result = pairwise_distances(radians_X,radians_Y, metric='haversine')
result * 6371000/1000  # multiply by Earth radius to get kilometers

这将需要<;1秒。确保测试您是否具有lat/long order权限,sklearn的lat/long order权限是(lat,long)对。此外,结果可能与其他实现略有不同,因为地球需要近似为一个大球体。精确半径的选择有(小)影响

相关问题 更多 >