您的位置:

gprmc数据格式详解

一、gprmc数据格式解析

GPS 的 gprmc 数据格式是指 Global Positioning System(GPS)Recommended Minimum 公共标准,适用于所有接收器和设备。该格式包括了时间、日期、纬度、经度、速度、航向、地磁偏角和校验和等信息,并以逗号隔开,最后附带一个回车换行符。下面是一个具体的 gprmc 数据格式示例(已删去校验和):

$GPRMC,082802.00,A,3153.32516,N,11846.89312,E,40.420,153.48,230219,,,A*5B

该示例中的元素依次为:

  • GPRMC:语句ID,表明该语句为GPRMC格式
  • 08:28:02.00:UTC时间,格式为HHmmss.sss,精确到毫秒
  • A:位置状态,A表示定位,V表示未定位
  • 31°53.32516' N:纬度,格式为ddmm.mmmmm(度分格式),单位为度
  • 118°46.89312' E:经度,格式为dddmm.mmmmm(度分格式),单位为度
  • 40.420:对地速度,单位为海里/h,精确到小数点后三位
  • 153.48:对地航向,单位为度,以真北为基准
  • 230219:日期,格式为ddmmyy
  • “A”:校验码状态,A表示校验通过,V表示校验失败

二、gprmc数据解析代码

对于上述的 gprmc 数据,我们通常需要进行解析以获得有用的信息。下面是一个 Python 代码示例,具体实现了从 gprmc 数据中提取出纬度、经度、速度、航向、时间等信息的功能:

def parse_gprmc(gprmc):
    parts = gprmc.split(',')
    if parts[2] != "A":
        return None
    lat = float(parts[3][:2]) + float(parts[3][2:]) / 60
    if parts[4] == 'S':
        lat = -lat
    lon = float(parts[5][:3]) + float(parts[5][3:]) / 60
    if parts[6] == 'W':
        lon = -lon
    speed = float(parts[7]) * 0.514444 # 将海里/h转换为m/s
    direction = float(parts[8])
    date = parts[9]
    time = parts[1][:2] + ":" + parts[1][2:4] + ":" + parts[1][4:6]
    return {'lat': lat, 'lon': lon, 'speed': speed, 'direction': direction, 'date': date, 'time': time}

该函数接受一个 gprmc 数据字符串作为参数,返回一个包含有用信息的字典。其中,经度和纬度的计算涉及对度分格式进行转换,速度的单位换算为 m/s。

三、gps数据格式详解

GPS 数据格式不仅仅有 gprmc 格式,还包括 gpgga、gpgsv、gpvtg、gngga、gnrmc 等多种格式。下面简单介绍几种常见的 GPS 数据格式:

1. gpgga 格式

gpgga 数据格式也是常见的一种 GPS 数据格式,其信息包括了时间、纬度、经度、定位质量指示、使用卫星数、水平精度因子、天线离海平面高度、大地水准面高度和校验和等。数据格式示例如下:

$GPGGA,082802.00,3153.32516,N,11846.89312,E,2,18,0.9,23.6,M,0.0,M,,*73

2. gpgsv 格式

gpgsv 数据格式包含了卫星的信息,可以获取卫星的ID、高度、方位角等信息。数据格式示例如下:

$GPGSV,3,3,09,31,,,25,22,-6,32,27,0,0,21ok<0x9f>

3. gpvtg 格式

gpvtg 数据格式包含了航向和速度信息。数据格式示例如下:

$GPVTG,153.48,T,,M,0.420,N,0.778,K,A*0A

四、总结与展望

本文详细介绍了 GPS 的 gprmc 数据格式,并提供了相应的代码示例。同时,针对其他常见的 GPS 数据格式也进行了简要的介绍。我们在实际开发应用中,需要根据具体需求选择合适的 GPS 数据格式,并进行相应的解析和处理。