本文转载自:http://m.2cto.com/kf/201610/556695.html

GPS数据遵循NMEA-0183协议,该数据标准是由NMEA(National Marine Electronics Association,美国国家海事电子协会)于1983年制定的。统一标准格式NMEA-0183输出采用ASCII 码,其串行通信的参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。

数据传输以“语句”的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。

NMEA-0183的数据信息有十几种,这些信息的作用分别是:$GPGGA:输出GPS的定位信息;$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPGSV:输出可见的卫星信息;$GPGST:输出定位标准差信息;$GPGSA:输出卫星DOP值信息;$GPALM:输出卫星星历信息;$GPRMC:输出GPS推荐的最短数据信息等。

一、 输出语句说明:

1,$GPRMC语句

(Recommended Minimum Specific GPS/TRANSIT Data-RMC,推荐定位信息1次/1秒)

对于一般的GPS动态定位应用,GPRMC语句完全满足要求。该语句中包括经纬度、速度、时间和磁偏角等字段,这些数据为导航定位应用提供了充分的信息。下表详细说明GPRMC语句中的各个字段:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12>

字段 $GPRMC语句意义——取值范围

<1> UTC时间:hhmmss.ss——000000.00~235959.99

<2> 状态,有效性 ——A表示有效;V表示无效

<3> 纬度格式:ddmm.mmmm——0000.00000~8959.9999 (标准的度分格式)

<4> 南北半球——N北纬;S南纬

<5> 经度格式:dddmm.mmmm——00000.0000~17959.9999(标准的度分格式)

<6> 东西半球——E表示东经;W表示西经

<7> 地面速度——000.00~999.999

<8> 速度方向——000.00~359.99

<9> 日期格式,月日年——010100~123199

<10> 磁偏角,单位:度——00.00~99.99

磁偏角方向——E表示东;W表示西

<12> 模式指示及校验和—— A=自主定位,D=差分,E=估算,N=数据无效

例如:$GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,,W,A*08

2,$GPGGA语句

(Global Positioning System Fix Data-GGA,GPS定位信息, 输出1次/1秒)

GPS定位主要数据,该语句中包括经纬度、质量因子、HDOP、高程、基准站号等字段。下表详细说明GPGGA语句中的各个字段:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12>,,<14>

字段 $GPGGA语句意义——取值范围

<1> UTC时间:hhmmss.ss——000000.00~235959.99

<2> 纬度,格式:ddmm.mmmm ——0000.00000~8959.9999(标准的度分格式)

<3> 南北半球——N北纬;S南纬

<4> 经度格式:dddmm.mmmm ——00000.0000~17959.9999(标准的度分格式)

<5> 东西半球——E表示东经;W表示西经

<6> 质量因子——0=未定位,1=GPS单点定位固定解,2=差分定位,3=PPS解;4=RTK固定解;5=RTK浮点解;6=估计值;7=手工输入模式;8=模拟模式;

<7> 应用解算位置的卫星数——00~12

<8> HDOP,水平图形强度因子——0.500~99.000 ;大于6不可用

<9> 天线高程(海平面)——-9999.9~99999.9

<10> 线线高程单位(m) ——m

大地水准面起伏——地球椭球面相对大地水准面的高度

<12> 大地水准面起伏单位(m) ——m

<13> 差分GPS数据期——差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空),不使用DGPS时为空

<14> 基准站号——0000~1023;不使用DGPS时为空

$GPGGA,074529.82,2429.6717,N,11804.6973,E,1,8,1.098,42.110,M,,M,,*76

3,$GPGSV语句

(GPS Satellites in View-GSV,可见卫星信息,1次/5秒)

GPS可见星的方位角、俯仰角、信噪比等每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即:(4)-卫星号,(5)-仰角,(6)-方位角,(7)-信噪比

$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>,<18>,<19>

字段 $GPGSV语句意义——取值范围

<1> 总的GSV语句电文数——0~12

<2> 当前GSV语句号

<3> 可视卫星总数——0~32

<4> 卫星号——1~32

<5> 仰角——00~90

<6> 方位角——000~359

<7> 信噪比——00~99dB无表未接收到讯号

<8> 卫星号——1~32

<9> 仰角——00~90

<10> 方位角——000~359

信噪比——00~99dB无表未接收到讯号

<12> 卫星号——1~32

<13> 仰角——00~90

<14> 方位角——000~359

<15> 信噪比——00~99dB 无表示未接收到讯号

<16> 卫星号——1~32

<17> 仰角——00~90

<18> 方位角——000~359

<19> 效验和,格式:*效验和——检查位

$GPGSV,3,1,11,1,83,54,32,3,19,192,28,6,26,57,36,7,51,140,37*7D

$GPGSV,3,2,11,14,40,136,34,16,64,266,36,20,21,293,,22,2,168,*4C

$GPGSV,3,3,11,23,10,321,,25,53,7,40,30,2,46,*48

4,$GPVTG语句

(Track Made Good and Ground Speed-VTG,地面速度信息)

格式:$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh

字段 $GPVTG语句意义——取值范围

<1> 以真北为参考基准的地面航向——000.000~359.999

<2> 以磁北为参考基准的地面航向——000.000~359.999

<3> 地面速率——000.000~999.999节

<4> 地面速率——0000.0~1851.8公里/小时

<5> 模式指示——A=自主定位,D=差分,E=估算,N=数据无效(仅NMEA0183 3.00版本输出)

<6> hh 校检位

$GPVTG,257.314,T,257.314,M,10.739,N,19.888,K,A*2F

5,$GPGSA语句

(GPS DOP and Active Satellites-GSA,当前卫星信息,1次/1秒)

GSA : GNSS 的当前卫星和精度因子,包括可见卫星PRN号,以及PDOP、HDOP、VDOP。如:

<1> 模式 ——M = 手动, A = 自动。

<2> 定位类型——1 = 未定位, 2 = 二维定位, 3 = 三维定位。

<3> PRN 数字——01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。正在用于解算位置的卫星号(01~32,前面的0也将被传输)。

<4> PDOP位置精度因子——0.5~99.9

<5> HDOP水平精度因子——0.5~99.9

<6> VDOP垂直精度因子——0.5~99.9

<7> Checksum.(检查位).

$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7>

$GPGSA,A,3,19,11,03,23,27,13,16,,,,,,3.43,1.67,2.99*0E

6,$GPGLL语句

(输出大地坐标信息)

$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*61

字段 $GPGLL语句意义——取值范围

<1> 纬度:ddmm.mmmmm——0000.00000~8959.9999

<2> 南纬或北纬——北纬N,S南纬

<3> 经度:dddmm.mmmmm——0000.00000~17959.99999

<4> 东、西经 ——东经E,西经W

<5> UTC时间——hh:mm:ss

<6> 数据状态——A有效,V无效

$GPGLL,2431.25310,N,11806.15429,E,081401.00,A,A*61

7,$GPZDA 语句

(输出UTC时间和日期信息)

$GPZDA, <1>,<2>,<3>,<4>,<5>*hh

字段 $GPZDA语句意义——取值范围

<1> 时间:hhmmss.ss——0000000.00~235959.99

<2> 日——00~31

<3> 月——00~12

<4> 年——0000~9999

<5> 地方时与世界时之差

<6> 检校位 *hh——*

$GPZDA,081401.00,14,09,2006,00,00*62

8,$GPGST 语句

(GPS 伪距噪声统计,包括了三维坐标的标准偏差信息)

字段——示例——说明

Sentence ID ——$GPGST

UTC Time——024603.00——UTC time of associated GGA fix

RMS deviation——3.2——Total RMS standard deviation of ranges inputs to the navigation solution

Semi-major deviation——6.6——Standard deviation (meters) of semi-major axis of error ellipse

Semi-minor deviation——4.7——Standard deviation (meters) of semi-minor axis of error ellipse

Semi-major orientation——47.3——Orientation of semi-major axis of error ellipse (true north degrees)

Latitude error deviation——5.8——Standard deviation (meters) of latitude error

Longitude error deviation——5.6——Standard deviation (meters) of longitude error

Altitude error deviation——22.0——Standard deviation (meters) of latitude error

Checksum—— *58

$GPGST,024603.00,3.2,6.6,4.7,47.3,5.8,5.6,22.0*58

9,$GPCN0语句

各颗用于解算的卫星信噪比:

$GPCN0,30,40,35,26,24,36,31,38

二、 输出时间说明:

 GPGGA(1次/1秒)

 GPGSA(1次/1秒)

 GPGSV(1次/5秒)

 GPRMC(1次/1秒)

 另可选用GLL,VTG或SiRF二进制格式.

三、坐标系统WGS84

WGS-84坐标系(World Geodetic System)是一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向国际时间局(BIH)1984.0定义的协议地极(CTP)方向,X轴指向BIH1984.0的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系。这是一个国际协议地球参考系统(ITRS),是目前国际上统一采用的大地坐标系。GPS广播星历是以WGS-84坐标系为根据的。

WGS84坐标系,长轴6378137.000m,短轴6356752.314,扁率1/298.257223563。

DOP值有三种测量类型:

水平、垂直和说明(mean)。HDOP测量它和经纬度的关系作为精度,VDOP测量他和海拔的关系作为精度,PDOP,给出一个关于经纬度、海拔精度的完整等级。每个DOP值都是1到50之间数值,其中50 表示非常差的精度,1则表示很理想的精确度。

表2-1列出了划分的一份精确的PDOP值细目分类。PDOP分类描述:

PDOP值——评价——说明

1~2——理想——这是最高的信任级别,应用程序可以在任何时候获取最高的精度

2~3——极好——值得信任的级别,位置的测量相当精确,可以应用于绝大多数应用程序,但是有些非常敏感的应用程序就不行了

4~6——好——这是用来做商业应用的最低等级。位置的测量可以用来做线路导航建议

7~8——中等——位置测量可以用来计算,但是质量还应该提高。推荐用语天空观察

9~20——中下——信任级别很低。位置测量结果应该丢弃或者仅用于粗略估计当前位置

21~50——差——在这个级别的测量结果是不精确的,大概会有半个足球场大的误差,应该丢弃

四,常用精度

PDOP:位置精度因子(Position Dilution of Precision),直译为“精度强弱度”,通常翻译为“相对误差”。具体含义是:由于观测成果的好坏与被测量的人造卫星和接收仪间的几何形状有关且影响甚大,所以计算上述所引起的误差量称为精度的强弱度。天空中卫星分布程度越好,定位精度越高(数值越小精度越高)。PDOP表示三维位置定位精度与导航台几何配置关系的一个参数。在全球定位(GPS)系统中,等于用户位置的径向误差(1&deg;)与用户到卫星的距离测量误差(1&deg;)的比值。

Pdop取值范围为:0.5--99.9,为纬度、经度和高程等误差平方和的开根号值,所以Pdop的平方=Hdop的平方+Vdop的平方。HDOP2+VDOP2=PDOP2

PDOP( position dilution of precision )三维位置精度因子:为纬度、经度和高程等误差平方和的开根号值
TDOP(time dilution of precision)钟差精度因子:为接收仪内时表偏移误差值。

HDOP(horizontal dilution of precision)水平分量精度因子:为纬度和经度等误差平方和的开根号值。
VDOP(vertical dilution of precision)垂直分量精度因子

age:差分延时

VRMS:水平残差

HRMS:垂直残差

RMS :HRMS2+VRMS2=RMS2

距离基准站的距离:两个经纬度坐标之间的距离计算:

//////////两个经纬度坐标计算距离///////////////////////
private double EARTH_RADIUS = 6378.137;//地球半径
private double rad(double d)
{
return d * Math.PI / 180.0;
} public double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}

NMEA码详解【转】的更多相关文章

  1. HTTP协议 (六) 状态码详解

    HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果 ...

  2. ASCII码详解

    ASCII码详解 ASCII码表 ASCII码大致可以分作三部分組成.第一部分是:ASCII非打印控制字符: 第二部分是:ASCII打印字符: 第三部分是:扩展ASCII打印字符. 第一部分:ASCI ...

  3. Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解

    Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是Jo ...

  4. [Spark内核] 第40课:CacheManager彻底解密:CacheManager运行原理流程图和源码详解

    本课主题 CacheManager 运行原理图 CacheManager 源码解析 CacheManager 运行原理图 [下图是CacheManager的运行原理图] 首先 RDD 是通过 iter ...

  5. python接口自动化(七)--状态码详解对照表(详解)

    简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...

  6. spring事务详解(三)源码详解

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  7. 条件随机场之CRF++源码详解-预测

    这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有 ...

  8. [转]Linux内核源码详解--iostat

    Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码, ...

  9. 前端基础:HTTP 状态码详解

    HTTP 状态码详解 1xx(信息类):表示接收到请求并继续处理 100 客户端应当继续发送请求.这个临时响应是用来通知客户端他的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部 ...

随机推荐

  1. Win7如何修复开机画面

    将下面文件保存为"修复Win7开机画面.bat"双击运行即可   bcdedit /set {current} locale zh-CN    

  2. IT行业是吃青春饭的吗?

    作者:杨中科 1.“it专业的学生太多了,而且就业压力很大”是吗?     现在各个大学为了赚钱拼命扩招,所以不仅IT专业的学生人比较多,而且其他专业的学生人数也比较多,“僧多粥少”就通常意味着就业压 ...

  3. linux 挂载相关

    mount命令的用法,以及技巧光盘镜像文件.移动硬盘.共享文件夹及U盘的方法. 一,挂接命令(mount) 挂接(mount)命令的使用方法. 命令格式:  mount [-t vfstype] [- ...

  4. C# Excel

    using System.IO;using System.Text;namespace iLIS.Common{ ///<summary> ///生成Excel文档内容 /// 存入工作流 ...

  5. IOS 网络解析

    网络解析同步异步 /*------------------------get同步-------------------------------------*/ - (IBAction)GET_TB:( ...

  6. oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)

    LOB类型 ORACLE提供了LOB (Large OBject)类型.用于存储大的数据对象的类型.ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型. NCLOB 存储 ...

  7. C语言批量数据到动态二维数组

    上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它 ...

  8. Lua学习八----------Lua运算符

    © 版权声明:本文为博主原创文章,转载请注明出处 1.Lua运算符: - 算术运算符:+(加法).-(减法).*(乘法)./(除法-取整).%(除法-取余).^(乘幂).-(负号) - 关系运算符:= ...

  9. 一文了解@Conditional注解说明和使用

    ​ @Conditional:Spring4.0 介绍了一个新的注解@Conditional,它的逻辑语义可以作为"If-then-else-"来对bean的注册起作用. @Con ...

  10. 【Python基础】之函数、类和方法

    一.函数 1. def定义函数 Python Shell: def add(a,b): return a+b >>>add(1,2) 3 def add(a=1,b=2): retu ...