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


Posted in Python onJuly 05, 2019

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

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

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)

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实现两个经纬度点之间的距离和方位角的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
详解Python编程中包的概念与管理
Oct 16 Python
Python 常用string函数详解
May 30 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
opencv读取视频并保存图像的方法
Jun 04 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 #Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
python读出当前时间精度到秒的代码
Jul 05 #Python
python读写csv文件方法详细总结
Jul 05 #Python
Python考拉兹猜想输出序列代码实践
Jul 05 #Python
python读写csv文件实例代码
Jul 05 #Python
python暴力解压rar加密文件过程详解
Jul 05 #Python
You might like
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
python回调函数的使用方法
2014/01/23 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
python实现简单遗传算法
2020/09/18 Python
中职应届生会计求职信
2013/10/23 职场文书
应聘收银员个人的求职信
2013/11/30 职场文书
社区活动邀请函范文
2014/01/29 职场文书
工作决心书
2014/03/11 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
消防安全宣传口号
2014/06/10 职场文书
质量保证书怎么写
2015/02/27 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
python中urllib包的网络请求教程
2022/04/19 Python
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS