关于通过GPS模块获取的坐标数据无法在Google地图上正确标记的问题说明

来源:互联网 发布:管家婆端口号 编辑:程序博客网 时间:2024/05/21 10:58

先看以下几个现象:
1. 通过GPS模块获取的坐标数据在Google地图标记,发现与真实位置相差甚远
2. 通过Google地球软件获取的坐标数据在Google地图标记,也与真实位置相差甚远;因为Google地球反馈的坐标信息也是通过卫星GPS获取的。
3. 通过Google地图(网页版,右键“这是什么”即可查看)获取的坐标数据在Google地图标记,可以精确的标记到Google地图上。

然后了解几个术语:
1. 火星坐标系:天朝有关部门规定,为了保证国家安全,所有的地图公司提供的地图必须对实际的GPS坐标进行一定的偏移,偏移后的GPS坐标系俗称火星坐标系,而这个偏移是不固定的,具体的算法是国家机密。
2. WGS84:国际通行的坐标体系标准,而GPS模块获取到的坐标正是WGS84坐标系
3. 北京54坐标系/西安80坐标系:天朝通用的经过偏移后的坐标系标准(而民航使用的是国际标准WGS84,否则国际航班没法正常飞行)

网上牛人给的解决方法:
1. 网页在线版:http://map.yanue.net/gps.html,其中第一个GPS原始数据转换结果还比较准确
2. C语言实现版:http://xcodev.com/131.html (需要加载一个78M的数据文件,普通手持设备可能比较吃力)
3. C#版:基于C语言而来,http://freshflower.iteye.com/blog/1606960
4. 通过百度API转换:http://blog.csdn.net/gengye304/article/details/7942219

后来又找到一个比较简单的换算方法:比如給出一個DMS座標例如W87°43'41 ",它是瑣細的轉換它成一定數量的小數程度運用以下方法:

  • 計算秒鐘, 43 ' 41的總數" = (43*60 + 41) = 2621秒。
  • 分數部分是3600除的秒鐘的總數。 2621/3600 = 0.728056
  • 增加分數程度到整體程度導致決賽成績: 87 + 0.728056 = 87.728056
  • 因為它是西部經度座標,結果应该以负数表示:-87.728056

轉換從小數程度嚮DMS

給出一個小數縱向座標例如-87.728055它瑣細的轉換它成DMS形式。 知道將是必要的它是否是一個緯度或縱向座標為了充分地轉換它。 方法是如下:

  • 減去座標的整數部分,離開分數part。 整數是程度的數量。 87.728055 = 87度。
  • 乘剩餘的分數部分以60。 這在整數部分將導致一定數量的分鐘。 0.728055 x 60 = 43.6833 = 43分鐘。
  • 乘分鐘的數量的分數部分以60,導致一定數量的秒鐘。 0.6833 x 60 = 40.998 = 41秒。 算作是此40秒,削小數,圓它到41是可能的,或者保留整個數字。

<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击