Python解析GPGGA报文_统计数据完整率

相信很多人在拿到一款新的GNSS接收机的时候,都在想如何评估这个设备的性能。评估GNSS设备性能的方法很多,如统计GGA的固定率、数据完整率、连续运行时间的稳定性等等。
下面我们就从数据的完整率来入手分析GNSS接收机的性能。我们下面使用司南的M900通过TCP采集一段数据,来统计它的完整率。

$GPGGA,091318.20,3121.0122352,N,12117.5511445,E,4,32,0.5,26.3314,M,10.305,M,0.2,0008*4A
$GPGGA,091318.30,3121.0122343,N,12117.5511437,E,4,31,0.5,26.3270,M,10.305,M,0.3,0008*4F
$GPGGA,091318.40,3121.0122347,N,12117.5511439,E,4,31,0.5,26.3279,M,10.305,M,0.4,0008*4C
$GPGGA,091318.50,3121.0122350,N,12117.5511434,E,4,33,0.5,26.3283,M,10.305,M,0.5,0008*40
$GPGGA,091318.60,3121.0122362,N,12117.5511426,E,4,32,0.5,26.3345,M,10.305,M,0.6,0008*48
$GPGGA,091318.70,3121.0122355,N,12117.5511434,E,4,33,0.5,26.3344,M,10.305,M,0.7,0008*4F
$GPGGA,091318.80,3121.0122359,N,12117.5511443,E,4,32,0.5,26.3355,M,10.305,M,0.8,0008*42
$GPGGA,091318.90,3121.0122363,N,12117.5511442,E,4,32,0.5,26.3360,M,10.305,M,0.9,0008*4C
$GPGGA,091319.00,3121.0122364,N,12117.5511440,E,4,32,0.5,26.3393,M,10.305,M,1.0,0008*45
$GPGGA,091319.10,3121.0122365,N,12117.5511437,E,4,33,0.5,26.3397,M,10.305,M,1.1,0008*41
$GPGGA,091319.20,3121.0122370,N,12117.5511436,E,4,32,0.5,26.3405,M,10.305,M,0.2,0008*48
$GPGGA,091319.30,3121.0122355,N,12117.5511438,E,4,33,0.5,26.3328,M,10.305,M,0.3,0008*48

报文的第一个字段是报文头,第二个字段是UTC时间,那么,我们就可以通过GGA报文第一包数据和最后一包数据,计算出理论上有多少条报文,在和实际的报文数对比,就可以得出GGA报文的数据完整率。
下面,我们来介绍一下如何求取开始和结束时间的时间差。我的做法是将UTC时间直接转换成秒,然后两个时间作差,即可得出中间经过的秒数。UTC时间转换成秒的代码如下:

def time2sec(hhmmss): 
    hh=int(hhmmss/10000)
    mm=int(hhmmss/100%100)
    ss=round(hhmmss%100,2)
    sec=hh*3600+mm*60+ss
    return sec

下列代码可以实现获取我们需要的时间差

time2sec(df1[1].iloc[-1].astype(float))-time2sec(df1[1].iloc[0].astype(float))

统计完理论上有多少条报文之后,我们再计算出实际上有多少条报文,两个数据相除就可以得出数据完整率了。
首先,我们可以使用pandas将数据读进来,然后再使用shape函数即可得出我们这段报文实际有几列。

df1.shape[0] #shape[0]可以获取行数,shape[1]可以获取列数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值