GPS数据格式解析
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GPS數據格式解析
簡介
GPS發送數據以行為單位,數據格式如下:
$信息類型,x,x,x,x,x,x,x,x,x,x,x,x,x
每行以字符”$”開頭,以<CR><LF>為結尾,CR—Carriage Return,LF—Line Feed,表示回車和換行。信息類型有以下幾種,如表1,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表1 GPS數據信息類型分類
| 信息類型 | 英文語義 | 中文語義 |
| GPRMC | Recommended Minimum Specific GPS/TRANSIT Data(RMC) | 推薦定位信息 |
| GPVTG | Track Made Good and Ground Speed(VTG) | 地面速度信息 |
| GPGGA | Global Positioning System Fix Data(GGA) | 全球定位信息 |
| GPGSA | GPS DOP and Active Satellites(GSA) | 當前衛星信息 |
| GPGSV | GPS Satellites in View(GSV) | 可見衛星信息 |
| GPGLL | Geographic Position(GLL) | 地理定位信息 |
以下分類介紹:
1.$GPRMC(RecommendedMinimum Specific GPS/TRANSIT Data)
推薦定位信息$GPRMC的標準格式如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPRMC |
| 字段1 | UTC時間 | hhmmss.ss |
| 字段2 | 狀態 | A/V,A代表有效,V代表無效 |
| 字段3 | 緯度 | ddmm.mmmm |
| 字段4 | 北緯/南緯 | N/S,N表示北緯,S表示南緯 |
| 字段5 | 經度 | ddmm.mmmm |
| 字段6 | 東經/西經 | E/W,E表示東經,W表示西經 |
| 字段7 | 速度 | 節(knots),1 knots=1.852km/h |
| 字段8 | 方位角 | 度(以真北為參考基準) |
| 字段9 | UTC日期 | 日月年,ddmmyy |
| 字段10 | 磁偏角 | 000~180度 |
| 字段11 | 磁偏角方向 | E/W,東/西 |
| 字段12 | 模式僅NMEA0183 3.00版本輸出 | A:自動,D:差分,E:估測,N:無效 |
| 字段13 | 校驗值 | hh |
?
以$GPRMC,092427.604,V,4002.1531,N,11618.3097,E,0.000,0.00,280814,,E,N*08為例,各字段的含義如下:
| 字段 | 參數 | 格式 |
| 字段0 | $GPRMC | 表示GPS信息類型為GPRMC |
| 字段1 | 092427.604 | 定位時間09時24分27.604秒 |
| 字段2 | V | 定位無效 |
| 字段3 | 4002.1531 | 緯度:40度02.1531分 |
| 字段4 | N | 北緯 |
| 字段5 | 11618.3097 | 經度:116度18.3097分 |
| 字段6 | E | 東經 |
| 字段7 | 0.000 | 速度 |
| 字段8 | 0.00 | 方位角 |
| 字段9 | 280814 | UTC日期28日08月14年 |
| 字段10 | ? | 為空表示磁偏角 |
| 字段11 | E | 磁偏角方向是東 |
| 字段12 | N | 模式:無效 |
| 字段13 | 08 | 校驗和 |
?
2.$GPVTG(TrackMade Good and Ground Speed)
地面速度信息$GPVTG的標準格式如下:
$GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*hh<CR><LF>
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPVTG |
| 字段1 | 以真北為基準的地面航向 | 000~359度 |
| 字段2 | 航向標志位,真北參照系 | 通常為T |
| 字段3 | 以磁北為基準的地面航向 | 000~359度 |
| 字段4 | 航向標志位,磁北參照系 | 通常為M |
| 字段5 | 水平運動速度 | 0.00 |
| 字段6 | 單位,節 | N |
| 字段7 | 水平運動速度 | 0.00 |
| 字段8 | 單位,km/h | K |
| 字段9 | 模式(僅NMEA0183 3.00版本輸出) | A:自動,D:差分,E:估測,N:無效 |
| 字段10 | hh | 校驗和 |
以$GPVTG,0.0,T,,M,0.00,N,0.00,K,N*50為例,個字段含義如下:
| 字段 | 參數 | 格式 |
| 字段0 | $GPVTG | 表示GPS信息類型為GPVTG |
| 字段1 | 0.0 | 地面速度 |
| 字段2 | T | 航向標志位,真北方向 |
| 字段3 | 無 | 地面速度 |
| 字段4 | M | 航向標志位,磁北方向 |
| 字段5 | 0.00 | 水平運動速度 |
| 字段6 | N | 單位:節 |
| 字段7 | 0.00 | 水平運動速度 |
| 字段8 | K | 單位:km/h |
| 字段9 | N | 無效 |
| 字段10 | 50 | 校驗和 |
3. $GPGGA(Global Positioning System Fix Data)
全球定位信息$GPGGA的標準格式為:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*hh<CR><LF>
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPGGA |
| 字段1 | UTC時間 | Hhmmss.sss |
| 字段2 | 緯度 | ddmm.mmmm |
| 字段3 | 北緯/南緯 | N/S |
| 字段4 | 經度 | dddmm.mmmm |
| 字段5 | 東經/西經 | E/W |
| 字段6 | 定位質量指標 | 0:定位無效,1:實時GPS,2:差分GPS |
| 字段7 | 使用衛星數量 | 00~12 |
| 字段8 | 水平精度 | 0.5~99.9 |
| 字段9 | 天線離海平面的高度 | -9999.9~9999.9米 |
| 字段10 | 高度單位 | 通常為M:米 |
| 字段11 | 大地橢球面相對海平面的高度 | -999.9~9999.9 |
| 字段12 | 高度單位 | 通常為M:米 |
| 字段13 | 差分GPS數據期限 | ? |
| 字段14 | 差分參考基站標號 | 0000~1023 |
| 字段15 | hh | 校驗和 |
以$GPGGA,082006.000,3852.9276,N,11527.4283,E,1,08,1.0,20.6,M,,,,0000*35為例,各字段的含義如下:
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | 表示GPS信息類型為GPGGA |
| 字段1 | 082006.000 | UTC時間08時20分06.000秒 |
| 字段2 | 3852.9276 | 緯度38度52.9276分 |
| 字段3 | N | 北緯 |
| 字段4 | 11527.4283 | 經度115度27.4283分 |
| 字段5 | E | 東經 |
| 字段6 | 1 | 實時GPS |
| 字段7 | 08 | 可使用衛星數08 |
| 字段8 | 1.0 | 水平精度因子1.0 |
| 字段9 | 20.6 | 天線高程20.6米 |
| 字段10 | M | 天線高程單位:米 |
| 字段11 | 無 | 大地橢球面相對海平面的高度 |
| 字段12 | 無 | 高度單位 |
| 字段13 | 無 | 差分GPS數據期限 |
| 字段14 | 0000 | 實時GPS無 |
| 字段15 | 35 | 校驗和 |
4. $GPGSA(GPS DOP and Active Satellites)
當前衛星信息$GPGSA的標準格式如下:
$GPGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*hh<CR><LF>
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPGGA |
| 字段1 | 模式 | M:手動,A:自動 |
| 字段2 | 定位型式 | 1:未定位,2:二維定位,3:三維定位 |
| 字段3 | 第1信道正在使用的衛星RPN碼編號 | Pseudo Random Noise,偽隨機噪聲碼,01~32表示天空中使用的衛星編號,最多可接收12顆衛星信息 |
| 字段4 | 第2信道正在使用的衛星RPN碼編號 | |
| 字段5 | 第3信道正在使用的衛星RPN碼編號 | |
| 字段6 | 第4信道正在使用的衛星RPN碼編號 | |
| 字段7 | 第5信道正在使用的衛星RPN碼編號 | |
| 字段8 | 第6信道正在使用的衛星RPN碼編號 | |
| 字段9 | 第7信道正在使用的衛星RPN碼編號 | |
| 字段10 | 第8信道正在使用的衛星RPN碼編號 | |
| 字段11 | 第9信道正在使用的衛星RPN碼編號 | |
| 字段12 | 第10信道正在使用的衛星RPN碼編號 | |
| 字段13 | 第11信道正在使用的衛星RPN碼編號 | |
| 字段14 | 第12信道正在使用的衛星RPN碼編號 | |
| 字段15 | PDOP綜合位置精度因子 | 0.5~99.9 |
| 字段16 | HDOP水平精度因子 | 0.5~99.9 |
| 字段17 | VDOP垂直精度因子 | 0.5~99.9 |
| 字段18 | hh | 校驗和 |
?
5.$GPGSV(GPS Satellites in View)
可見衛星信息$GPGSV的標準格式如下:
$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…,<4>,<5>,<6>,<7>*hh(CR)(LF)
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPGGA |
| 字段1 | 總的GSV語句電文數 | ? |
| 字段2 | 當前GSV語句號 | ? |
| 字段3 | 可視衛星總數 | 00~12 |
| 字段4 | 衛星編號 | 01~32 |
| 字段5 | 衛星仰角 | 00~90度 |
| 字段6 | 衛星方位角 | 000~359度 |
| 字段7 | 信噪比(C/No) | 00~99dB,0表示未接收到信號 |
| 字段8 | hh | 校驗和 |
注:每條語句最多包含四顆衛星的信息,每顆衛星包含四個數據項:衛星編號,衛星仰角,衛星方位角,信噪比。
以$GPGSV,2,1,08,06,33,240,45,10,36,074,47,16,21,078,44,17,36,313,42*78?為例,各字段含義如下:
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | 表示GPS信息類型為GPGGA |
| 字段1 | 2 | GPS語句電文數為2 |
| 字段2 | 1 | 當前GSV語句號為1 |
| 字段3 | 08 | 可視衛星總數為8 |
| 字段4 | 06 | 06號衛星 |
| 字段5 | 33 | 衛星仰角33度 |
| 字段6 | 240 | 衛星方位角240度 |
| 字段7 | 25 | 信噪比45dB |
| 字段8 | 10 | 10號衛星 |
| 字段9 | 36 | 衛星仰角36度 |
| 字段10 | 074 | 衛星方位角074度 |
| 字段11 | 47 | 信噪比47dB |
| 字段12 | 16 | 16號衛星 |
| 字段13 | 21 | 衛星仰角21度 |
| 字段14 | 078 | 衛星方位角078度 |
| 字段15 | 44 | 信噪比44dB |
| 字段16 | 17 | 17號衛星 |
| 字段17 | 36 | 衛星仰角36度 |
| 字段18 | 313 | 衛星方位角313度 |
| 字段19 | 42 | 信噪比42dB |
| 字段20 | 78 | 校驗和 |
?
6.$GPGLL(Geographic Position)
地理定位信息$GPGLL的標準格式如下:
$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>*hh<CR><LF>
| 字段 | 參數 | 格式 |
| 字段0 | 幀頭 | $GPGLL |
| 字段1 | 緯度 | ddmm.mmmm |
| 字段2 | 北緯/南緯 | N/S |
| 字段3 | 經度 | dddmm.mmmm |
| 字段4 | 東經/西經 | E/W |
| 字段5 | UTC時間(時分秒) | hhmmss |
| 字段6 | 狀態標志位 | A:有效,V無效 |
| 字段7 | hh | 校驗和 |
7、java解析經緯度$GPRMC數據經緯度
/*** 解析緯度* @param lat* @return*/public String parseLat(String lat,String type){//緯度 double latitude = Double.parseDouble(lat.substring(0, 2));latitude+= Double.parseDouble(lat.substring(2))/60;if("N".equals(type)){ //北緯return String.valueOf(latitude);}else{ //南緯return "-"+String.valueOf(latitude);}}/*** 解析經度* @param lon* @return*/public String parseLon(String lon,String type){//經度double longitude=Double.parseDouble(lon.substring(0, 3));longitude+= Double.parseDouble(lon.substring(3))/60;if("E".equals(type)){ //東經return String.valueOf(longitude);}else{ //西經return "-"+String.valueOf(longitude);}}?
總結
- 上一篇: 2021-08-27
- 下一篇: Qt 在VS2005安装过程