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

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)相关推荐

  1. 通过经纬度坐标计算距离的方法(实为通过一个经纬度和距离角度求另一个经纬度)

    转自:https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html 通过经纬度坐标计算距离的方法(经纬度距离 ...

  2. 经纬度坐标与距离的相互转换及其实现

    经纬度坐标与距离的相互转换 1.经纬度与距离角度的换算关系: 2 Python代码实现 1.经纬度与距离角度的换算关系: a)在纬度相等的情况下: 经度每隔0.00001度,距离相差约1米: 每隔0. ...

  3. 已知经纬度坐标求两点间距离,用python表示

    已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...

  4. python坐标表示_已知经纬度坐标求两点间距离,用python表示

    已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...

  5. 给定经纬度计算距离_通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ

    通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索"通过经纬度坐标计算距离的方法",发现网上大部分都是如下的代码: #define PI 3.14159265 stat ...

  6. 通过经纬度坐标计算距离的方法(经纬度距离计算)

    通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索"通过经纬度坐标计算距离的方法",发现网上大部分都是如下的代码: #define PI 3.14159265 stat ...

  7. matlab根据经纬度测角度,经纬度之间的距离和角度算法

    经纬度之间的距离和角度算法.对于做3S的人来说应该是会碰到的问题,所以暂且记下,以备后用 来源: http://blog.csdn.net/fdnike/archive/2007/07/18/1696 ...

  8. 经纬度坐标转换为工程坐标

    1. 绪论 在施工和工程测量时,经常需要将GPS坐标转换为工程中所使用的坐标.在Bing上检索到的类似问题,基本描述为两个坐标系的转换,但实际上并非如此. 本文将详细解释转换过程和转换方法. 1.1 ...

  9. 西安80转换成北京独立计算机,WGS84经纬度坐标转换为西安80高斯投影坐标.

    dsfqfzneiphp 通过 波段编号18和相应的中央子午线为105°,表示计算基于6度波段划分. 您要注意标题" WGS84经纬度坐标转换为西安80高斯投影坐标",也就是说,在 ...

最新文章

  1. php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法
  2. 其实,我是一名程序员!
  3. HDU 1269 移动城堡 联通分量 Tarjan
  4. I2C原理及应用实例
  5. Python3之Django Web框架中间件???
  6. 如果今天设计了Java:同步接口
  7. Hadoop之Flume详解
  8. mysql datetime类型按天查询_mysql 时间相关sql , 按天、月、季度、年等条件进行查询...
  9. (31)SystemVerilog语言编写D触发器
  10. NFT火了,12岁男孩用 Python 写了一个「表情包」,赚了250万
  11. ajax 验证成功 转跳,利用ajax实现登录:验证完用户信息后如何保存用户信息并实现跳转...
  12. Xcode Missing Private key
  13. 机器学习笔记(二十六):支撑向量机(SVM)
  14. PostgreSQL shapefile 导入导出
  15. 2008年IT产业38个判断(转载)
  16. 完美替代Windows任务计划程序 —— 定时执行专家
  17. docker redis
  18. 副业该怎么选择,适合新手的四个副业项目,零基础也可操作的兼职
  19. ubuntu 18.04.2 server基本安装配置
  20. 会议邀请〡第六届全国高校电子信息类课程教学研讨会邀请函

热门文章

  1. Anchor和RPN的浅薄理解(三)-mmdetection中Anchor生成源码分析
  2. 【招聘】周末双休,我在创龙科技等您
  3. 快速搞懂web2.0
  4. Iptables与Firewalld防火墙
  5. 中科院计算机博士学位答辩 顾智宇,中科院论文答辩情况和学位授予决议书.doc...
  6. NStepSCAN和FSCAN
  7. 两类错误率、Neyman-Pearson 决策与 ROC 曲线
  8. 零宽字符隐写——2021网刃杯CTF 签到
  9. c++内置函数实现字符串翻转(reverse,strrev,string 构造函数)
  10. NB-IOT 无线电流传感器 设备状态监测 微功耗测控终端 无线电量传感器功率 变送器电机监控