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

2023-11-06

经纬度坐标与距离的相互转换

1.经纬度与距离角度的换算关系:

a)在纬度相等的情况下:

经度每隔0.00001度,距离相差约1米;

每隔0.0001度,距离相差约10米;

每隔0.001度,距离相差约100米;

每隔0.01度,距离相差约1000米;

每隔0.1度,距离相差约10000米。

b)在经度相等的情况下:

纬度每隔0.00001度,距离相差约1.1米;

每隔0.0001度,距离相差约11米;

每隔0.001度,距离相差约111米;

每隔0.01度,距离相差约1113米;

每隔0.1度,距离相差约11132米。

c)换算
地球赤道上环绕地球一周走一圈共 40075.04公里
而一圈分成360°
而每1°(度)有60’
每一度一秒在赤道上的长度计算如下:
40075.04km/360°=111.31955km
111.31955km/60’=1.8553258km=1855.3m
而每一分又有60秒
每一秒就代表 1855.3m/60=30.92m
任意两点距离计算公式为
d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos

2 Python代码实现

1.经纬度转换为距离

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.经纬度转换角度代码

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

验证:
选取深圳野生动物园(22.599578, 113.973129)为起点,深圳坪山站(22.6986848, 114.3311032)为终点,结合百度地图、谷歌地图等进行效果验证。
在这里插入图片描述
即,百度测距为38.3km

Google地图手动测距为39.31km
在这里插入图片描述
在这里插入图片描述
参考:
https://blog.csdn.net/qq_23392639/article/details/89446703
http://blog.itblood.com/952.html
http://wenda.tianya.cn/question/151ddd808627a78b

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经纬度坐标与距离的相互转换及其实现 的相关文章

  • java对象的内存模型详解:内存模型及对象头的奥秘

    在面试官的因势利导下 很多人对jvm的内存模型已经耳熟能详 但是对我们经常new 出来的对象 比如new Object 你了解它的内存模型吗 本篇文章将带你走进对象内部 真正去了解这个你最熟悉 也最不熟悉的的对象 一 对象的内存模型 先上图
  • (yolov5.train)-YOLOv3源码解析4-计算损失compute_loss()

    图像算法 yolov5 train YOLOv3源码解析4 计算损失compute loss 简书
  • linux安装anaconda及配置pytorch环境

    文章目录 下载anaconda 使用conda创建新环境 判断是否安装成功 判断pytorch是否安装成功 检验是否可以使用GPU 下载anaconda 这里有多种方法 可以下载到windows然后通过xftp传到linux服务器上 也可以
  • 狂刷200道数据结构与算法,我的华为面试经历分享

    基本概念面试题集 Spring 相关概念梳理 谈谈对Spring loC的理解 谈谈对Spring Dl的理解 BeanFactory 接口和ApplicationContext接口不同点是什么 请介绍你熟悉的Spring 核心类 并说明有
  • 累加器的作用

    累加器和算术逻辑单元 运算场所 指令寄存器 指令译码 定时及各种控制 信号产生电路 1 在运算器中 累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器 能进行加 减 读出 移位 循环移位和求补等操作 是运算器的主要部分 2 在中央
  • 大数据时代的 9 大Key-Value存储数据库

    在过去的十年中 计算世界已经改变 现在不仅在大公司 甚至一些小公司也积累了TB量级的数据 各种规模的组织开始有了处理大数据的需求 而目前关系型数据库在可缩放方面几乎已经达到极限 一个解决方案是使用键值 Key Value 存储数据库 这是一
  • JSR303和拦截器

    目录 一 JSR303 1 pom依赖 二 拦截器 1 什么是拦截器 2 拦截器与过滤器 3 应用场景 4 拦截器的快速入门 三 拦截器链 1 拦截器链的概念 2 TwoHandlerInterceptor java 3 在springmv
  • 912.排序数组

    目录 一 题目 二 代码 一 题目 912 排序数组 力扣 LeetCode 二 代码 class Solution public void MergeSort vector
  • C# 异常:已引发: "线程间操作无效: 从不是创建控件“textBox1”的线程访问它。" (System.InvalidOperationException)

    当使用多线程功能时 在子线程里修改UI控件参数时 如 textBox1 Text str 会引发异常 异常 已引发 线程间操作无效 从不是创建控件 textBox1 的线程访问它 System InvalidOperationExcepti
  • mysql脱库_php+mysql注入拿webshell到脱库

    注 此文章献给那些还对注入不怎么理解的人学习 本次实站过程已经过去一个月了 但是还是写出这个文章 来跟大家分享一下希望大家都能喜欢 就算这次大家再找到此战漏洞也别破坏 毕竟我们只是学习一下 目标站 http www XXXteam cn 注
  • Vue模板语法

    目录 前言 一 插值 1 1 文本 1 2 html 1 3 属性 1 4 class style绑定 1 5 表达式 二 指令 三 过滤器 四 计算属性 监听器 总结 前言 上次分享了Vue的入门 简单的入了个门 本篇文章将要分享的内容为
  • 从零开始学习JavaScript:轻松掌握编程语言的核心技能②

    从零开始学习JavaScript 轻松掌握编程语言的核心技能 一 JavaScript 函数 1 1 JavaScript 函数语法 1 2 局部 JavaScript 变量 1 3 全局 JavaScript 变量 二 JavaScrip
  • 细数阿里达摩院2019年的十个Flag

    戳蓝字 CSDN云计算 关注我们哦 来自 人工智能与大数据 作者 AI小哥 1月2日 阿里达摩院发布 2019十大科技趋势 在未来的一年 科技领域究竟会再次迎来春天 还是继续在寒冬中前行 达摩院给出了自己的判断 该报告覆盖智能城市 语音AI
  • springboot log4j:WARN No appenders could be found for logger

    这里写自定义目录标题 log4j WARN No appenders could be found for logger org springframework web context support StandardServletEnvi
  • 华北电力大学的计算机类专业排名,2018年华北电力大学王牌专业排行榜,考生和家长们都好好看看!...

    华北电力大学有两个校区 一个是北京校区 一个是保定校区 在理科类的院校中 这所大学还是非常不错的 小编有幸去这个学校玩过几次 这个学校的占地面积非常大 环境相对比较优美 而且学校的灯 师资力量也非常大 所以说呢 这次学校还是值得报考的 而且
  • EOS私钥恢复,EOS私钥破解,附私钥恢复破解程序

    EOS私钥恢复 EOS私钥破解 附私钥恢复破解程序 程序地址 https www eos key com 请用谷歌浏览器或火狐浏览器打开才能正常运行
  • 对数据进行补全

    想获取一批数据时 例如 维度 日期 2023 01 03 2023 02 03 品牌 吉利 比亚迪 宝马 指标值 销售数量 但是从源头获取时 只获取了部分数据 做趋势处理时 因为缺少数据图例不好看 想将没有获取的数据进行补全处理 销售数量显

随机推荐

  • DECLARE_MESSAGE_MAP()与消息传递网

    一 总体结构 首先 在 h文件中 DECLARE MESSAGE MAP 然后在 CPP文件中 BEGIN MESSAGE MAP CView CWnd ON COMMAND CViewid 0 END MESSAGE MAP 上面 h中的
  • Kotlin 系统入门到进阶

    目录 前言 Kotlin学习资料 关于Kotlin 你应该学 Kotlin 吗 Android 必备技能 最有可能接替Java的语言 Kotlin 你为什么需要 Kotlin 为什么我要改用Kotlin 如何看待 Kotlin 成为 And
  • 会议OA项目之会议发布(多功能下拉框的详解)

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 Welcome Huihui s Code World 一 主要功能点介绍 二 效果展示 三 前端代码 jsp js 四 后端代码
  • DNS解析与CDN加速

    DNS解析与CDN加速 一 DNS解析 1 域名系统DNS 2 DNS解析 二 CDN加速 1 什么是CDN 2 静态加速 3 动态加速 一 DNS解析 1 域名系统DNS 域名系统的前世今生 域名系统的产生的原因是用户通过形如198 26
  • Web自动化测试流程:从入门到精通,帮你成为测试专家!

    摘要 Web应用程序在今天的软件开发中占据着越来越重要的地位 保证Web应用程序的质量和稳定性是非常必要的 而自动化测试是一种有效的方法 本文将介绍Web自动化测试流程 并提供代码示例 步骤一 选取测试工具 选择适合自己团队的自动化测试工具
  • Linux下安装Mysql5.7,超详细完整教程,以及云mysql连接

    安装前环境检查 1 首先检查自己电脑有没有安装过mysql 输入如下 rpm qa grep mysql 如果有则清理干净在安装 输入 whereis mysql 找到文件夹目录 再把它删除 rpm e nodeps mysql xxxx
  • 华为手机微信与电脑连接到服务器失败怎么办,华为微信到电脑上找不到了怎么办...

    1 华为手机连接电脑后找不到微信保存的视频 应该是在微信专用的文件夹里 文件夹的名字是英文的腾信 如果视频不多可以登陆电脑版微信 然后用文件助手传到电脑再保存 2 华为荣耀10微信存储图片连接电脑找不到 查找微信保存图片的文件信息 打开 文
  • React组件化一

    29 9React课程 第02节 react组件化 第2节 02课react组件化 02课react组件化 02课react组件化 初始化显示constructor构造函数 要使用super 否则没法在内部使用this 2与3之间要对组件进
  • Centos7本地yum安装FTP和HTTP服务

    Centos镜像包下载 http mirror centos org altarch 7 isos 32位 i386 64位 带64的 1 将Vmware中的光驱设置为镜像包 在虚拟机关闭时设置 1 打开虚拟机设置 2 选择CD DVD 3
  • clang简介

    文章目录 clang编译器 clang选项 阶段选择选项 语言选择和模式选项 目标选择选项 代码生成选项 O0 O1 O2 O3 Ofast Os Oz Og O O4 g gline tables only gmodules fstand
  • 适用于 24 V 电源系统的车载网络 ESD 保护

    Nexperia 安世半导体 近日推出符合 AEC Q101 标准的产品组合 其中包含六个 ESD 保护器件 PESD2CANFD36XX Q 旨在保护 LIN CAN CAN FD FlexRay 和SENT 等车载网络 IVN 中的总线
  • 日期补0位

    function getNowFormatDate var day new Date var Year 0 var Month 0 var Day 0 var CurrentDate 初始化时间 Year day getYear 有火狐下2
  • Red Hat Enterprise Linux 8 配置yum源

    Red Hat Enterprise Linux 8 配置YUM源的两种方式 一 本地YUM源 1 备份源文件 cd etc yum repos d mkdir bak mv repo bak 2 挂载镜像 mount t iso9660
  • 面试官都在问

    面试官都在问 Linux命令mpstat详解 1 mpstat的基本用法 mpstat的全称为Multiprocessor Statistics 是一款常用的多核CPU性能分析工具 用来实时查询每个CPU的性能指标 以及所有CPU的平均指标
  • 用qsetting实现文件保存和读取

    QSettings 是 Qt 库中的一个类 可以用来读取和保存应用程序的配置数据 使用 QSettings 可以方便地保存和读取配置信息 比如窗口的大小和位置 最近打开的文件列表等 实现保存文件的步骤如下 创建 QSettings 对象 并
  • OpenCV 3.3.1及Contrib附加库安装教程及问题Undefined reference to cv::xfeatures2d

    INSTALL OPENCV ON UBUNTU OR DEBIAN 1 KEEP UBUNTU OR DEBIAN UP TO DATE sudo apt get y update sudo apt get y upgrade sudo
  • cpp课程设计实验题:编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square 正方形),用函数函数ShowArea()分别显

    编写程序 定义抽象基类Shape 形状 由它派生出3个派生类 Circle 圆形 Rectangle 矩形 和Square 正方形 用函数函数ShowArea 分别显示各种图形的面积 最后还要显示所有图形的总面积 要求用基类指针数组 使它的
  • adb 指令

    1 基本指令 指令 adb version 显示 adb 版本 指令 adb help 帮助信息 查看 adb 所支持的所有命令 指令 adb start server 启动 adb 服务 指令 adb kill server 关闭 adb
  • Unity 分帧加载和分块加载

    分帧加载和分块加载 在我们实际做项目的时候 往往会遇见需要创建大量数据的时候 这时如果在一帧里面大量创建数据 那我们的游戏就会发生卡顿从而降低了用户的体验 为了解决这种情况 可以使用使用分帧加载使得每帧只加载固定数量的数据来解决 也可以使用
  • 经纬度坐标与距离的相互转换及其实现

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