python 半正矢公式计算两GPS坐标距离

news2025/1/12 3:01:56

如题,直接上代码吧,需要的拿走。

# haversine公式计算两经纬度点距离
import math
import os
from DebugInfo.DebugInfo import *

_earthR: int = 6371393

class __距离类:
    __m: float

    def __init__(self,
                 m: float = 0):
        self.__m = m

    @property
    def km(self) -> float:
        return self.__m * 0.001

    @km.setter
    def km(self,: float):
        self.__m =* 1000

    @property
    def m(self) -> float:
        return self.__m

    @m.setter
    def m(self,: float):
        self.__m =@property
    def inch(self) -> float:
        return self.__m * 39.3700787402

    @inch.setter
    def inch(self,: float):
        self.__m =/ 39.3700787402

    @property
    def feet(self) -> float:
        return self.__m * 3.280839895

    @feet.setter
    def feet(self,: float):
        self.__m =/ 3.280839895

    @property
    def mi(self) -> float:
        return self.__m * 0.00062137119224

    @mi.setter
    def mi(self,: float):
        self.__m =/ 0.00062137119224

    def __float__(self) -> float:
        return self.__m

# 定义GPS距离解算函数
@秒表
def 球面距离m(基点纬度: float, 基点经度: float, 矢点纬度: float, 矢点经度: float) -> __距离类:
    """
    haversine公式计算两个经纬度坐标点的球面距离, 单位m
    https://blog.csdn.net/spatial_coder/article/details/116605509
    :param 基点纬度: float
    :param 基点经度: float
    :param 矢点纬度: float
    :param 矢点经度: float
    :return: 距离类对象
    """
    基点纬度 = math.radians(基点纬度)
    矢点纬度 = math.radians(矢点纬度)
    基点经度 = math.radians(基点经度)
    矢点经度 = math.radians(矢点经度)

    经度差 = math.fabs(基点经度 - 矢点经度)
    纬度差 = math.fabs(基点纬度 - 矢点纬度)

    def _hav(角差: float) -> float:
        s = math.sin(角差 / 2)
        return s * s

    h = _hav(纬度差) + math.cos(基点纬度) * math.cos(矢点纬度) * _hav(经度差)

    return __距离类(2 * _earthR * math.asin(math.sqrt(h)))


if __name__ == '__main__':
    画板 = 调试模板()
    上海坐标 = (121.48, 31.20)
    北京坐标 = (116.40, 39.91)

    画板.添加一行('上海坐标', 上海坐标)
    画板.添加一行('北京坐标', 北京坐标)
    画板.添加一行('两地距离/球面距离m', 球面距离m(上海坐标[1], 上海坐标[0], 北京坐标[1], 北京坐标[0]).km)
    画板.添加一行('百度地图实测距离为:', '1070.30km').修饰行(黄字)

    画板.分隔线.总长度(os.get_terminal_size().columns - len(画板.缩进字符) - len(画板.打印头)).修饰(黄字).展示()
    画板.展示表格()

以上脚本运行如下:
半正矢公式计算两GPS坐标点距离

偏差说明

以上计算所用的GPS数据彩集自 高德开放API, 距离测量来自百度地图,由于不在一个平台上拾取的坐标点,这可能是导致GPS距离计算结果为 1071km, 而距离测试结果为1070km,存在1km的偏差。

insCode

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

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

相关文章

【第四阶段】kotlin语言的set集合

1.set集合定义&#xff0c;不允许重复元素打印 package Stage4fun main() {//set集合定义&#xff0c;不允许重复元素打印// val set : Set<String> setOf<String>("java","kotlin","c","java","c")val set s…

C语言_分支和循环语句(2)

文章目录 前言一、for 循环1.1语法1.2 for 语句的循环控制变量1.3 一些 for 循环的变种 二、do ... while()循环2.1 do 语句的语法2.2 do ... while 循环中的 break 和 continue2.3 练习1 **- 计算n的阶乘**2. - **在一个有序数组中查找具体的某个数字 n** 二分查找算法&#x…

BES A2DP音乐与HFP通话默认音量配置

我V hezkz17进数字音频系统研究开发交流答疑群(课题组) 1 2

浅谈 Android Binder 监控方案

在 Android 应用开发中&#xff0c;Binder 可以说是使用最为普遍的 IPC 机制了。我们考虑监控 Binder 这一 IPC 机制&#xff0c;一般是出于以下两个目的&#xff1a; 卡顿优化&#xff1a;IPC 流程完整链路较长&#xff0c;且依赖于其他进程&#xff0c;耗时不可控&#xff0…

linux开启端口

目录 1.查看防火墙状态 1.1 开启防火墙 1.2 再次查看防火墙状态 2.开启指定端口 3. 重启防火墙 4.重新加载防火墙 5.查看已经开启的端口 1.查看防火墙状态 firewall-cmd --state 如果返回的是 not running&#xff0c;那么需要先开启防火墙&#xff0c; 1.1 开启防火…

MATLAB中符号变量的使用方法解析

简介 MATLAB中常常使用符号变量&#xff0c;这里定义符号变量的函数是syms 使用方法如下 syms x y z 其中&#xff0c;x、y、z 是符号变量&#xff0c;可以是任意字母、数字或下划线组合而成的字符串。 举例1&#xff1a; 代码 以下是一个简单的例子&#xff0c;演示如何…

省级智慧农业大数据平台项目规划建设方案[195页Word]

导读&#xff1a;原文《省级智慧农业大数据平台项目规划建设方案[195页Word]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 1 农业大数据平台项目概述 1.1 建设…

Ant Design组件动态嵌套表单制作

使用Ant Design组件我们需要使用Form.List对表单进行操作 1.首先将Form.List放入form组件中&#xff0c;并name命名&#xff0c; 2.设置一个命名为数组&#xff0c;添加编辑和删除事件 3.以刚刚设置的数组设置map循环&#xff0c;可以在循环的的括号可以设置对嵌套表单控制 4.…

周赛360(脑经急转弯、贪心、树上倍增)

文章目录 周赛360[2833. 距离原点最远的点](https://leetcode.cn/problems/furthest-point-from-origin/)脑经急转弯 [2834. 找出美丽数组的最小和](https://leetcode.cn/problems/find-the-minimum-possible-sum-of-a-beautiful-array/)贪心 [2835. 使子序列的和等于目标的最少…

【网络】多路转接——五种IO模型 | select

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 五种IO模型 | select &#x1f367;五种IO模型&#x1f367;select&#x1f9c1;认识接口&#x1f9c1…

爬虫逆向实战(二十七)--某某招标投标网站招标公告

一、数据接口分析 主页地址&#xff1a;某网站 1、抓包 通过抓包可以发现数据接口是page 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现&#xff0c;请求参数是一整个密文 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通…

Linux(实操篇三)

Linux实操篇 Linux(实操篇三)1. 常用基本命令1.7 搜索查找类1.7.1 find查找文件或目录1.7.2 locate快速定位文件路径1.7.3 grep过滤查找及"|"管道符 1.8 压缩和解压类1.8.1 gzip/gunzip压缩1.8.2 zip/unzip压缩1.8.3 tar打包 1.9 磁盘查看和分区类1.9.1 du查看文件和…

小米面试题——不用加减乘除计算两数之和

前言 &#xff08;1&#xff09;刷B站看到一个面试题&#xff0c;不用加减乘除计算两数之和。 &#xff08;2&#xff09;当时我看到这个题目&#xff0c;第一反应就是感觉这是一个数电题目。不过需要采用C语言的方式编写出来。 &#xff08;3&#xff09;不过看到大佬的代码之…

【Python】PySpark 数据输入 ① ( RDD 简介 | RDD 中的数据存储与计算 | Python 容器数据转 RDD 对象 | 文件文件转 RDD 对象 )

文章目录 一、RDD 简介1、RDD 概念2、RDD 中的数据存储与计算 二、Python 容器数据转 RDD 对象1、RDD 转换2、转换 RDD 对象相关 API3、代码示例 - Python 容器转 RDD 对象 ( 列表 )4、代码示例 - Python 容器转 RDD 对象 ( 列表 / 元组 / 集合 / 字典 / 字符串 ) 三、文件文件…

C#基础知识点记录

目录 课程一、C#基础1.C#编译环境、基础语法2.Winform-后续未学完 课程二、Timothy C#底层讲解一、类成员0常量1字段2属性3索引器5方法5.1值参数&#xff08;创建副本&#xff0c;方法内对值的操作&#xff0c;不会影响原来变量的值&#xff09;5.2引用参数&#xff08;传的是地…

Python基础小讲堂之条件分支与循环

万丈高楼平地起&#xff0c;今天给大家讲讲python中的&#xff1a;条件分支与循环。在学条件分支与循环之前&#xff0c;先掌握一下python的基本操作符。算术操作符&#xff1a; - * / % ** //对于算数操作符的前四个加减乘除&#xff0c;大家都懂&#xff0c;在py…

linux中安装nodejs,卸载nodejs,更新nodejs,git

注意&#xff0c;我的是Ubuntu系统 卸载nodejs 卸载node sudo apt-get remove nodejs清理掉自动安装的并且不需要软件包 sudo apt autoremove查看node相关的文件 sudo whereis node如果有文件需要手动删除文件 删除该文件命令 sudo rm -rf /usr/local/bin/node在此查看node…

毕业设计-基于深度学习的单通道语音降噪技术

目录 前言 课题背景和意义 实现技术思路 一、基于子空间投影的时域语音降噪 二、基于噪声信息辅助的双阶段语音降噪 三、感知高相关时频损失函数研究 实现效果图样例 最后 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学…

AS报错:CreateProcess error=206,文件名或扩展名太长

背景&#xff1a;今天编译公司的项目&#xff0c;第一次编译Ok&#xff0c;修改代码之后&#xff0c;第二次编译报错&#xff0c;报错信息&#xff1a;CreateProcess error206&#xff0c;文件名或扩展名太长。 同时删除build文件夹时报错&#xff1a;另一个程序正在使用此文件…

智能设计师的崛起:探寻智元兔AI设计师的神奇之旅

AI绘图是指利用人工智能技术来生成或改善绘图作品的方法和工具。通过使用深度学习和生成对抗网络等算法&#xff0c;人工智能可以学习和模仿艺术家的创作风格&#xff0c;生成逼真的艺术作品。 智元兔-AI设计师是一款基于人工智能设计工具&#xff0c;利用机器学习和深度学习技…