我正在编写一个程序,以GPRMC NMEA语句的形式接收数据,并按照GTFS-realtime的规定输出。
GTFS-realtime想要一个“承载”值,并将其描述为:
从True North顺时针方向的轴承,以度为单位,即0表示北,90表示东方。这可以是罗盘方位,或朝向下一站或中间位置的方向。这不应该从先前位置的顺序推导出来,客户可以从之前的数据计算出来。
GPRMC NMEA句子包含三个我认为相关的领域,但我的研究发现了一系列不同的想法:
Track angle in degrees True
,Course Made Good, True
,Track made good in degrees True
Magnetic Variation
,Variation
,Magnetic variation degrees (Easterly var. subtracts from true course)
Magnetic Variation
,East/West
,E or W
为了完整性,这里是一个完整的GPRMC句子,相关字段用粗体表示:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,
的 084.4 ,230394,
的 003.1 ,
的 w ^ *6A
我如何从GPRMC NMEA句子中获得GTFS-realtime格式的方位?
答案 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
这有帮助吗?