GPS中NMEA解析与GPS坐标的纠偏

最近在使用SIM808模块,该模块是GPS+GPRS一体的,定位精度是小于2.5米,在这里我只说明一下GPGGA的数据的解析与坐标的纠偏。
GPS固定数据输出语句($GPGGA) 这是一帧GPS定位的主要数据,也是使用最广的数据。为了便于理解,下面举例说明 $GPGGA语句各部分的含义。笔者所在地 接收到的$GPGGA语句的内容。
例1:$GPGGA,120829.000,2516.1489,N,11019.2156,E,1,6,3.17,187.7,M,-20.1,M,,*74 
其标准格式为:$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,
(11),(12)*hh(CR)(LF)  
各部分所对应的含义为:   
(1)定位UTC时间:05时09分01秒  
(2)纬度(格式ddmm.mmmm:即dd度,mm.mmmm分);  
(3)N/S(北纬或南纬):北纬39度31.4449分;  
(4)经度(格式dddmm.mmmm:即ddd度,mm.mmmm分);  
(5)E/W(东经或西经):东经116度43.5123分;  
(6)质量因子(0=没有定位,1=实时GPS,2=差分GPS):1=实时GPS;  
(7)可使用的卫星数(0~8):可使用的卫星数=07;  
(8)水平精度因子(1.0~99.9);水平精度因子=1.4;  
(9)天线高程(海平面,-9999.9~99999.9,单位:m);天线高程=76.2m);   
(10)大地椭球面相对海平面的高度(-999.9~9999.9,单位:m):-7.0m;   
(11)差分GPS数据年龄,实时GPS时无:无;   
(12)差分基准站号(0000~1023),实时GPS时无:无;
在这里我重点说一下坐标的转换,在这里提取出来的坐标是2516.1489,N,11019.2156,E,那么如果在百度地图上用的话就是得用小数的表示方 法,得把ddmm.mmmm转换成小数即:
2516.1489,N  = 25 + 16.1489/60  = 25.2691483333333N
11019.2156,E = 110+19.2156  /  60 =  110.32026E
此时已经得到小数形式的GPS坐标了,但是这个坐标在百度地图上没法直接使用使用,这里就要进行纠偏了,为什么要纠偏呢?
测绘局以国家安全为理由,用法律的形式对所有在天朝发行的地图类产品加了强制性规范,要求所有地图类产品都必须使用国家测绘局的一种加偏移的算法,对地图的真实坐标进行加偏移处理,之后才可能通过审批准许上市。因此,国家的所有官方及商用地图的坐标都是偏移的,这种偏移属于非线性的,偏移量在300至500米不等,偏移方向也不定。这种加过偏移的地图坐标就是所谓“火星坐标”
正好在百度地图里面有个原始坐标转换(当然得申请百度开发者账号),对这个坐标就可以进行纠偏了。大家如果没有百度账号的时候可以试一下我自己做的一个简单的纠偏网页 http://119.29.152.134/baidumap/ 下面是我的效果图: GPS中NMEA解析与GPS坐标的纠偏_第1张图片

你可能感兴趣的:(嵌入式)