经纬度坐标转换为距离及角度(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 radiansradLatA = 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) ** 2c2 = (math.sin(x) + x) * (math.sin(pA) - math.sin(pB)) ** 2 / math.sin(x / 2) ** 2dr = 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 - radLonAy = 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
距离与角度均无问题。
经纬度坐标转换为距离及角度(Python)相关推荐
- 通过经纬度坐标计算距离的方法(实为通过一个经纬度和距离角度求另一个经纬度)
转自:https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html 通过经纬度坐标计算距离的方法(经纬度距离 ...
- 经纬度坐标与距离的相互转换及其实现
经纬度坐标与距离的相互转换 1.经纬度与距离角度的换算关系: 2 Python代码实现 1.经纬度与距离角度的换算关系: a)在纬度相等的情况下: 经度每隔0.00001度,距离相差约1米: 每隔0. ...
- 已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- python坐标表示_已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- 给定经纬度计算距离_通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索"通过经纬度坐标计算距离的方法",发现网上大部分都是如下的代码: #define PI 3.14159265 stat ...
- 通过经纬度坐标计算距离的方法(经纬度距离计算)
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索"通过经纬度坐标计算距离的方法",发现网上大部分都是如下的代码: #define PI 3.14159265 stat ...
- matlab根据经纬度测角度,经纬度之间的距离和角度算法
经纬度之间的距离和角度算法.对于做3S的人来说应该是会碰到的问题,所以暂且记下,以备后用 来源: http://blog.csdn.net/fdnike/archive/2007/07/18/1696 ...
- 经纬度坐标转换为工程坐标
1. 绪论 在施工和工程测量时,经常需要将GPS坐标转换为工程中所使用的坐标.在Bing上检索到的类似问题,基本描述为两个坐标系的转换,但实际上并非如此. 本文将详细解释转换过程和转换方法. 1.1 ...
- 西安80转换成北京独立计算机,WGS84经纬度坐标转换为西安80高斯投影坐标.
dsfqfzneiphp 通过 波段编号18和相应的中央子午线为105°,表示计算基于6度波段划分. 您要注意标题" WGS84经纬度坐标转换为西安80高斯投影坐标",也就是说,在 ...
最新文章
- php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法
- 其实,我是一名程序员!
- HDU 1269 移动城堡 联通分量 Tarjan
- I2C原理及应用实例
- Python3之Django Web框架中间件???
- 如果今天设计了Java:同步接口
- Hadoop之Flume详解
- mysql datetime类型按天查询_mysql 时间相关sql , 按天、月、季度、年等条件进行查询...
- (31)SystemVerilog语言编写D触发器
- NFT火了,12岁男孩用 Python 写了一个「表情包」,赚了250万
- ajax 验证成功 转跳,利用ajax实现登录:验证完用户信息后如何保存用户信息并实现跳转...
- Xcode Missing Private key
- 机器学习笔记(二十六):支撑向量机(SVM)
- PostgreSQL shapefile 导入导出
- 2008年IT产业38个判断(转载)
- 完美替代Windows任务计划程序 —— 定时执行专家
- docker redis
- 副业该怎么选择,适合新手的四个副业项目,零基础也可操作的兼职
- ubuntu 18.04.2 server基本安装配置
- 会议邀请〡第六届全国高校电子信息类课程教学研讨会邀请函
热门文章
- Anchor和RPN的浅薄理解(三)-mmdetection中Anchor生成源码分析
- 【招聘】周末双休,我在创龙科技等您
- 快速搞懂web2.0
- Iptables与Firewalld防火墙
- 中科院计算机博士学位答辩 顾智宇,中科院论文答辩情况和学位授予决议书.doc...
- NStepSCAN和FSCAN
- 两类错误率、Neyman-Pearson 决策与 ROC 曲线
- 零宽字符隐写——2021网刃杯CTF 签到
- c++内置函数实现字符串翻转(reverse,strrev,string 构造函数)
- NB-IOT 无线电流传感器 设备状态监测 微功耗测控终端 无线电量传感器功率 变送器电机监控