gpsd - AIS 位置信息完成 UTC 获取
问题描述
使用 gpsdecode 解码 AIVM 句子后,我有一堆 json 结构,每个结构都包含消息类型的所有数据,例如:
{"class":"AIS","device":"stdin","type":1,"repeat":0,"mmsi":224047690,"scaled":true,"status":15,"status_text":"Not defined","turn":"nan","speed":0.0,"accuracy":false,"lon":-8.7296,"lat":42.2401,"course":231.9,"heading":511,"second":36,"maneuver":0,"raim":true,"radio":114776}
{"class":"AIS","device":"stdin","type":4,"repeat":0,"mmsi":2240998,"scaled":true,"timestamp":"2018-05-19T16:34:35Z","accuracy":true,"lon":-8.7877,"lat":42.1717,"epfd":7,"epfd_text":"Surveyed","raim":false,"radio":165192}
我的问题是位置消息(类型 1、2、3)没有完整的 UTC,只是在 0-60 之间的几秒钟内的引用,这是获取此消息的完整 UTC 的正确方法吗?
解决方案
AIS 消息中不存在时间戳。
AIS 系统最初是作为避碰系统创建的,应该是实时使用的,因此不需要传输时间戳。
如果您收到实时 AIS 提要,则需要在收到消息时立即添加当前时间戳,并可能使用队列来推迟其余处理。
消息中的UTC_seconds
字段是电子仓位系统生成报告时的第二个字段,而不是真正的时间戳。您可以在https://www.navcen.uscg.gov/?pageName=AISMessagesA找到消息 1、2、3 中传输的所有字段。
推荐阅读
- javascript - 给定函数 H(A, B) = (A ^ B) ^ ((A & B) << 1) 的输出 C,如何编写一个给定 C 和 B 输出 A 的函数?
- spring-boot - Unable to get Swagger ui working with springboot getting white label error (403)
- c# - Upload txt files via Web Service from client
- uitableview - 在Apple TV中重新加载后如何在collectionview中保留以前的选择
- python - Python中另一个列表的子字符串过滤列表元素
- bpel - 是否有任何工具或代码可以将 BPEL 转换为 NuSMV 代码?
- android - java.lang.IllegalStateException:无法压缩回收的位图
- php - universal navbar and sidebar HTML
- c - 理解“volatile”关键字和比较的工作原理
- regex - 正则表达式不完全匹配所需的模式