两经纬度之间的距离计算
以下是计算两经纬度之间距离的代码,分为:头文件、源代码和测试代码三部分。
具体如下:
1 // LatLonDistanceDlg.h : 头文件 2 // 3 4 #pragma once 5 6 typedef struct 7 { 8 double dLongitude; 9 double dLatitude; 10 }MyLatLong_T,*pMyLatLong_T; 11 12 // CLatLonDistanceDlg 对话框 13 class CLatLonDistanceDlg : public CDialog 14 { 15 ...... 16 17 void DistanceOfTwoPositions(MyLatLong_T ll_PosStart, MyLatLong_T ll_PosEnd, double &dis); 18 // 实现 19 protected: 20 ...... 21 }; 22 23 // LatLonDistanceDlg.cpp : 实现文件 24 // 25 26 // 常量定义 27 const double gConstPI = 3.1415926536; 28 // WGS-84 长轴半径 29 #define EARTH_LONG_RADIUS_WGS84 6378137.0 // 单位: 米 30 // WGS-84 地球扁率(earth flattening) 31 #define EARTH_FLATTENING_WGS84 298.257223563 32 // meters per sea mile 33 #define METERS_PER_SEA_MILE 1852.0 34 35 // 输入参数: MyLatLong_T 是个结构,包括经度和纬度 36 // 输出参数: dDistance 就是返回的大圆距离 37 void CLatLonDistanceDlg::DistanceOfTwoPositions(MyLatLong_T StartLatLong, MyLatLong_T EndLatLong, double &dDistance) 38 { 39 double DInRadians; 40 double dTmpVal = 0.0; 41 double dFi = 0.0; 42 double dFi2 = 0.0; 43 double dDrda = EndLatLong.dLongitude - StartLatLong.dLongitude; 44 double dTmp = 0.0; 45 double dTmp2 = 0.0; 46 47 dDrda = dDrda * gConstPI / 180.0; // in radians 48 dFi = StartLatLong.dLatitude; 49 dFi2 = EndLatLong.dLatitude; 50 51 dFi = dFi * gConstPI / 180.0; // in radians 52 dFi2 = dFi2 * gConstPI / 180.0; // in radians 53 54 dTmpVal = sin(dFi) * sin(dFi2) + cos(dFi) * cos(dFi2) * cos(dDrda); 55 if(fabs(dTmpVal) > 1.0) 56 { 57 AfxMessageBox(L"Invalidate value of arccos!"); // Use Unicode Character Set 58 return ; 59 } 60 DInRadians = acos(dTmpVal); // in radians 61 dTmp = (sin(dFi) + sin(dFi2)); 62 dTmp2 = (sin(dFi) - sin(dFi2)); 63 dTmpVal = ((3 * sin(DInRadians) - DInRadians) * dTmp * dTmp ) / (1 + cos(DInRadians)); 64 dTmpVal = dTmpVal - ((3 * sin(DInRadians) + DInRadians) * dTmp2 * dTmp2) / (1 - cos(DInRadians)); 65 66 dDistance = EARTH_LONG_RADIUS_WGS84 * DInRadians + (EARTH_LONG_RADIUS_WGS84 / (4 * EARTH_FLATTENING_WGS84)) * dTmpVal;//in meters 67 } 68 69 // 测试代码 70 // TODO: 在此添加额外的初始化代码 71 { 72 // 深圳百合酒店 纬度:22.601369,经度114.115145 73 // 深圳百合星城 纬度:22.601334,经度114.115807 74 // 深圳布吉农批 纬度:22.583596,经度114.112227 75 MyLatLong_T LatLon; 76 MyLatLong_T LatLon2; 77 MyLatLong_T LatLon3; 78 double dDis = 0.0; 79 80 LatLon.dLatitude = 22.601369; 81 LatLon.dLongitude = 114.115145; 82 LatLon2.dLatitude = 22.601334; 83 LatLon2.dLongitude = 114.115807; 84 LatLon3.dLatitude = 22.583596; 85 LatLon3.dLongitude = 114.112227; 86 87 DistanceOfTwoPositions(LatLon,LatLon2,dDis); 88 TRACE("%f\r\n",dDis); // 68.177865 89 DistanceOfTwoPositions(LatLon,LatLon3,dDis); 90 TRACE("%f\r\n",dDis); // 1990.891295 91 }
转载于:https://www.cnblogs.com/91program/p/5206700.html
两经纬度之间的距离计算相关推荐
- Mysql: LBS实现查找附近的人 (两经纬度之间的距离)
1. 利用GeoHash封装成内置数据库函数的简易方案: A:Mysql 内置函数方案,适合于已有业务,新增加LBS功能,增加经纬度字段方可,避免数据迁移 B:Mongodb 内置函数方案,适合中小型 ...
- 经纬度之间的距离计算
来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米/*** 角度弧 ...
- mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- java计算两个经纬度之间的距离
前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户.实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上 ...
- 高德经纬度距离计算php,计算两个经纬度之间的距离 单位(m)
/** * 计算两个经纬度之间的距离 单位(m) * * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ publ ...
- hive 计算两个经纬度之间的距离
select 6378137*2*ASIN(SQRT(POWER(SIN((lat1-lat2)*ACOS(-1)/360),2) + COS(lat1*ACOS(-1)/180)*COS(lat2* ...
- php经纬度之间的距离计算公式,php计算两个经纬度地点之间距离的方法分享
用php计算两个指定的经纬度地点之间的距离,代码: /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return ...
- php两个经纬度之间距离,如何使用php计算出两个经纬度之间的距离
通过使用php来计算两个经纬度之间的距离. /* * 计算出两个经纬度之间的距离(单位:米) * */public function getdistanceAction() { $lng1=117.2 ...
最新文章
- 行走智慧城市 数据要有统一“身份”
- 5g时代新型基础设施建设白皮书 下载_全文下载 | 5G时代新型基础设施建设白皮书...
- 提高程序员职场价值的10大技巧
- 利用CSS3 animation绘制动态卡通人物,无需使用JS代码
- oracle 主键自增
- http服务器和application服务器区别
- 北大飞跃手册_活动推介|2020年吉林大学飞跃手册预发布会即将召开!
- pip安装:Cannot uninstall ''. It is a distutils installed project and thus we cannot accurately....解决办法
- 百度云盘停止服务器,又一家网盘关闭!不要再问为什么百度网盘要收费了
- libuv之msys2环境下编译
- Go:Gnome sort 侏儒排序(附完整源码)
- 500G 史上最全的JAVA全套教学视频网盘
- 南瓜派php,南瓜派 巧克力塔
- 使用cloc进行代码统计
- PHP explode() 函数与implode() 函数
- 牛津计算机本科申请,为什么牛津和剑桥不能同时申请?本科报哪一个的录取机会更大?...
- CSC改派+延期|影像学医生赴英国伦敦国王学院从事访学研究
- 华为路由器RIP V2作业
- 【python | linux07】OS模块的用法及python换行符问题
- 中国科学院计算机院士,中国科学院院士王怀民莅临计算机学院交流指导