如何从GPRMC NMEA句子中获得“度量”(以度为单位)?

时间:2013-04-04 07:15:53

标签: nmea gtfs

我正在编写一个程序,以GPRMC NMEA语句的形式接收数据,并按照GTFS-realtime的规定输出。

GTFS-realtime想要一个“承载”值,并将其描述为:

  

从True North顺时针方向的轴承,以度为单位,即0表示北,90表示东方。这可以是罗盘方位,或朝向下一站或中间位置的方向。这不应该从先前位置的顺序推导出来,客户可以从之前的数据计算出来。

GPRMC NMEA句子包含三个我认为相关的领域,但我的研究发现了一系列不同的想法:

  1. Track angle in degrees TrueCourse Made Good, TrueTrack made good in degrees True
  2. Magnetic VariationVariationMagnetic variation degrees (Easterly var. subtracts from true course)
  3. Magnetic VariationEast/WestE or W
  4. 为了完整性,这里是一个完整的GPRMC句子,相关字段用粗体表示:

    $GPRMC,123519,A,4807.038,N,01131.000,E,022.4, 084.4 ,230394, 003.1 , w ^ *6A

    我如何从GPRMC NMEA句子中获得GTFS-realtime格式的方位?

1 个答案:

答案 0 :(得分:3)

我最近买了一个GPS模块连接到我的Arduino并且不得不了解GPRMC句子结构。 由于GPS通过从先前位置到当前位置绘制矢量来计算方向,因此不考虑磁北极的校正。 GTFS实时的方位应与GPRMC的“轨道角度(真实度)”相同。他们都是真北方。想象一下,你站在一个圆圈的中心,你正面临着真正的北方。当您顺时针旋转30度时,您将处于30度的方位(如果向前移动)。 我认为数据结构应该是这样的:

header {
  gtfs_realtime_version: "1.0"
}
entity {
    id: "myPosition"
    vehiclePosition{
        position{
            position_id: "myBearing"{
                bearing: 84.4
            }
        }
    }           
}

我从这些页面上的描述和示例中了解到这一点: https://developers.google.com/transit/gtfs-realtime/reference#VehiclePosition https://developers.google.com/transit/gtfs-realtime/examples/trip-updates-full

这有帮助吗?