'''
Project:the difference of gcr and rlr
Author:wf Time:2021.11.30
'''import math
#角度转化
def change_deg(degree):list = degree.split("度")if list[1] != '':list1 = list[1].split("分")else:list1 = [0]deg = float(list[0])min = float(list1[0])return (deg + (min / 60))
#经度转换,西经为负,东经为正
def con_lon(lon,lon_dir):if lon_dir =='W' or lon_dir=='w':lon_w = -1*lonreturn lon_welif lon_dir =='E' or lon_dir=='e':lon_e = lonreturn lon_eelse:print(lon_dir + '不是经度的方向')return 0
#纬度转换,南纬为负,北纬为正
def con_lat(lat,lat_dir):if lat_dir == 'S' or lat_dir == 's':lat_s = -1*latreturn lat_selif lat_dir == 'N' or lat_dir == 'n':lat_n = latreturn lat_nelse:print('不是维度的方向')return 0
#求经差
def diff_of_lon(lon_F,lon_T):diff_of_lon = abs(lon_T - lon_F)if diff_of_lon > 180:diff_of_lon = 360-diff_of_lonreturn diff_of_lon
#求纬差
def diff_of_lat(lat_F,lat_T):diff_of_lat = abs(lat_T - lat_F)return diff_of_lat
#求大圆航程
def dft(lat_F,lat_T,diff_of_lon):if (lat_F/abs(lat_F)) == (lat_T/abs(lat_T)):lat_F = abs(lat_F)lat_T = abs(lat_T)else:lat_F = abs(lat_F)lat_T = -1*abs(lat_T)DFT_cos = (math.sin(lat_F*(math.pi)/180) * math.sin(lat_T*(math.pi)/180)) + \(math.cos(lat_F*(math.pi)/180) * math.cos(lat_T*(math.pi)/180) *math.cos(diff_of_lon*(math.pi)/180))DFT = math.acos(DFT_cos)*180/(math.pi) * 60return DFT
#求大圆初始航向
def Great_cir_init_heading(lat_F,lat_T,diff_of_lon):if (lat_F/abs(lat_F)) == (lat_T/abs(lat_T)):lat_F = abs(lat_F)lat_T = abs(lat_T)else:lat_F = abs(lat_F)lat_T = -1*abs(lat_T)C_tan = math.sin(math.radians(diff_of_lon)) / \(math.tan(math.radians(lat_T))*math.cos(math.radians(lat_F)) -math.sin(math.radians(lat_F))*math.cos(math.radians(diff_of_lon)))C = math.degrees(math.atan(C_tan))return C
#横向线航向
def rlrc(lat_F,lat_T,lon_dif_FT):DMP = (10800/math.pi)*(math.log((math.tan(math.radians(45 + lat_T/2))/math.tan(math.radians(45 + lat_F/2)))))C = math.degrees(math.atan(60 * lon_dif_FT / DMP))return C
#横向线航程
def rlr(C,lat_F,diff_of_lat,diff_of_lon):if C != 90:d = 60 * diff_of_lat / math.cos(math.radians(C))else:d = 60 * diff_of_lon * math.cos(math.radians(lat_F))return dif __name__ == "__main__":#变量输入print('以下坐标数值输入格式为:xx度xx分,方向为字母')place_F = input('起始地点名称:')lat_F = input('起始坐标的纬度:')lat_F_dir = input('起始坐标的纬度方向:')lon_F = input('起始坐标的经度:')lon_F_dir = input('起始坐标的经度方向:')place_T = input('终点地点名称:')lat_T = input('终点坐标的纬度:')lat_T_dir = input('终点坐标的纬度方向:')lon_T = input('终点坐标的经度:')lon_T_dir = input('终点坐标的经度方向:')#数值转化lat_T = change_deg(lat_T)lat_F = change_deg(lat_F)lon_T = change_deg(lon_T)lon_F = change_deg(lon_F)lat_F = con_lat(lat_F,lat_F_dir)lat_T = con_lat(lat_T,lat_T_dir)lon_F = con_lon(lon_F,lon_F_dir)lon_T = con_lon(lon_T,lon_T_dir)#求经差,纬差lon_dif_FT = diff_of_lon(lon_F,lon_T)lat_dif_FT = diff_of_lat(lat_F,lat_T)#求大圆航程Gcr = dft(lat_F,lat_T,lon_dif_FT)print('GCR:',Gcr)#求横向线航向及横向线航程C = rlrc(lat_F,lat_T,lon_dif_FT)Rlr = rlr(C,lat_F,lat_dif_FT,lon_dif_FT)print('RLR:',Rlr)#求两航线之差DIFF = Rlr - Gcrprint(place_F + '与' + place_T +'航次的大圆航程与恒向线航程的差值:' , DIFF)

利用python进行正球面的大圆航程与横向线航程计算相关推荐

  1. python编写一个软件-软件代做:利用Python编写一个行业专用的小计算器

    前言:本文讲述的是如何利用python编程制作一个适用于指定行业的计算器,方便计算结果,涵盖的知识点由Python编写GUI界面程序,利用爬虫采集实时的汇率数据,将Python文件打包成可以单独运行的 ...

  2. python黑科技脚本_利用Python实现FGO自动战斗脚本,再也不用爆肝啦~

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 利用Python实现FGO自动战斗脚本,再也不用爆 ...

  3. python画曲线-利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  4. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...

  5. python数据分析第七章实训3_《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结...

    在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载.清理.转换以及重塑.这些工作会占到分析师时间的80%或更多.有时,存储在文件和数据库中的数据的格式不适合某个特定的任务.许多研究者都选择使 ...

  6. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  7. python怎么画出圆润的曲线_利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  8. python ks值计算_利用Python计算KS的实例详解

    在金融领域中,我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布.好的信用风控模型一般从准确性.稳定性和可解释性来评估模型.sOf免费资源网 一般来说.好人样本的分布同坏人样本的分布应该是有很 ...

  9. Python 散点图线性拟合_机器学习之利用Python进行简单线性回归分析

    前言:在利用机器学习方法进行数据分析时经常要了解变量的相关性,有时还需要对变量进行回归分析.本文首先对人工智能/机器学习/深度学习.相关分析/因果分析/回归分析等易混淆的概念进行区分,最后结合案例介绍 ...

  10. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

最新文章

  1. 大白话系列之C#委托与事件讲解(一)
  2. 百度前离职员工偶遇同门百度人,轻松通过面试,直呼放水很明显!这样真的好么?...
  3. asp实用类库--DataList
  4. DOM下的节点属性和操作小结
  5. 设计模式(十)享元模式Flyweight(结构型)
  6. OpenGL blending 混合的实例
  7. 又一高校学生私自返校受处分,这回连辅导员、院领导均受牵连
  8. CUDA学习(三十六)
  9. 大数据之-Hadoop3.x_MapReduce_序列化案例FlowDriver---大数据之hadoop3.x工作笔记0100
  10. 把discuzX 的用户登录信息添加到纯静态页面
  11. 【RBM】受限玻尔兹曼机(Restricted Boltzmann Machine, RBM) 简介
  12. 计算机文档排版软件,WORD排版大师
  13. 大数据面试3分钟自我介绍_面试的时候,如何自我介绍?
  14. Sublime Text3设置浏览器预览
  15. 一个案例入门tableau——NBA球队数据可视化实战解析
  16. 隐马尔可夫模型(三): 算法分类、解决方法
  17. simulink enable嵌套问题
  18. 前端校招该考察什么?一个面试官的思考
  19. centos oracle libaio哪下载,在CentOS4.5上安装Oracle10g出现的libaio-0.3.96; found Not found问题求救...
  20. mysql实现两列数据或者两行数据相减

热门文章

  1. win32.mak下载地址github
  2. 刮刮卡 java代码_Android刮刮卡效果实现代码
  3. 电脑硬盘空间如何免费扩容2TB+
  4. [转载]《澄明之境》:投资是一种信仰
  5. 101个CV模型集体开源,魔搭社区视觉AI深度解析
  6. VirtualBox中安装Fedora9及其ARM开发环境配置
  7. 网易视频云:分布式一致性
  8. Realtek 1296 (RTD1296) OpenWRT Android 双系统全功能开发板
  9. 课课通指针练习之排除异常基因
  10. [CGAL]建立一个正四面体