【GPS】 根据GPS坐标求取两点间距离算法
以下为通过经纬度坐标值求取两点间距离的算法,计算通过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坐标求取两点间距离算法相关推荐
- 关系模式候选键求取的算法
在学习数据库的时候,经常要碰到候选键的求取,但是一开始的时候,根本搞不清楚怎么去求,最近看了一些文章和资料,终于搞明白了. 首先来看候选键的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属 ...
- 基于matlab已知地球两点坐标求取距离和方位角函数distance
一.语法 1.语法1 [arclen,az] = distance(lat1,lon1,lat2,lon2): R=6371.393; % 地球半径,单位:km 地点1(维度lat1,经度lon1), ...
- Manachar算法(马拉车算法):快速求取最长回文子串
当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...
- 什么是陀螺仪的dr算法_一种基于DR/GPS/MM的组合定位系统数据融合算法
摘 要: 针对盲区中使用INS惯性导航系统进行定位存在误差积累的问题,提出一种基于DR航位推算.GPS全球定位系统和MM地图匹配的组合定位系统数据融合算法.该算法利用GPS和MM中得到的位置信息,一方 ...
- 算法学习:后缀数组 height的求取
[前置知识] 后缀数组 [定义] [LCP]全名最长公共前缀,两个后缀之间的最长前缀,以下我们定义 lcp ( i , j ) 的意义是后缀 i 和 j 的最长前缀 [z函数] 函数z [ i ] 表 ...
- MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转
MATLAB中关于点云的几个函数的简单应用.作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里. 全文都是作者自己结合MATLAB文档的理解,欢迎指教. 1. ...
- gps数据转坐标c语言,GPS原始坐标转百度地图坐标(纯C代码)
一.环境介绍 GPS模块型号:中科微电子GPS模块 GPS输出的原始数据帧: $GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0. ...
- 已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- python坐标表示_已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- 用机器学习算法来求取战斗力公式
一般游戏的战力公式,是一个线性回归方程: a*x+b*y+c*z+- =p 其中,p是战斗力,[a,b,c-]是属性,[x,y,z-]是属性价值. 属性一般包括:最大生命值,攻击力,防御力,闪避,暴击 ...
最新文章
- php程序应用实例,PHP教程.应用实例1_php
- php pdo 参数绑定,PDO绑定参数的其他方法
- 记事本安卓软件代码设计_用轻量级工具 Notepad3 替代 36 岁的微软记事本
- [Data Structure Algorithm] 有向无环图的拓扑排序及关键路径
- python列表去重_python列表的去重
- 瑞星linux病毒库位置,瑞星杀毒软件V16+怎样离线升级病毒库 病毒库离线升级办法...
- 华为语音解锁设置_华为解锁屏(华为语音解锁屏幕)
- java突然无法加载主类_Java 找不到或无法加载主类的修复方法
- Ubuntu 解压缩7z文件
- 怀旧服服务器怎么调整显卡性能,魔兽世界怀旧服排队显卡问题太高怎么回事 显卡温度高解决办法...
- Suspense示例
- 协同开发 ----以码云为例
- 高级驾驶辅助系统ADAS技术介绍
- 转:ARM 与RealView
- HTML中<img src=““>中图片路径的用法
- flask开启debug调试模式
- 2015上半年手机GPU排行榜
- 35岁程序员该何去何从
- arch安装包请求404错误的问题
- Java中的除法结果与除数被除数的类型有关
热门文章
- 计算机报名照片在线修图,详细!2020国家公务员考试报名确认专题照片处理工具使用教程...
- 电脑W7系统怎样安装鸿蒙系统,家用电脑升级win7系统的操作方法
- 因子分析在SPSS中的应用
- 【行业】盘点BAT如何进行技术布阵
- CAD 2022卸载方法,如何完全彻底卸载删除清理干净CAD各种残留注册表和文件? 【转载】
- (附源码)python房屋租赁管理系统 毕业设计 745613
- UCI数据集+机器学习+十折交叉验证
- vivo android 6.0 root,vivo X6 A(全网通)如何获取ROOT权限教程
- IDEA eclipse快捷键大全
- php 三菱plc,三菱FX系列PLC编程语言概述及之间的转换关系