gpt4 book ai didi

python - 将千米 (km) 换算为十进制度

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:31 27 4
gpt4 key购买 nike

使用 scipy.KDTree 进行一些快速的最近邻搜索。我正在使用 KDTree.query_ball_point(pnt, r=some_distance) 进行搜索。

因为我的点是纬度,所以要搜索的半径值 (some_distance) 必须是十进制度数(我相信)。如果我想让用户可以访问它,我希望该距离以公里、米、英里等为单位给出。

使用 python 库将以公里为单位的距离转换为十进制度数的最佳方法是什么?我正在使用 numpy、scipy 并使用了 PySAL。

感谢帮助,路易斯

最佳答案

来自 here 的经典计算:

距离

这使用“haversine”公式来计算两点之间的大圆距离——即地球表面上的最短距离——给出两点之间的“如乌鸦一般”的距离(忽略任何当然是山!)。

正弦公式:

a = sin²(Δφ/2) + cos(φ1).cos(φ2).sin²(Δλ/2)
c = 2.atan2(√a, √(1−a))
d = R.c

其中 φ 是纬度,λ 是经度,R 是地球半径(平均半径 = 6,371 公里) 请注意,角度必须以弧度为单位才能传递给三角函数!

你当然可以根据海里和公里的定义做一个非常粗略和现成的近似值:

The nautical mile (symbol M, NM or nmi) is a unit of length that is about one minute of arc of latitude measured along any meridian (at sea level), or about one minute of arc of longitude at the equator. By international agreement it has been set at 1,852 metres exactly (about 6,076 feet).

关于python - 将千米 (km) 换算为十进制度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com