GPS观测文件格式说明解析
- 格式:ppt
- 大小:513.50 KB
- 文档页数:13
二、GPS输出数据的格式分析GPS接收OEM板的型号甚多、性能各异,但它们的GPS定位信息串行输出格式大多采用美国国家海洋电子协会制定的NMEA-0183通信标准格式。
其输出数据采用的是ASCII码,内容包含了纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息,常用语句有6种,包括GGA、GLL、GSA、GSV、RMC和VTG。
我们也可以通过GPS专用设置软件或普通的串口调试软件发送相应的命令语句给OEM板,把GPS OEM板设置为每隔若干毫秒发送哪种或哪几种NMEA语句,然后该OEM板将这些设置参数存储到板上的EEPROM芯片内,此后该OEM板将按照这些设置每隔相应的毫秒数发送出一个或几个GPS输出NMEA语句。
根据不同的应用需要,设置选择不同的输出记录语句以及它们的发送时间间隔,如本系统我们只关心其时间、经纬度、海拔高度、地面速度信息以及卫星使用数信息,因而可只选用GGA,VTG记录语句并设成每1s发送一次。
不过须注意,这些设置信息只在系统本次上电,并设置后方有效,在下次重新上电时需重新设置。
一条$GPGGA语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。
该数据帧的结构及各字段释义如下:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);<1> UTC时间,格式为hhmmss.sss;<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);<3> 纬度半球,N或S(北纬或南纬)<4> 经度,格式为dddmm.mmmm(第一位零也将传送);<5> 经度半球,E或W(东经或西经)<6> 定位质量指示,0=定位无效,1=定位有效;<7> 使用卫星数量,从00到12(第一个零也将传送)<8> 水平精确度,0.5到99.9<9> 天线离海平面的高度,-9999.9到9999.9米M 指单位米<10>大地水准面高度,-9999.9到9999.9米M 指单位米<11>差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量<12> 差分参考基站标号,从0000到1023(首位0也将传送)。
目前GPS(全球定位系统)定位应用市场日趋成熟,正在进入应用的高速发展时期。
看到论坛里不断有人提问关于GPS的问题。
现将个人对GPS的了解写出来跟大家一块探讨。
1、 GPS应用简介近年来GPS系统,已经在大地测绘、海上渔用、车辆定位监控、建筑、农业等各个领域得到广泛应用。
从九十年代我国引进GPS定位技术开始,经过十多年的市场培育,GPS定位应用进入了发展的最好时机,未来十年基于GPS的应用将会改变我们的生活和工作方式。
目前市场上的大部分GPS接受模块都是通过RS232串口与MCU进行数据传输的。
这些数据包括经度、纬度、海拔高度、时间、卫星使用情况等基本信息。
开发人员再依据这些基本数据,进行数据处理来完成整套的定位系统软件。
2、数据格式在进行数据接受编程之前,先介绍一下该模块的数据格式。
它支持NMEA-0183输出格式。
信息如下:GGA位置测定系统定位资料(Global Positioning System Fix Data)GSV 导航卫星资料(GNSS Satellites in View)RMC导航卫星特定精简资料(Recommended Minimum Specific GNSS Data)VTG 方向及速度等相关资料(Course Over Ground and Ground Speed)由于文章篇幅问题,笔者在这里只以接收GGA数据为例,格式如下:$GPGGA,hhmmss,dddmm.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx*CS例:$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,,,,*1F说明见表:上面例子中,我们可读出位置信息:北纬24度46.5241分,西经121度00.1536分格林威治时间:3点37分44秒3 部分程序代码(c++)//初始化串口//入口:strComm(串口名) //返回:TRUE(成功);FALSE(失败) BOOL CGPSDlg::InitComm(CString strComm) { int i; DCB dcb; COMMTIMEOUTS TimeOuts; for (i=0; i<3; i++) //串口最多初始化3次{ m_hComm = CreateFile(strComm, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (m_hComm != INV ALID_HANDLE_V ALUE) break; } if (i == 3) //串口初始化失败{ AfxMessageBox("串口初始化失败..."); return FALSE; } SetupComm(m_hComm, MAXLENGTH, MAXLENGTH); //设置发送接收缓冲区大小TimeOuts.ReadIntervalTimeout = 0;//设定5个超时参数TimeOuts.ReadTotalTimeoutMultiplier = 0; TimeOuts.ReadTotalTimeoutConstant = 500; TimeOuts.WriteTotalTimeoutMultiplier = 0; TimeOuts.WriteTotalTimeoutConstant = 500; SetCommTimeouts(m_hComm, &TimeOuts); //设置超时参数GetCommState(m_hComm, &dcb); //获得通信状态dcb.fAbortOnError = FALSE; //有错误不停止dcb.BaudRate = CBR_4800; //波特率4800 dcb.ByteSize = 8; //8位dcb.Parity = NOPARITY; //奇校验dcb.StopBits = ONESTOPBIT; //1位停止位SetCommState(m_hComm, &dcb); //设置通信状态PurgeComm(m_hComm, PURGE_TXCLEAR|PURGE_RXCLEAR); //清空发送和接收缓冲区return TRUE; } //获得GPS参数//注意:从GPS接收到的字符串已经在m_strRecv中,由于是定时接收,所以在这个字符串的头和尾都可能存在// 不完整的NMEA输出字符串,在处理时要特别注意//返回:TRUE(格式正确);FALSE(格式错误) BOOL CGPSDlg::GetGPSParam() { int i,j; CString str,strNEMA; //先判断是否接收到数据if (m_strRecv.IsEmpty()) return FALSE; //若字符串不是以'$'开头的,必须删掉这部分不完整的if (m_strRecv[0] != '$') { i = m_strRecv.Find('\n', 0); if (i == -1) return FALSE; //尾部未接收完整,必须等接收完后才能删除m_strRecv.Delete(0, i+1); //尾部已接收完整(尾部为\r\n结束),删除不完整的部分} //截取完整的NMEA-0183输出语句(m_strRecv中可能有多条语句,每条间以\r\n分隔) for (;;) { i = m_strRecv.Find('\n', 0); if (i == -1) break; //所有的完整输出语句都已经处理完毕,退出循环//截取完整的NMEA-0183输出语句strNEMA = m_strRecv.Left(i+1); m_strRecv.Delete(0, i+1); //下面对各种输出语句进行分别处理if (strNEMA.Find("$GPRMC",0) == 0) { //该输出语句中的各项以','分隔for (i=j=0; strNEMA!='\r'; i++) //j为逗号的计数器{ if (strNEMA == ',') { j++; str = ""; for (i++; strNEMA!=','&&strNEMA!='\r'; i++) str += strNEMA; //str为某项的值i--; //对各项数据分别处理switch (j) { case 1: //时间(UTC) m_strTime = str.Left(6); m_strTime.Insert(2, ':'); m_strTime.Insert(5, ':'); break; case 2: //状态(A-数据有效;V-数据无效,还未定位) if (str == "A") m_strStatus = "有效数据"; else if(str == "V") m_strStatus = "正在定位..."; else m_strStatus = "非法数据格式"; break; case 3: //纬度(ddmm.mmmm) str.Insert(2, "度"); str += "分"; m_strLatitude = str; break; case 4: //纬度指示(N-北纬;S-南纬) if (str == "N") m_strLatitude.Insert(0, "北纬"); else m_strLatitude.Insert(0, "南纬"); break;case 5: //经度(dddmm.mmmm) str.Insert(3, "度"); str += "分"; m_strLongitude = str; break; case 6: //经度指示(E-东经;W-西经) if (str == "E") m_strLongitude.Insert(0, "东经"); else m_strLongitude.Insert(0, "西经"); break; case 7: //速度(单位:节) m_strSpeed = str; break; case 8: //航向(单位:度) m_strCourse = str; break; case 9: //日期(UTC) m_strDate = ""; m_strDate += "20"; m_strDate += str[4]; m_strDate += str[5]; m_strDate += "-"; m_strDate += str[2]; m_strDate += str[3]; m_strDate += "-"; m_strDate += str[0]; m_strDate += str[1]; break; default: break; } } } } else if (strNEMA.Find("$GPGGA",0) == 0) { } else if (strNEMA.Find("$GPGSA",0) == 0) { } else if (strNEMA.Find("$GPGSV",0) == 0) { } else if (strNEMA.Find("$GPGLL",0) == 0) { } else if (strNEMA.Find("$GPVTG",0) == 0) { } else return FALSE; //格式错误} return TRUE; } 相关的主题文章:-------------------------------------------------------------------------------------------------------一、NMEA0183标准语句1、 Global Positioning System Fix Data(GGA)GPS定位信息$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF><1> UTC时间,hhmmss(时分秒)格式<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<3> 纬度半球N(北半球)或S(南半球)<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)<5> 经度半球E(东经)或W(西经)<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)<8> HDOP水平精度因子(0.5~99.9)<9> 海拔高度(-9999.9~99999.9)<10> 地球椭球面相对大地水准面的高度<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)2、 GPS DOP and Active Satellites (GSA)当前卫星信息$GPGSA,<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也将被传输)。
GPS数据格式a.GPS固定数据输出语句($GPGGA)这是一帧GPS定位的主要数据,也是使用最广的数据。
$GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。
该数据帧的结构及各字段释义如下:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR>< LF>$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);<1> UTC时间,格式为hhmmss.sss;<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);<3> 纬度半球,N或S(北纬或南纬)<4> 经度,格式为dddmm.mmmm(第一位零也将传送);<5> 经度半球,E或W(东经或西经)<6> 定位质量指示,0=定位无效,1=定位有效;<7> 使用卫星数量,从00到12(第一个零也将传送)<8> 水平精确度,0.5到99.9<9> 天线离海平面的高度,-9999.9到9999.9米M 指单位米<10> 大地水准面高度,-9999.9到9999.9米M 指单位米<11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量<12> 差分参考基站标号,从0000到1023(首位0也将传送)。
GPS数据格式详解第一篇:GPS数据格式详解GPS数据格式(2009-05-15 11:15:05)一、NMEA0183标准语句1、Global Positioning System Fix Data(GGA)GPS定位信息$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10 >,M,<11>,<12>*hh <1> UTC时间,hhmmss(时分秒)格式<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<3> 纬度半球N(北半球)或S(南半球)<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)<5> 经度半球E(东经)或W(西经)<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算 <7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)<8> HDOP水平精度因子(0.5~99.9)<9> 海拔高度(-9999.9~99999.9)<10> 地球椭球面相对大地水准面的高度<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)2、GPS DOP and Active Satellites(GSA)当前卫星信息$GPGSA,<1>,<2>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3 >,<3>,<3>,<3>,<4>,<5>,<6>*hh <1> 模式,M=手动,A=自动<2> 定位类型,1=没有定位,2=2D定位,3=3D定位<3> PRN码(伪随机噪声码),正在用于解算位置的卫星号(01~32,前面的0也将被传输)。
GPS数据包格式解析四种定位系统:1、美国的全球定位系统(Global Positioning System,GPS)2、俄罗斯的格罗拉斯(Global Nabigation Satellite System,GLONASS)3、中国的北⽃卫星导航系统(BeiDou Navigation Satellite System,BDS)4、欧盟的伽利略卫星导航系统(Galileo Satellite Navigation System,GALILEO)GGA:定位信息GLL:地理定位信息GSA:当前卫星信息GSV:可见卫星信息RMC:推荐最⼩定位信息VTG:地⾯速度信息常⽤的定位模块有单模和双模单模就只有⼀种定位系统(GPS 或 GLONASS 或 BDS)双模就包括两种定位系统(GPS+GLONASS 或 GPS+BDS)不论哪种模式的数据包,只是前缀不同,后⾯的格式都是相同的。
$xxGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1字段0:$xxGGA,标明该包数据为定位信息字段1:UTC时间,hhmmss.sss,时分秒格式字段2:纬度ddmm.mmmm,度分格式(前导位数不⾜则补0)字段3:纬度 N(北纬)或S(南纬)字段4:经度dddmm.mmmm,度分格式(前导位数不⾜则补0)字段5:经度 E(东经)或W(西经)字段6:定位状态,0=未定位,1=⾮差分定位,2=差分定位,3=⽆效PPS,6=正在估算字段7:正在使⽤的卫星数量(00 - 12)(前导位数不⾜则补0)字段8:HDOP⽔平精度因⼦(0.5 - 99.9)字段9:海拔⾼度(-9999.9 - 9999.9)字段10:地球椭圆⾯相对⼤地⽔准⾯的⾼度字段11:差分时间(从最近⼀次接收到差分信号开始的秒数,如果不是差分定位将为空)字段12:查分站ID号0000 - 1023(前导位数不⾜则补0,如果不是差分定位将为空)字段13:校验值(异或校验)$xxGLL,4250,5589,S,14718.5084,E,092204.999,A*2D字段0:$xxGLL,表明该包数据为地理定位信息字段1:纬度ddmm.mmmm,度分格式(前导位数不⾜则补0)字段2:纬度N(北纬)或S(南纬)字段3:经度dddmm.mmmm,度分格式(前导位数不⾜则补0)字段4:经度 E(东经)或W(西经)字段5:UTC时间,hhmmss.sss格式字段6:状态,A=定位,V=未定位字段7:检验值(异或校验)$xxGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A字段0:$xxGSA,表明该包数据为当前卫星信息字段1:定位模式,A=⾃动⼿动2D/3D,M=⼿动2D/3D字段2,定位类型,1=未定位,2=2D定位,3=3D定位字段3:PRN码(伪随机噪声码),第1信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段4:PRN码(伪随机噪声码),第2信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段5:PRN码(伪随机噪声码),第3信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段6:PRN码(伪随机噪声码),第4信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段7:PRN码(伪随机噪声码),第5信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段8:PRN码(伪随机噪声码),第6信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段9:PRN码(伪随机噪声码),第7信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段10:PRN码(伪随机噪声码),第8信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段11:PRN码(伪随机噪声码),第9信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段12:PRN码(伪随机噪声码),第10信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段13:PRN码(伪随机噪声码),第11信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段14:PRN码(伪随机噪声码),第12信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段15:PDOP综合位置精度因⼦(0.5 - 99.9)字段16:HDOP⽔平精度因⼦(0.5 - 99.9)字段17:VDOP垂直精度因⼦(0.5 - 99.9)字段18:校验值(异或校验)$xxGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70字段0:$xxGSV,表明该包数据为可见卫星信息字段1:本次GSV 语句的总数⽬(1 - 3)字段2:本条GSV 语句是本次GSV 语句的第⼏条(1 - 3)字段3:当前可见卫星总数(00 - 12)(前导位数不⾜则补0)字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不⾜则补0)字段5:卫星仰⾓(00 - 90)度(前导位数不⾜则补0)字段6:卫星⽅位⾓(00 - 359)度(前导位数不⾜则补0)字段7:信噪⽐(00-99)dbHz字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不⾜则补0)字段9:卫星仰⾓(00 - 90)度(前导位数不⾜则补0)字段10:卫星⽅位⾓(00 - 359)度(前导位数不⾜则补0)字段11:信噪⽐(00-99)dbHz字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不⾜则补0)字段13:卫星仰⾓(00 - 90)度(前导位数不⾜则补0)字段14:卫星⽅位⾓(00 - 359)度(前导位数不⾜则补0)字段15:信噪⽐(00-99)dbHz字段16:校验值(异或校验)$xxRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50字段0:$xxRMC,表明该包数据为推荐最⼩定位信息字段1:UTC 时间,hhmmss.sss 格式字段2:状态,A=定位,V=未定位字段3:纬度ddmm.mmmm,度分格式(前导位数不⾜则补0)字段4:纬度N(北纬)或S(南纬)字段5:经度dddmm.mmmm,度分格式(前导位数不⾜则补0)字段6:经度E(东经)或W(西经)字段7:速度,节,Knots字段8:⽅位⾓,度字段9:UTC ⽇期,DDMMYY 格式字段10:磁偏⾓,(000 - 180)度(前导位数不⾜则补0)字段11:磁偏⾓⽅向,E=东W=西字段16:校验值(异或校验)$xxVTG,89.68,T,,M,0.00,N,0.0,K*5F字段0:$xxVTG,表明该包数据为地⾯速度信息字段1:运动⾓度,000 - 359,(前导位数不⾜则补0)字段2:T=真北参照系字段3:运动⾓度,000 - 359,(前导位数不⾜则补0)字段4:M=磁北参照系字段5:⽔平运动速度(0.00)(前导位数不⾜则补0)字段6:N=节,Knots字段7:⽔平运动速度(0.00)(前导位数不⾜则补0)字段8:K=公⾥/时,km/h字段9:校验值(异或校验)。
GPS 格式解析2008-1-20 13:55:00推荐GPS-NMEA0183格式说明:NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等1、 GPS DOP and Active Satellites(GSA)当前卫星信息$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF><1>模式:M = 手动, A = 自动。
<2>定位型式 1 = 未定位, 2 = 二维定位, 3 = 三维定位。
<3>PRN 数字:01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。
<4> PDOP位置精度因子(0.5~99.9)<5> HDOP水平精度因子(0.5~99.9)<6> VDOP垂直精度因子(0.5~99.9)<7> Checksum.(检查位).2、 GPS Satellites in View(GSV)可见卫星信息$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8><CR><LF><1> GSV语句的总数<2> 本句GSV的编号<3> 可见卫星的总数,00 至 12。
<4> 卫星编号, 01 至 32。
<5>卫星仰角, 00 至 90 度。
<6>卫星方位角, 000 至 359 度。
GPS的数据格式介绍GPRMC(建议使用最小GPS数据格式)$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>1) 标准定位时间(UTC time)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位状态,A = 数据可用,V = 数据不可用。
3) 纬度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 纬度区分,北半球(N)或南半球(S)。
5) 经度,格式:度度分分.分分分分。
6) 经度区分,东(E)半球或西(W)半球。
7) 相对位移速度, 0.0 至 1851.8 knots8) 相对位移方向,000.0 至 359.9度。
实际值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁极变量,000.0 至180.0。
11) 度数。
12) Checksum.(检查位)GPGSV(所示卫星格式)$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8><CR><LF>1) 天空中收到讯号的卫星总数。
2) 定位的卫星总数。
3) 天空中的卫星总数,00 至 12。
4) 卫星编号, 01 至 32。
5) 卫星仰角, OO 至 90 度。
6) 卫星方位角, OOO 至 359 度。
实际值。
7) 讯号噪声比(C/No), 00 至 99 dB;无表未接收到讯号。
8) Checksum.(检查位).第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。
GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。
前面的代码只负责从串口接收数据并将其放置于缓存,在没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。
因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。
同其他通讯协议类似,对GPS进行信息提取必须首先明确其帧结构,然后才能根据其结构完成对各定位信息的提取。
对于本文所使用的GARMIN GPS天线板,其发送到计算机的数据主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。
这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。
对于通常的情况,我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到,该帧的结构及各字段释义如下:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<1> 当前位置的格林尼治时间,格式为hhmmss<2> 状态, A 为有效位置, V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗。
<3> 纬度, 格式为ddmm.mmmm<4> 标明南北半球, N 为北半球、S为南半球<5> 径度,格式为dddmm.mmmm<6> 标明东西半球,E为东半球、W为西半球<7> 地面上的速度,范围为0.0到999.9<8> 方位角,范围为000.0到359.9 度<9> 日期, 格式为ddmmyy<10> 地磁变化,从000.0到180.0 度<11> 地磁变化方向,为E 或W至于其他几种帧格式,除了特殊用途外,平时并不常用,虽然接收机也在源源不断地向主机发送各种数据帧,但在处理时一般先通过对帧头的判断而只对"$GPRMC"帧进行数据的提取处理。
gps数据格式标准GPS数据格式标准。
GPS(Global Positioning System)是一种通过卫星定位技术来确定地理位置的系统。
在现代社会中,GPS已经广泛应用于汽车导航、航空航海、地图绘制、移动通信等领域。
为了使不同设备和系统之间能够共享和交换GPS数据,制定了一系列的GPS数据格式标准。
本文将介绍GPS数据格式标准的相关内容,以便读者更好地理解和应用GPS数据。
1. GPS数据格式的基本要素。
GPS数据格式通常包括位置、速度、时间等基本要素。
位置信息通常由经度和纬度表示,速度信息表示物体在空间中的运动速度,时间信息用于记录数据采集的时间点。
此外,GPS数据还可能包括高度、方向、卫星信号强度等附加信息。
这些基本要素构成了GPS数据的核心内容,也是各种GPS数据格式标准的基础。
2. 常见的GPS数据格式标准。
目前,市场上存在多种不同的GPS数据格式标准,如NMEA-0183、GPX、KML等。
NMEA-0183是一种广泛应用的GPS数据格式标准,它定义了一系列ASCII字符格式的数据消息,用于在GPS设备和计算机之间进行数据交换。
GPX (GPS Exchange Format)是一种XML格式的GPS数据标准,它可以方便地在不同的GPS设备和软件之间进行数据共享。
KML(Keyhole Markup Language)是一种用于地理信息数据的XML格式标准,它可以描述地理特征、地图标记、地理信息图层等内容。
3. GPS数据格式标准的应用。
不同的GPS数据格式标准在不同的应用场景中有着各自的优势和适用性。
NMEA-0183格式通常用于传感器和导航设备之间的数据交换,GPX格式适合用于GPS轨迹记录和地图标记的导出和导入,KML格式则常用于地理信息系统(GIS)和在线地图服务中。
通过选择合适的GPS数据格式标准,可以更好地满足不同应用场景下的数据交换和共享需求。
4. GPS数据格式标准的发展趋势。
怎样使用GPS测量坐标数据格式是否正确
在进行地理位置定位和导航时,GPS(Global Positioning System)是一项重要的技术。
它通过一系列卫星定位系统来收集地球上点的坐标数据,并将其转化为特定的数据格式。
然而,在使用GPS测量坐标数据时,我们有时会遇到数据格式不正确的情况。
本文将介绍一些方法,帮助您使用GPS测量坐标数据时在线检测格式是否正确。
1. 了解GPS坐标数据格式
GPS坐标数据通常有两种格式:经度-纬度格式和坐标系格式。
经度-纬度格式
经度-纬度格式是最常用的GPS坐标表示方式。
它使用度(°)来表示经度和纬度。
经度的取值范围为-180°到180°之间,纬度的取值范围为-90°到90°之间。
例如,一个位于纽约市的位置可以表示为40.7128°N,74.0060°W。
坐标系格式
坐标系格式指的是将GPS坐标数据投影到具体的地图上。
常见的坐标系包括WGS 84(World Geodetic System 1984)和GCJ 02(国测局坐标系 2002)等。
WGS 84是国际标准的坐标系,而GCJ 02是中国国家测绘局使用的坐标系。
2. 使用在线工具检测数据格式
有许多在线工具可用于检测GPS坐标数据格式是否正确。
您可以通过以下步骤使用这些工具:
步骤1:复制坐标数据
首先,复制您的GPS坐标数据。
确保数据格式正确,不包含任何多余的字符或空格。
步骤2:选择在线工具
在搜索引擎中搜索。
RINEX VERSION 2.11 FORMAT DEFINITIONS AND EXAMPLES+----------------------------------------------------------------------------+ | TABLE A1 | | GNSS OBSERVATION DATA FILE - HEADER SECTION DESCRIPTION | +--------------------+------------------------------------------+------------+ | HEADER LABEL | DESCRIPTION | FORMAT | | (Columns 61-80) | | | +--------------------+------------------------------------------+------------+ |RINEX VERSION / TYPE| - Format version (2.11) | F9.2,11X, | | | - File type ('O' for Observation Data) | A1,19X, | | | - Satellite System: blank or 'G': GPS | A1,19X | | | 'R': GLONASS | | | | 'S': Geostationary | | | | signal payload | | | | 'E': Galileo | | | | 'M': Mixed | | +--------------------+------------------------------------------+------------+ |PGM / RUN BY / DATE | - Name of program creating current file | A20, | | | - Name of agency creating current file | A20, | | | - Date of file creation | A20 | +--------------------+------------------------------------------+------------+ *|COMMENT | Comment line(s) | A60 |* +--------------------+------------------------------------------+------------+ |MARKER NAME | Name of antenna marker | A60 | +--------------------+------------------------------------------+------------+ *|MARKER NUMBER | Number of antenna marker | A20 |* +--------------------+------------------------------------------+------------+ |OBSERVER / AGENCY | Name of observer / agency | A20,A40 | +--------------------+------------------------------------------+------------+ |REC # / TYPE / VERS | Receiver number, type, and version | 3A20 | | | (Version: e.g. Internal Software Version)| | +--------------------+------------------------------------------+------------+ |ANT # / TYPE | Antenna number and type | 2A20 | +--------------------+------------------------------------------+------------+ |APPROX POSITION XYZ | Approximate marker position (WGS84) | 3F14.4 | +--------------------+------------------------------------------+------------+ |ANTENNA: DELTA H/E/N| - Antenna height: Height of bottom | 3F14.4 | | | surface of antenna above marker | | | | - Eccentricities of antenna center | | | | relative to marker to the east | | | | and north (all units in meters) | | +--------------------+------------------------------------------+------------+ *|WAVELENGTH FACT L1/2| - Default wavelength factors for | |* | | L1 and L2 (GPS only) | 2I6, || | 1: Full cycle ambiguities | | | | 2: Half cycle ambiguities (squaring) | | | | 0 (in L2): Single frequency instrument | | | | - zero or blank | I6 | | | | | | | The wavelength factor record is optional | | | | for GPS and obsolete for other systems. | | | | Wavelength factors default to 1. | | | | If the record exists it must precede any | | | | satellite-specific records (see below). | | +--------------------+------------------------------------------+------------+ *|WAVELENGTH FACT L1/2| - Wavelength factors for L1 and L2 (GPS) | 2I6, |* | | 1: Full cycle ambiguities | | | | 2: Half cycle ambiguities (squaring) | | | | 0 (in L2): Single frequency instrument | | | | - Number of satellites to follow in list | I6, | | | for which these factors are valid. | | | | - List of PRNs (satellite numbers with | 7(3X,A1,I2)| | | system identifier) | | | | | | | | These optional satellite specific lines | | | | may follow, if they identify a state | | | | different from the default values. | | | | | | | | Repeat record if necessary. | | +--------------------+------------------------------------------+------------+ |# / TYPES OF OBSERV | - Number of different observation types | I6, | | | stored in the file | | | | - Observation types | | | | - Observation code | 9(4X,A1, | | | - Frequency code | A1)| | | If more than 9 observation types: | | | | Use continuation line(s) (including |6X,9(4X,2A1)| | | the header label in cols. 61-80!) | | | | | | | | The following observation types are | | | | defined in RINEX Version 2.11: | | | | | | | | Observation code (use uppercase only): | | | | C: Pseudorange GPS: C/A, L2C | | | | Glonass: C/A | | | | Galileo: All | | | | P: Pseudorange GPS and Glonass: P code| | | | L: Carrier phase | || | D: Doppler frequency | | | | S: Raw signal strengths or SNR values | | | | as given by the receiver for the | | | | respective phase observations | | | | | | | | Frequency code | | | | GPS Glonass Galileo SBAS | | | | 1: L1 G1 E2-L1-E1 L1 | | | | 2: L2 G2 -- -- | | | | 5: L5 -- E5a L5 | | | | 6: -- -- E6 -- | | | | 7: -- -- E5b -- | | | | 8: -- -- E5a+b -- | | | | | | | | Observations collected under Antispoofing| | | | are converted to "L2" or "P2" and flagged| | | | with bit 2 of loss of lock indicator | | | | (see Table A2). | | | | | | | | Units : Phase : full cycles | | | | Pseudorange : meters | | | | Doppler : Hz | | | | SNR etc : receiver-dependent | | | | | | | | The sequence of the types in this record | | | | has to correspond to the sequence of the | | | | observations in the observation records | | +--------------------+------------------------------------------+------------+ *|INTERVAL | Observation interval in seconds | F10.3 |* +--------------------+------------------------------------------+------------+ |TIME OF FIRST OBS | - Time of first observation record | 5I6,F13.7, | | | (4-digit-year, month,day,hour,min,sec) | | | | - Time system: GPS (=GPS time system) | 5X,A3 | | | GLO (=UTC time system) | | | | GAL (=Galileo System Time)| | | | Compulsory in mixed GPS/GLONASS files | | | | Defaults: GPS for pure GPS files | | | | GLO for pure GLONASS files | | | | GAL for pure Galileo files | | +--------------------+------------------------------------------+------------+ *|TIME OF LAST OBS | - Time of last observation record | 5I6,F13.7, |* | | (4-digit-year, month,day,hour,min,sec) | | | | - Time system: Same value as in | 5X,A3 | | | TIME OF FIRST OBS record | |+--------------------+------------------------------------------+------------+*|RCV CLOCK OFFS APPL | Epoch, code, and phase are corrected by | I6 |*| | applying the realtime-derived receiver | || | clock offset: 1=yes, 0=no; default: 0=no | || | Record required if clock offsets are | || | reported in the EPOCH/SAT records | |+--------------------+------------------------------------------+------------+*|LEAP SECONDS | Number of leap seconds since 6-Jan-1980 | I6 |*| | Recommended for mixed files | |+--------------------+------------------------------------------+------------+*|# OF SATELLITES | Number of satellites, for which | I6 |*| | observations are stored in the file | |+--------------------+------------------------------------------+------------+*|PRN / # OF OBS | PRN (sat.number), number of observations |3X,A1,I2,9I6|*| | for each observation type indicated | || | in the "# / TYPES OF OBSERV" - record. | || | | || | If more than 9 observation types: | || | Use continuation line(s) including | 6X,9I6 || | the header label in cols. 61-80! | || | | || | This record is (these records are) | || | repeated for each satellite present in | || | the data file | |+--------------------+------------------------------------------+------------+|END OF HEADER | Last record in the header section. | 60X |/igscb/data/format/rinex211.txt+--------------------+------------------------------------------+------------+ GPR Rinex文件之o文件说明标签:GPR Rinex o说明分类:我的测绘2009-02-09 19:452.10 OBSERVATION DATA G (GPS) RINEX VERSION /TYPE RINEX版本/观测数据类型DAT2RINW 3.10 001 WuXuepeng 01APR06 9:47:37 PGM / RUN BY / DATE 项目/执行者/日期WuXuepeng GCEDD OBSERVER / AGENCY 观测者/公司20253469 TRIMBLE 4600LS Nav 2.50 Sig 0.11 REC # / TYPE / VERS 接收机编号/接收机类型/接收机版本20253469 4600LS INTERNAL ANT # / TYPE 天线编号/天线类型----------------------------------------------------------- COMMENT 注释Offset from BOTTOM OF ANTENNA to PHASE CENTER is 107.0 mm COMMENT 补偿从天线底部到相位中心107.0毫米注释----------------------------------------------------------- COMMENT 注释I1234 MARKER NAME 标识点名称I1234 MARKER NUMBER 标识点数量-2666295.7398 4700154.0487 3376886.4779 APPROX POSITION XYZ 标识点概略坐标XYZ(WGS-84)1.4065 0.0000 0.0000 ANTENNA: DELTA H/E/N 改正到相位中心的天线高度H高程/E东坐标/N北坐标*** Above antenna height is from mark to PHASE CENTER. COMMENT 上面的天线高是从测量标志到天线相位中心注释----------------------------------------------------------- COMMENT 注释Note: The above height is to the antenna phase center. COMMENT 注释:上面的天线高是到天线相位中心注释The RINEX specification calls for this to be the COMMENT RINEX 规格要求注释height from the bottom surface of the antenna mount COMMENT 天线高是从天线座底部注释to the survey mark. COMMENT 到测量标志。
第九章GPS测量应用中常用数据格式§9.1 RINEX 格式9.1. 1 概述GPS数据处理时所采用的观测数据来自进行野外观的GPS接收机。
接收机在野外进行观测时,通常将所采集的数据记录在接收机的内部存储器或可移动的存储介质中。
在完成观测后,需要将数据传输到计算机中,以便进行处理分析。
这一过程通常是利用GPS接收机厂商所提供的数据传输软件来进行。
传输到计算机中的数据一般采用GPS接收机厂商所定义的专有格式以二进制文件的形式进行存储。
一般说来,不同GPS接收机厂商所定义的专有格式各不相同,有时甚至同一厂商不同型号仪器的专有格式也不相同。
专有格式具有存储效率高,各类信息齐全的特点,但在某些情况下,如在一个项目中采用了不同接收机进行观测时,却不方便进行数据处理分析,因为数据处理分析软件能够识别的格式是有限的。
RINEX(Receiver Independent Exchange Format/与接收机无关的交换格式)是一种在GPS 测量应用中普遍采用的标准数据格式。
该格式采用文本文件形式存储数据,数据记录格式与接收机的制造厂商和具体型号无关。
RINEX格式由伯尔尼大学天文学院的Werner Curtner 于1989年提出。
当时提出该数据格式是为了能够综合处理在EUREF89(欧洲一项大规模的GPS联测项目)中所采集的GPS 数据。
该项目采用了来自4个不同厂商共60多台GPS接收机。
现在,RINEX格式已经成为了GPS测量应用等的标准数据格式,几乎所有测量型GPS 接收机厂商都提供将其专有格式文件转换为RINEX格式文件的工具,而且几乎所有的数据分析处理软件都能够直接读取RINEX格式的数据。
这意味着在实际观测作业中可以采用不同厂商不同型号的接收机进行混合编队,而数据处理则可采用某一特定软件进行。
经过多年不断修订完善,目前应用最为普遍的是RENEX格式的第2版。
该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据。
GPS报⽂格式$GPGGA,021442.000,2839.139693,N,11549.543854,E,1,6,1.76,-21.394,M,-5.454,M,,*52数据详解:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<0>$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);<1>UTC 时间,格式为hhmmss.sss;021442.000= 10:14:42<2>纬度,格式为ddmm.mmmm(第⼀位是零也将传送);<3>纬度半球,N 或S(北纬或南纬)<4> 经度,格式为dddmm.mmmm(第⼀位零也将传送);<5>经度半球,E 或W(东经或西经)<6>定位质量指⽰,0=定位⽆效,1=定位有效;<7>使⽤卫星数量,从00到12(第⼀个零也将传送)<8>⽔平精确度,0.5到99.9<9>天线离海平⾯的⾼度,-9999.9到9999.9⽶M指单位⽶M指单位⽶;<10>⼤地⽔准⾯⾼度,-9999.9到9999.9⽶M指单位⽶M指单位⽶;<11>差分GPS数据期限(RTCMSC-104),最后设⽴RTCM传送的秒数量<12>差分参考基站标号,从0000到1023(⾸位0也将传送)。
*语句结束标志符;xx从$开始到*之间的所有ASCII码的异或校验和;回车换⾏解析内容:第9,10 个字段,海平⾯⾼度和⼤地⽔准⾯⾼度,单位是⽶地理定位信息:$GPGLL,2839.139693,N,11549.543854,E,021442.000,A,A*5C例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D字段0:$GPGLL,语句ID,表明该语句为GeographicPosition(GLL)地理定位信息字段1:纬度ddmm.mmmm,度分格式(前导位数不⾜则补0)字段2:纬度N(北纬)或S(南纬)字段3:经度dddmm.mmmm,度分格式(前导位数不⾜则补0)字段4:经度E(东经)或W(西经)字段5:UTC时间,hhmmss.sss格式字段6:状态,A=定位,V=未定位字段7:校验值当前卫星信息:$GPGSA,A,3,03,06,01,19,30,32,,,,,,,3.70,1.76,3.26*0F例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A字段0:$GPGSA,语句ID,表明该语句为GPSDOP andActive Satellites(GSA)当前卫星信息字段1:定位模式,A=⾃动⼿动2D/3D,M=⼿动2D/3D字段2:定位类型,1=未定位,2=2D定位,3=3D定位字段3:PRN码(伪随机噪声码),第1信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段4:PRN码(伪随机噪声码),第2信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段5:PRN码(伪随机噪声码),第3信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段6:PRN码(伪随机噪声码),第4信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段7:PRN码(伪随机噪声码),第5信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段8:PRN码(伪随机噪声码),第6信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段9:PRN码(伪随机噪声码),第7信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段10:PRN码(伪随机噪声码),第8信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段11:PRN码(伪随机噪声码),第9信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段12:PRN码(伪随机噪声码),第10信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段13:PRN码(伪随机噪声码),第11信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段14:PRN码(伪随机噪声码),第12信道正在使⽤的卫星PRN码编号(00)(前导位数不⾜则补0)字段15:PDOP综合位置精度因⼦(0.5 - 99.9)字段16:HDOP⽔平精度因⼦(0.5 - 99.9)字段17:VDOP垂直精度因⼦(0.5 - 99.9)字段18:校验值可见卫星信息:$GPGSV,4,1,13,28,86,324,,03,46,082,22,17,46,326,19,06,31,244,37*7D例:$GPGSV,2,1,08,06,33,240,45,10,36,074,47,16,21,078,44,17,36,313,42*78 标准格式: $GPGSV,(1),(2),(3),(4),(5),(6),(7),…(4),(5),(6),(7)*hh(CR)(LF)(1)总的GSV语句电⽂数;2;(2)当前GSV语句号:1;(3)可视卫星总数:08;(4)PRN码(伪随机噪声码) 也可以认为是卫星编号(5)仰⾓(00~90度):33度;(6)⽅位⾓(000~359度):240度;(7)信噪⽐(00~99dB):45dB(后⾯依次为第10,16,17号卫星的信息);*总和校验域; hh 总和校验数:78;(CR)(LF)回车,换⾏。
GPS报文的通用格式2010-03-03 02:31目前,GPS 已在许多行业和领域得到广泛应用,但就如何将GPS 有关信息读入计算机以便进一步处理和应用,仍是大家普遍关心的问题。
虽然目前GPS 接收仪的种类、功能各有差异,而且使用的通讯协议也比较多,但许多GPS 生产商都遵循NMEA0183 协议,并且这些GPS 都提供串行通讯接口。
笔者试图从分析GPS 通讯NMEA0183 协议入手,以计算机实时读取、显示、存储、回放GPS信息为例,探讨用VB 实现GPS 信息处理的一些方法。
1 GPS 通讯的NMEA 协议GPS 的通讯协议比较多,其中NMEA (National Ma2rine Electronics Association) , 0183 协议为GPS 接收机和其他航海电子产品的导航数据输出格式,是目前普遍使用且为大多数生产商遵循的协议之一,以下为其基本通讯参数及报文格式。
1. 1 GPS 串行通讯参数波特率= 4800 ;无奇偶校验;数据位= 8 ;停止位= 11. 2 NMEA 0183 报文格式NMEA 0183 协议报文的语句串(ASCII 字符) 格式全部信息可如下表示[1] :$AAXXX,ddd. . . ddd , 3 hh < CR > < LF >具体内容为:$串头,表示串开始AA 识别符XXX 语句名ddd ⋯ddd 数据字段,字母或数字, 逗号3 星号,串尾hh $与3 之间所有字符代码的校验和< CR > 回车控制符< LF > 换行控制符1. 3 报文示例说明在具体的GPS 应用中,不需要用到NMEA 的全部信息,而是根据具体的工作,从中选取所需的信息,忽略其他信息。
在文献[ 1 ]中,给出了用NMEA0813 的$GPGGA语句的数据格式及示例,文中以GPS 推荐的最短数据$GPRMC 语句为例,具体讨论协议串中各数据段内容。