1. 程式人生 > >GPS北斗雙模技術應用開發研究--資料解析

GPS北斗雙模技術應用開發研究--資料解析

         上一篇文章大家介紹了幾個重要的概念,那下面我們就來解析一下這樣的雙模輸出log,在解析之前我們來看看各個重要標準欄位的意義。筆者在實際開發中只用到了其中的四個,分別是GGA,GSA,GSV,RMC,GLL,當然還有其他一些欄位,感覺有些是重複的,根據需要解析就好了。下面就分別介紹一下:

$XXGGA,(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時無:無;   
*總和校驗域;  
hh 總和校驗數:65   
(CR)(LF)回車,換行。 
$XXGSA,<1>,<2>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<4>,<5>,<6>*hh<CR><LF>
<1> 模式,M=手動,A=自動
<2> 定位型別,1=沒有定位,2=2D定位,3=3D定位
<3> PRN碼(偽隨機噪聲碼),正在用於解算位置的衛星號(01~32,前面的0也將被傳輸)。
<4> PDOP位置精度因子(0.5~99.9)
<5> HDOP水平精度因子(0.5~99.9)
<6> VDOP垂直精度因子(0.5~99.9)
$XXGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…<4>,<5>,<6>,<7>*hh<CR><LF>
<1> GSV語句的總數
<2> 本句GSV的編號
<3> 可見衛星的總數(00~12,前面的0也將被傳輸)
<4> PRN碼(偽隨機噪聲碼)(01~32,前面的0也將被傳輸)
<5> 衛星仰角(00~90度,前面的0也將被傳輸)
<6> 衛星方位角(000~359度,前面的0也將被傳輸)
<7> 信噪比(00~99dB,沒有跟蹤到衛星時為空,前面的0也將被傳輸)
注:<4>,<5>,<6>,<7>資訊將按照每顆衛星進行迴圈顯示,每條GSV語句最多可以顯示4顆衛星的資訊。其他衛星資訊將在下一序列的NMEA0183語句中輸出。
$XXRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<1> UTC時間,hhmmss(時分秒)格式
<2> 定位狀態,A=有效定位,V=無效定位
<3> 緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)
<4> 緯度半球N(北半球)或S(南半球)
<5> 經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)
<6> 經度半球E(東經)或W(西經)
<7> 地面速率(000.0~999.9節,前面的0也將被傳輸)
<8> 地面航向(000.0~359.9度,以真北為參考基準,前面的0也將被傳輸)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也將被傳輸)
<11> 磁偏角方向,E(東)或W(西)
<12> 模式指示(僅NMEA0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=資料無效)
$XXGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*hh<CR><LF>
<1> 緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)
<2> 緯度半球N(北半球)或S(南半球)
<3> 經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)
<4> 經度半球E(東經)或W(西經)
<5> UTC時間,hhmmss(時分秒)格式
<6> 定位狀態,A=有效定位,V=無效定位
<7> 模式指示(僅NMEA0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=資料無效)

     上面這些說明都是固定的,也就是NMEA0183協議規定好了的。上面在GGA這些開頭之前,筆者用了XX來模糊資料頭,是因為單GPS模組出來的是GP開頭,但是如果是雙模的GGA可能就是GNGGA,GSA跟GSV的話需要區分GPS還是北斗,如果是GPS的一般還是用GPGSV,北斗的話可能就是BDGSV,當然這個資料頭需要根據具體模組來定,好多模組也可以通過命令去修改資料頭。下面就看看一段有效的雙模log:
$GNGGA,033327.000,2234.6973,N,11355.2708,E,1,14,0.7,55.57,M,-2.7,M,0.0,0000,1.3*70
$GNGLL,2234.6973,N,11355.2708,E,033327.000,A,0*32
$GPGSA,A,3,05,02,13,10,17,12,06,26,25,09,,,1.5,0.7,1.3,0.8*34
$BDGSA,A,3,01,03,04,05,,,,,,,,,1.5,0.7,1.3,0.8*2B
$GPGSV,3,1,10,10,55,021,42,05,55,256,45,02,47,341,43,13,41,139,42*71
$GPGSV,3,2,10,06,41,044,39,12,34,275,42,17,32,132,42,09,22,053,35*7A
$GPGSV,3,3,10,26,14,184,37,25,11,308,35*7A
$BDGSV,2,1,06,03,62,188,41,01,49,130,41,02,34,247,35,04,32,111,39*69
$BDGSV,2,2,06,05,23,255,37,10,03,198,35*68
$GNRMC,033327.000,A,2234.6973,N,11355.2708,E,0.000,50.711,281114,,,A*49
$RUANT,2*42
$GNGGA,033328.000,2234.6973,N,11355.2708,E,1,14,0.7,55.57,M,-2.7,M,0.0,0000,1.3*7F
$GNGLL,2234.6973,N,11355.2708,E,033328.000,A,0*3D
$GPGSA,A,3,05,02,13,10,17,12,06,26,25,09,,,1.5,0.7,1.3,0.8*34
$BDGSA,A,3,01,03,04,05,,,,,,,,,1.5,0.7,1.3,0.8*2B
$GPGSV,3,1,10,10,55,021,42,05,55,256,45,02,47,341,43,13,41,139,42*71
$GPGSV,3,2,10,06,41,044,39,12,34,275,42,17,32,132,42,09,22,053,35*7A
$GPGSV,3,3,10,26,14,184,38,25,11,308,35*75
$BDGSV,2,1,06,03,62,188,40,01,49,130,41,02,34,247,36,04,32,111,38*6A
$BDGSV,2,2,06,05,23,255,36,10,03,198,35*69
$GNRMC,033328.000,A,2234.6973,N,11355.2708,E,0.000,50.711,281114,,,A*46
$RUANT,2*42

   從GGA,GLL可以分析出它的位置,GSV,GSA可以看出分別有多少顆活動衛星,它的PRN,SNR,方位,有無星曆等,下面就看一下雙模顯示圖片,各個可見衛星的情況:




              上面的衛星資訊是實際路測的時候截圖下來的,天線匹配還可以再優化一點,SNR就會更好一些。 下一篇文章介紹一下android部分location的一些管理資訊。