gpt4 book ai didi

python实现两个经纬度点之间的距离和方位角的方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python实现两个经纬度点之间的距离和方位角的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

最近做有关GPS轨迹上有关的东西,花费心思较多,对两个常用的函数总结一下,求距离和求方位角,比较精确,欢迎交流! 。

1. 求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好,这里总结一下) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def getDegree(latA, lonA, latB, lonB):
   """
   Args:
     point p1(latA, lonA)
     point p2(latB, lonB)
   Returns:
     bearing between the two GPS points,
     default: the basis of heading direction is north
   """
   radLatA = radians(latA)
   radLonA = radians(lonA)
   radLatB = radians(latB)
   radLonB = radians(lonB)
   dLon = radLonB - radLonA
   y = sin(dLon) * cos(radLatB)
   x = cos(radLatA) * sin(radLatB) - sin(radLatA) * cos(radLatB) * cos(dLon)
   brng = degrees(atan2(y, x))
   brng = (brng + 360 ) % 360
   return brng

2. 求两个经纬点的距离函数:P0(latA, lonA), P1(latB, lonB) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def getDistance(latA, lonA, latB, lonB):
   ra = 6378140 # radius of equator: meter
   rb = 6356755 # radius of polar: meter
   flatten = (ra - rb) / ra # Partial rate of the earth
   # change angle to radians
   radLatA = radians(latA)
   radLonA = radians(lonA)
   radLatB = radians(latB)
   radLonB = radians(lonB)
 
   pA = atan(rb / ra * tan(radLatA))
   pB = atan(rb / ra * tan(radLatB))
   x = acos(sin(pA) * sin(pB) + cos(pA) * cos(pB) * cos(radLonA - radLonB))
   c1 = (sin(x) - x) * (sin(pA) + sin(pB)) * * 2 / cos(x / 2 ) * * 2
   c2 = (sin(x) + x) * (sin(pA) - sin(pB)) * * 2 / sin(x / 2 ) * * 2
   dr = flatten / 8 * (c1 - c2)
   distance = ra * (x + dr)
   return distance

以上这篇python实现两个经纬度点之间的距离和方位角的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/zhuqiuhui/article/details/53180395 。

最后此篇关于python实现两个经纬度点之间的距离和方位角的方法的文章就讲到这里了,如果你想了解更多关于python实现两个经纬度点之间的距离和方位角的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

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