问题描述
1.$GPRMC,013946.00,A,3337.3186,N,11900.4483,E,0.05,218.30,111105,4.5,W,A*20..其中北纬3337.3186东经11900.4483我在网上看到是(度分)格式,是什么意思?怎么转换为度?2.我从GoogleEarth上读的是33°37'31.86'',怎样转换为度?谢谢高手指点
解决方案
解决方案二:
3337.3186==33°37'31.86''...再明显不过了...
解决方案三:
……楼上又说错了。3337.3186的度分格式的意思是,如果是纬度,则是:DDMM.MMMM,如果是经度,则是DDDMM.MMMM3337.3186就是33°37.3186'11900.4483,E119°00.4483'如何分析?可以考虑用正则,正则可以用这个:$GPRMC,(?<time>d+.d+),(?<datavalid>[AV]),(?<lat>(?<latD>d{2})(?<latM>d{2}.d+)),(?<latMask>[NS]),(?<lon>(?<lonD>d{3})(?<lonM>d{2}.d+)),(?<lonMask>[EW]),(?<speed>d+(.d+)?),(?<track>d+(.d+)?),(?<date>d{6}),(?<magvar>d+(.d+)?),[^,]*,(?<posType>[ADEMN])*(?<checkSum>[a-fA-F0-9]{2})
解决方案四:
用这个正则,你可以一次性分析到字符串是否复合规则,并且可以分析出具体的值。具体有哪几个分组不用我说了吧。可以考虑弄个正则工具来分析。或者加我的QQ:32610303,我自己写的正则工具也蛮好用。嘻嘻。
解决方案五:
正则修改一下,刚才多了2个分组。结果没问题,不过这样更快。stringstrData=@"";stringstrP=@"$GPRMC,(?<time>d+.d+),(?<datavalid>[AV]),(?<lat>(?<latD>d{2})(?<latM>d{2}.d+)),(?<latMask>[NS]),(?<lon>(?<lonD>d{3})(?<lonM>d{2}.d+)),(?<lonMask>[EW]),(?<speed>d+(?:.d+)?),(?<track>d+(?:.d+)?),(?<date>d{6}),(?<magvar>d+(?:.d+)?),[^,]*,(?<posType>[ADEMN])*(?<checkSum>[a-fA-F0-9]{2})";Matchm=Regex.Match(strData,strP);if(m.Success){MessageBox.Show(m.Group["lat"].Value);.....其他分组}
解决方案六:
恩。启发。用GPRMC替代GPGGA。不错的选择。GGA里只有UTC时间,没日期的。