精华内容
下载资源
问答
  • GPS数据解析

    2018-11-29 21:10:00
  • gps数据解析

    2011-09-11 12:22:33
    gps数据解析 GPS 数据格式(NMEA-0183协议)GPS定位信息 地面速度信息 编程原理
  • GPS数据解析程序

    2017-02-14 17:43:27
    GPS数据解析函数,对接收到的GPGGA语句进行解析,获取时间,经度,纬度等参数值。并送入液晶屏显示。
  • ATGM336H GPS数据解析

    2020-05-17 14:43:42
    基于ATGM336H 的 NAME 协议 GPS数据解析,主要解析GLL指令,以及波特率设置,定位频率以及返回数据筛选
  • GPS数据解析 数据拆分 坐标转换 显示线路图 源代码 逐条读取gps数据 然后进行拆分 解析,坐标转换,绘制线路。。。很好的示例 多多交流学习。。
  • GPS数据解析

    热门讨论 2011-10-17 08:47:06
    基于.NET2.0框架,可运行于WinCE、Win7、WinXP,是一款GPS数据解析处理的入门级应用程序,具备数据解析,数据记录及网络通信等基本功能,适用于简单的GPS数据处理查看记录的使用要求。
  • WINCE下GPS数据解析

    2014-06-19 10:30:26
    WINCE下GPS数据解析,用于卫星数据接收解析,得到经纬度,海拔等
  • 基于vc++GPS数据解析

    2011-09-06 15:57:22
    基于vc++GPS数据解析,里面很有参考价值的。
  • GPS 数据格式(NMEA-0183协议) GPS上电后,每隔一定的时间就会返回一定格式的数据数据格式为: $信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x 每行开头的字符都是‘$’,接着是信息类型,后面是数据,...

    GPS 数据格式(NMEA-0183协议)

     

    GPS上电后,每隔一定的时间就会返回一定格式的数据,数据格式为:

    $信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x

    每行开头的字符都是‘$’,接着是信息类型,后面是数据,以逗号分隔开。一行完整的数据如下:

        $GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,170809,,,A*60

     

    信息类型为:

    GPGSV:可见卫星信息

    GPGLL:地理定位信息

    GPRMC:推荐最小定位信息

    GPVTG:地面速度信息

    GPGGA:GPS定位信息

    GPGSA:当前卫星信息

     

    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 度。实际值。 
    <7>讯号噪声比(C/No), 00 至 99 dB;无表未接收到讯号。 
    <8>Checksum.(检查位). 
    第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。其余卫星信息会于次一行出现,若未使用,这些字段会空白。 


    3、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也将被传输,如果不是差分定位将为空) 


    4、Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息 
    $GPRMC,<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=数据无效) 


    5、 Track Made Good and Ground Speed(VTG)地面速度信息 
    $GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh<CR><LF>

     

    <1> 以真北为参考基准的地面航向(000~359度,前面的0也将被传输) 
    <2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输) 
    <3> 地面速率(000.0~999.9节,前面的0也将被传输) 
    <4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输) 
    <5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

     

    http://www.voidcn.com/article/p-oywbclwd-uz.html

    展开全文
  • GPS数据解析c++版

    2011-04-29 21:04:23
    gps数据解析,c++版,分为各种数据格式,思路严谨,希望对大家有所帮助,互相学习
  • C语言进行GPS数据解析

    2020-02-24 21:26:15
    GPS数据是一条条报文,如何把报文里面的经度、纬度、UTC时间,速度,卫星数,水平精度因子等信息提取出来呢?本文用C实现了对GPS数据解析,包括GPGGA,GPRMC等的解析,用户可以根据具体需求来使用。
  • 基于python的gps数据解析

    千次阅读 2020-04-10 13:16:37
    基于python的gps数据解析 gps从卫星接收信号后将其转出成一定格式的数据,按照这种格式写入到内存中特定的txt文本中。 其中有以下几种格式: data="$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-...

    基于python的gps数据解析

    gps从卫星接收信号后将其转出成一定格式的数据,按照这种格式写入到内存中特定的txt文本中。
    其中有以下几种格式:

    data="$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,0000*72’

    data="$GPGSV,3,3,10,29,07,074,30,07,163,28*7D "

    data= “223610,13,04,05,00,29,25,26,00,29,39,36,25,22,22,26,00,23,33,25,31,00,39,30,00,00”

    分别对应

    1. ‘UTC时间’,‘定位状态’,‘纬度’,‘纬度半球’,‘经度’,‘经度半球’,‘地面速率’,‘地面航向’, ‘UTC日期’,‘磁偏角’,‘磁偏角方向’

    2.GSV语句总数’,‘GSV编号’,‘可见卫星’,‘卫星编号’,‘卫星仰角’,‘卫星方位角’,‘信噪比’,‘卫星编号’,‘卫星仰角’,‘卫星方位角’,‘信噪比’,‘卫星编号’,‘卫星仰角’,‘卫星方位角’,‘信噪比’,‘卫星编号’,‘卫星仰角’,‘卫星方位角’,‘信噪比’
    3.时间,卫星总数,每个卫星数量,卫星信号强度

    若解析以上格式的信号,可以说比较简单:

    1. python file = open(“test.txt”, “r”) 打开文本,按照每一行进行遍历
    GPS = open(r"./GPS.txt", "r")  # 只读方式打开
    print("open", GPS_RAW.name, "successful!")
    _head = "$GNGGA"
    _head2 = "$GPGSV"
    #cnt=0
    # 文件写入到txt
    res_file = open("result.txt", "w+")  # 追加存入txt
    for line in GPS_RAW.readlines():
        line = line.strip()
    
    1. 用分隔符函数 line.split(",")进行分割开,存入列表
     l = line.split(",")
    
    1. 取列表的每一行第一个元素进行头字符匹配判定解析的是哪一行
     _head2 == line[0:6]
    

    数据解析

    这里着重说一下数据解析遇到的问题:

    • 转化utc时间要每个小时加8,但要防止超过24小时,所以只需要time=(T+8)%24
    • 经纬度转化根据公式转化。(问度娘)
    • 最重要的是解析对于代码稳定性和兼容性是一个挑战。分别有以下几种情况:
      1.对于解析的数据,上述data3这种数据,没有帧头,只能按固定行查找,但是有时候会出现gps信号弱,不解析,偶尔这一行不存在,导致下面串行。(解决办法见代码)
      2.数据中间突然乱码导致数据转化出错,程序终止
      3.某个地方没有信号,导致出现空行,导致程序出错
      4.出现重复的两行,然后按行查找出现错位
      以上都是需要去解决的
      实际遇到很多问题,但最终都解决了,目前已打包exe,可自动解析文本转化成excle表格(带表头哦)
      下面贴出代码:
      本程序用到python的csv模块 openpyxl
    import string
    import csv
    GPS_RAW = open(r"./GPS_RAW.txt", "r")  # 只读方式打开
    print("open", GPS_RAW.name, "successful!")
    _head = "$GNGGA"
    _head2 = "$GPGSV"
    flag = False
    #cnt=0
    # 文件写入到txt
    res_file = open("result.txt", "w+")  # 追加存入txt
    for line in GPS.readlines():
        line = line.strip()
        l = line.split(",")
       # print(line[0:6])
        if((line[0:3].isdigit() or _head2 == line[0:6]) and len(l)>9):
            if(_head2 == line[0:6]):
                SUM = int(l[2])+int(l[3])+int(l[4])
                Best = l[4:]
                Best.sort(reverse=True)
                if(flag == True):
                    Effect_data2 = str(SUM)+';'+str(l[2])+';'+str(l[3])+';'+str(l[4])+';'+str(
                    Best[0])+';'+str(Best[1])+';'+str(Best[2])+';'+str(Best[3])+'\n'  # 格式转化 方便处理
                    res_file.write(Effect_data2)
                    flag = False
                else:
                    Effect_data2 ="0"
                print(Effect_data2)
            else:
                SUM = int(l[1])+int(l[2])+int(l[3])
                Best = l[3:]
                Best.sort(reverse=True)
                if(flag == True):
                    Effect_data2 = str(SUM)+';'+str(l[1])+';'+str(l[2])+';'+str(l[3])+';'+str(
                    Best[0])+';'+str(Best[1])+';'+str(Best[2])+';'+str(Best[3])+'\n'  # 格式转化 方便处理
                    res_file.write(Effect_data2)
                    flag = False
                else:
                    Effect_data2 ="0"
                print(Effect_data2)
        if _head == line[0:6]:  # 帧头匹配成功
            str_temp = line  # 将要用到的串
            Data_result = str_temp.split(",")  # 串转化列表,便于操作
    
            ##分离数据##
            _time = Data_result[1]  # 时间
            str1=Data_result[2]
            if(str1[:2].isdigit() and len(Data_result)==15):
                _latitude = float(Data_result[2])  # 纬度
                _longitude = float(Data_result[4])  # 经度
                _Clock = int(_time[0:2])
                _Minute = _time[2:4]
                _Second = _time[4:6]
                flag_1=False
            else:
                _latitude=0
                _longitude=0
                _Clock = 0
                _Minute = "0"
                _Second = "0"
                flag_1=True
    
         #************分离时,分,秒*********#    
            # print(_Clock)
            # print(_Minute)
            # print(_Second)                              #测试
            _Clock = _Clock+8  # UTC时间转化
            if(_Clock >= 24):
                _Clock = _Clock % 24  # 防止超过24
            _Clock = str(_Clock)
            Effect_time = _Clock+':'+_Minute+':'+_Second  # 最终获得时间
            Effect_latitude = int(_latitude/100)+((_latitude % 100)/60)  # 最终获得纬度
            Effect_longitude = int(_longitude/100)+((_longitude % 100)/60)  # 最终获经度
            Effect_data1 = str(Effect_latitude)+';' + \
                str(Effect_longitude)+';'+Effect_time+';'
            
            if(flag == False and flag_1==False):
                res_file.write(Effect_data1)
                res_file.flush()
                flag = True
                
               
       # cnt=cnt+1
       # print(cnt)
    
    res_file.close()
    
    GPS_RAW.close()
    
    with open('./result/result.csv', 'w+', newline='') as csvfile:
        spamwriter = csv.writer(csvfile, dialect='excel')
        spamwriter.writerow(["纬度", "经度", "北京时间", "总卫星数", "GPS",
                             "北斗", "格洛纳斯", "最佳卫星1", "最佳卫星2", "最佳卫星3", "最佳卫星4"])
    # 读要转换的txt文件,文件每行各词间以字符分隔]
        with open('result.txt', 'r', encoding='utf-8') as filein:
            for line in filein:
                line_list = line.strip('\n').split(';')  # 我这里的数据之间是以 ; 间隔的
                if(len(line_list)>6):
                    spamwriter.writerow(line_list)
        print('''
                **************************
                ##########################
                *******转换完成!!*******
                ##########################
                **************************
                ''')
    input()
    
    展开全文
  • 源:gps 数据解析-NMEA 0183协议
    展开全文
  • 基于msp430的GPS数据解析,并在液晶屏上显示出来显示。接卸的是GPRMC的内容。
  • 前面写了一系列关于Linux的文章,从这一篇开始换个题目,叫做GPS...今天这篇文章的主题是GPS数据解析,关于GPS的基础知识,我在很早之前的一篇文章(https://topsemic.com/573.html)里有过介绍过,网上也有大量的内...
  • 基于嵌入式MINIGUI的GPS数据解析的程序,有界面,内部有小错误,自己调试,代码有很详细的注解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 877
精华内容 350
关键字:

gps数据解析