以下为通过经纬度坐标值求取两点间距离的算法,计算通过c++实现,在计算过程中已考虑到地球的弧度,经验证算法正确可行,精度为0.001米。

#include "pch.h"
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <iomanip>using namespace std;double Earth_Radius = 6378.137;
double OutDistance = 0;
double OutAzimuth  = 0;double Angle2Rad(double Angle)
{return Angle * M_PI / 180.0;
}double Rad2Angle(double Rad)
{return Rad * 180.0 / M_PI;
}/* Lat:纬度       Lng:经度 */
void GetDistance(double Lat1, double Lng1, double Lat2, double Lng2,double *P_OutDistance,double *P_OutAzimuth)
{double RadLat1 = Angle2Rad(Lat1);double RadLat2 = Angle2Rad(Lat2);double RadLng1 = Angle2Rad(Lng1);double RadLng2 = Angle2Rad(Lng2);double Lat_Dif = RadLat1 - RadLat2;double Lng_Dif = RadLng1 - RadLng2;/**----------- Calculate Distance-----------**/double Distance = 2 * asin(sqrt(pow(sin(Lat_Dif / 2.0), 2)+ cos(RadLat1) * cos(RadLat2)* pow(sin(Lng_Dif / 2.0), 2)));Distance = Distance * Earth_Radius;//Distance = round(Distance * 10000) / 10000;Distance = Distance * 1000;/**----------- Calculate Azimuth-----------**/double Azimuth = sin(RadLat1) * sin(RadLat2)+ cos(RadLat1) * cos(RadLat2) * cos(RadLng2- RadLng1);Azimuth = sqrt(1 - pow(Azimuth, 2));Azimuth = cos(RadLat2) * sin(RadLng2 - RadLng1) / Azimuth; Azimuth = Rad2Angle(asin(Azimuth));*P_OutDistance = Distance;*P_OutAzimuth  = Azimuth;
}void main(void)
{GetDistance(0, 0, 0, 0,&OutDistance,&OutAzimuth);cout << "Distance = " << setprecision(7) <<  OutDistance << endl;cout << "Azimuth = "  << setprecision(4) <<  OutAzimuth  << endl;getchar();
}

【GPS】 根据GPS坐标求取两点间距离算法相关推荐

  1. 关系模式候选键求取的算法

    在学习数据库的时候,经常要碰到候选键的求取,但是一开始的时候,根本搞不清楚怎么去求,最近看了一些文章和资料,终于搞明白了. 首先来看候选键的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属 ...

  2. 基于matlab已知地球两点坐标求取距离和方位角函数distance

    一.语法 1.语法1 [arclen,az] = distance(lat1,lon1,lat2,lon2): R=6371.393; % 地球半径,单位:km 地点1(维度lat1,经度lon1), ...

  3. Manachar算法(马拉车算法):快速求取最长回文子串

    当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...

  4. 什么是陀螺仪的dr算法_一种基于DR/GPS/MM的组合定位系统数据融合算法

    摘 要: 针对盲区中使用INS惯性导航系统进行定位存在误差积累的问题,提出一种基于DR航位推算.GPS全球定位系统和MM地图匹配的组合定位系统数据融合算法.该算法利用GPS和MM中得到的位置信息,一方 ...

  5. 算法学习:后缀数组 height的求取

    [前置知识] 后缀数组 [定义] [LCP]全名最长公共前缀,两个后缀之间的最长前缀,以下我们定义 lcp ( i , j ) 的意义是后缀 i 和 j 的最长前缀 [z函数] 函数z [ i ] 表 ...

  6. MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转

    MATLAB中关于点云的几个函数的简单应用.作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里. 全文都是作者自己结合MATLAB文档的理解,欢迎指教. 1. ...

  7. gps数据转坐标c语言,GPS原始坐标转百度地图坐标(纯C代码)

    一.环境介绍 GPS模块型号:中科微电子GPS模块 GPS输出的原始数据帧: $GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0. ...

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

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

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

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

  10. 用机器学习算法来求取战斗力公式

    一般游戏的战力公式,是一个线性回归方程: a*x+b*y+c*z+- =p 其中,p是战斗力,[a,b,c-]是属性,[x,y,z-]是属性价值. 属性一般包括:最大生命值,攻击力,防御力,闪避,暴击 ...

最新文章

  1. php程序应用实例,PHP教程.应用实例1_php
  2. php pdo 参数绑定,PDO绑定参数的其他方法
  3. 记事本安卓软件代码设计_用轻量级工具 Notepad3 替代 36 岁的微软记事本
  4. [Data Structure Algorithm] 有向无环图的拓扑排序及关键路径
  5. python列表去重_python列表的去重
  6. 瑞星linux病毒库位置,瑞星杀毒软件V16+怎样离线升级病毒库 病毒库离线升级办法...
  7. 华为语音解锁设置_华为解锁屏(华为语音解锁屏幕)
  8. java突然无法加载主类_Java 找不到或无法加载主类的修复方法
  9. Ubuntu 解压缩7z文件
  10. 怀旧服服务器怎么调整显卡性能,魔兽世界怀旧服排队显卡问题太高怎么回事 显卡温度高解决办法...
  11. Suspense示例
  12. 协同开发 ----以码云为例
  13. 高级驾驶辅助系统ADAS技术介绍
  14. 转:ARM 与RealView
  15. HTML中<img src=““>中图片路径的用法
  16. flask开启debug调试模式
  17. 2015上半年手机GPU排行榜
  18. 35岁程序员该何去何从
  19. arch安装包请求404错误的问题
  20. Java中的除法结果与除数被除数的类型有关

热门文章

  1. 计算机报名照片在线修图,详细!2020国家公务员考试报名确认专题照片处理工具使用教程...
  2. 电脑W7系统怎样安装鸿蒙系统,家用电脑升级win7系统的操作方法
  3. 因子分析在SPSS中的应用
  4. 【行业】盘点BAT如何进行技术布阵
  5. CAD 2022卸载方法,如何完全彻底卸载删除清理干净CAD各种残留注册表和文件? 【转载】
  6. (附源码)python房屋租赁管理系统 毕业设计 745613
  7. UCI数据集+机器学习+十折交叉验证
  8. vivo android 6.0 root,vivo X6 A(全网通)如何获取ROOT权限教程
  9. IDEA eclipse快捷键大全
  10. php 三菱plc,三菱FX系列PLC编程语言概述及之间的转换关系