Dav*_*d Z 10
如果它现在或将来对任何人有帮助,这里的算法即使对于极点附近的点也是有效的(如果它完全有效,即如果我没有做出愚蠢的数学错误;-):
将纬度/经度坐标转换为3D笛卡尔坐标:
x = cos(lat) * cos(lon)
y = cos(lat) * sin(lon)
z = sin(lat)
Run Code Online (Sandbox Code Playgroud)计算x的平均值,y的平均值和z的平均值:
x_avg = sum(x) / count(x)
y_avg = sum(y) / count(y)
z_avg = sum(z) / count(z)
Run Code Online (Sandbox Code Playgroud)将该方向转换回纬度和经度:
lat_avg = arctan(z_avg / sqrt(x_avg ** 2 + y_avg ** 2))
lon_avg = arctan(y_avg / x_avg)
Run Code Online (Sandbox Code Playgroud)