python经纬度转换xy坐标公式_经纬度坐标转换为距离及角度(Python)

最近项目上有这样的需求,需要依据设备的经纬度坐标计算距离及角度。经验证后效果较好,并分享。

1 经纬度转换距离代码

#!/usr/bin/env python

# -*- coding: utf-8 -*-

__author__ = 'Seven'

import math

# 计算距离

def getDistance(latA, lonA, latB, lonB):

ra = 6378140 # 赤道半径

rb = 6356755 # 极半径

flatten = (ra - rb) / ra # Partial rate of the earth

# change angle to radians

radLatA = math.radians(latA)

radLonA = math.radians(lonA)

radLatB = math.radians(latB)

radLonB = math.radians(lonB)

pA = math.atan(rb / ra * math.tan(radLatA))

pB = math.atan(rb / ra * math.tan(radLatB))

x = math.acos(math.sin(pA) * math.sin(pB) + math.cos(pA) * math.cos(pB) * math.cos(radLonA - radLonB))

c1 = (math.sin(x) - x) * (math.sin(pA) + math.sin(pB)) ** 2 / math.cos(x / 2) ** 2

c2 = (math.sin(x) + x) * (math.sin(pA) - math.sin(pB)) ** 2 / math.sin(x / 2) ** 2

dr = flatten / 8 * (c1 - c2)

distance = ra * (x + dr)

distance = round(distance / 1000, 4)

return f'{distance}km'

2 经纬度转化角度代码

#!/usr/bin/env python

# -*- coding: utf-8 -*-

__author__ = 'Seven'

import math

# 计算角度

def getDegree(latA, lonA, latB, lonB):

radLatA = math.radians(latA)

radLonA = math.radians(lonA)

radLatB = math.radians(latB)

radLonB = math.radians(lonB)

dLon = radLonB - radLonA

y = math.sin(dLon) * math.cos(radLatB)

x = math.cos(radLatA) * math.sin(radLatB) - math.sin(radLatA) * math.cos(radLatB) * math.cos(dLon)

brng = math.degrees(math.atan2(y, x))

brng = round((brng + 360) % 360, 4)

brng = int(brng)

if (brng == 0.0) or ((brng == 360.0)):

return '正北方向'

elif brng == 90.0:

return '正东方向'

elif brng == 180.0:

return '正南方向'

elif brng == 270.0:

return '正西方向'

elif 0 < brng < 90:

return f'北偏东{brng}'

elif 90 < brng < 180:

return f'东偏南{brng - 90}'

elif 180 < brng < 270:

return f'西偏南{270 - brng}'

elif 270 < brng < 360:

return f'北偏西{brng - 270}'

else:

pass

3 验证

选取深圳野生动物园(22.599578, 113.973129)为起点,深圳坪山站(22.6986848, 114.3311032)为终点,结合百度地图、谷歌地图等进行效果验证。

程序运行结果如下:

百度测距为38.3km

Google地图手动测距为39.31km

距离与角度均无问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab铁路平板车装货问题,两辆铁路平板车的装货问题最终论文

两辆铁路平板车的装货问题摘要&#xff1a;铁路运输部门常常会遇到平板车的装货问题。包装箱的宽度和高度是一样的&#xff0c;厚度是不同的。每种装箱策略都会产生不同的浪费。本文所要讨论的就是怎样装箱&#xff0c;使得浪费最小。本题是个整数规划问题&#xff0c;其特点是…

LoadRunner函数

一、基础函数简介 在VU左边导航栏中&#xff0c;有三个LoadRunner框架函数&#xff0c;分别是vuser_init()、Action()、vuser_end()。这三个函数存在于任何Vuser类型的脚本中。 vuser_init:虚拟用户的初始化函数&#xff0c;一般将用户初始化的操作放在这里&#xff0c;如登录操…

python点击按钮创建进程_python-创建进程的三种方式

1&#xff0c;os.fork() 方法import osret os.fork()if ret 0:#子进程print("Sub process pid %d, Sub process ppid %d" % (os.getpid(), os.getppid()))else:#父进程print("Parent Process ret %d" % ret)print("Parent Process pid %d"…

TPLink 备份文件bin文件解析

TPLink 路由器备份文件bin文件 测试路由器 WR885&#xff0c;备份文件加密方式DES&#xff0c;密钥&#xff1a;478DA50BF9E3D2CF linux端&#xff1a; openssl enc -d -des-ecb -nopad -K 478DA50BF9E3D2CF -in config.bin python&#xff1a; python默认没有安装crypto需要自…

linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享

不管在Windows还是Linux中&#xff0c;最重要的问题不是说你能搜索到这个文件&#xff0c;而是最好少用搜索&#xff0c;应该是你在整个服务器的规划里面&#xff0c;把所以的文件目录规划的很好。就像如果你在家里找衣服&#xff0c;如果不是你乱扔&#xff0c;就不可能花费太…

vue v-if判断数组元素的值_Vue项目上线做的一些基本优化

前言本文主要是做一个Vue性能优化的帖子&#xff0c;做一个参考文档&#xff0c;对以后项目上线做一些集合文档。如果对各位在项目优化时&#xff0c;做一个文档参照。开发过程在开发项目的时候&#xff0c;就要注意项目的一些小技巧&#xff0c;下面我就罗列一些经常用到的优化…

BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )

状压dp, 然后转移都是一样的, 矩阵乘法快速幂就行啦. O(logN*2^(3m)) ---------------------------------------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define …

python psutil 获取命令历史_Python使用psutil获取进程信息的例子

psutil是什么psutil是一个能够获取系统信息(包括进程、CPU、内存、磁盘、网络等)的Python模块。主要用来做系统监控&#xff0c;性能分析&#xff0c;进程管理&#xff0c;像glances也是基于psutil写成的。在不了解这个模块之前&#xff0c;我都是直接用subprocess去直接执行系…

linux传文件file,linux文件的传输与压缩快速入门

scp --- 用于远程拷贝文件上传文件scp file userip:/file下载文件scp userip:/file filersync --- 远程同步&#xff0c;速度块&#xff0c;默认会忽略&#xff0c;文件属性&#xff0c;链接文件&#xff0c;设备文件-r --- 同步目录-p --- 同步权限-o --- 同步文件所有人-g --…

Handler实现数据模板

<ul id"ulList"> <li οnclick"show({ID}‘,{Title})"><a href"somepage.html?id{ID}" >{Title}</a><br /> {Content}</li> </ul> $.get("Handler.ashx?n" Math.random(), { action: &q…

delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...

我们总是这样激励自己&#xff1a;未来是美好的。但是&#xff0c;生活不可能处处如意&#xff0c;人的一生也难以风平浪静&#xff0c;有巅峰就有低谷&#xff0c;有明朗就有迷茫。或是找不到未来发展的方向&#xff0c;或是事业、生活遭受了重大挫折&#xff0c;我们每个人都…

linux的svn端口查看,linux查看端口被占用

1、netstat -tunlp|grep 8080[rootsvn AdLog]# netstat -tunlp|grep 8080tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 22067/java2、ps -ef|grep 22067[rootsvn AdLog]# ps -ef|grep 22067root 22067 1 5 15:22 pts/0 00:00:18 /usr/bin/java -Djava.util.logging.config.file/mnt/…

随笔2 PAT1001.A+B Format (20)

1001.AB Format(20) 题目链接 1001.AB Format (20) C 代码 第一次使用markdown&#xff0c;还不是很习惯&#xff0c;现在努力的在适应它 首先这道题我们很容易就可以读懂题意&#xff0c;就是简单的ab&#xff0c;只不过要求我们在输出sum的时候处理一下数字的格式。那么我的做…

mybatis传递多个参数_深入浅出MyBatis:MyBatis解析和运行原理

原文&#xff1a;https://juejin.im/post/5abcbd946fb9a028d1412efc本篇文章是「深入浅出MyBatis&#xff1a;技术原理与实践」书籍的总结笔记。上一篇介绍了反射和动态代理基础&#xff0c;主要是为本篇文章做个铺垫&#xff0c;反射使配置和灵活性大大提高&#xff0c;可以给…

linux ps 进程组,linux进程管理(2)---进程的组织结构

一、目的linux为了不同的进程管理目的&#xff0c;使用了不同的方法组织进程之间的关系&#xff0c;为了体现父子关系&#xff0c;使用了“树形”图&#xff1b;为了对同一信号量统一处理&#xff0c;使用了进程组&#xff1b;为了快速查找某个进程&#xff0c;使用了哈希表&am…

【Qt】Qt之进程间通信(共享内存)【转】

简述 上一节中&#xff0c;我们分享下如何利用Windows消息机制来进行不同进程间的通信。但是有很多局限性&#xff0c;比如&#xff1a;不能跨平台&#xff0c;而且必须两个进程同时存在才可以&#xff0c;要么进程A发了消息谁接收呢&#xff1f; 下面我们来分享另外一种跨平台…

python progressbar print_python print 进度条的例子

def progress(width, percent):print "%s %d%%\r" % ((%%-%ds % width) % (width * percent / 100 * ""), percent),if percent > 100:printsys.stdout.flush()首先&#xff0c;先说明一下print的一些用法:和C语言一样&#xff0c;字符串里的匹配使用‘…

linux中常用的shell脚本,Linux常用shell脚本

1. 设置ssh、scp命令的认证运行一次脚本后&#xff0c;以后再使用ssh或scp命令登录远程机器时不再提示输入密码-----------------setkey.sh开始-------------------------OLDDIRpwdif [ -z "$1" ]; thenecho Need userhost info;exit;fi;cd $HOME;if [ -e "./.s…

HDU 2042:不容易系列之二

不容易系列之二 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 5 Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 你活的不容易&#xff0c;我活…

统计建模与r软件_【统计建模与R软件笔记】008 描述统计量(1)

今天我们开始来学习描述统计量吧&#xff01;位置的度量位置的度量就是用来描述定量资料的集中趋势的统计量&#xff0c;常用的有均值、众数、中位数、百分位数等。1.均值 mean( )形式&#xff1a;mean(x, trim 0, na.rm FALSE)x 是对象(如向量、矩阵、数组或数据框)trim 是计…