电子海图开发第四十六篇 , AIS数据的解析(共一百篇)
AIS 报文包含报头、传送电文所需语句总数、语句号、电文识别码、信道、船舶信息、填充比特数和检验码等部分。如下图所示为AIS报文格式及示例
“!”表示暗码报文标志;紧接着的五位字符为会话I,如“ AIVDM”说明是通过ⅤHF数据链路进行接收的所有的AS信息,其它的会话I还包括“AIVO、 AIACA、 AIABK”;当将一条长消息分成多条语句进行传输时,由第三项表明该消息具体由多少条语句组成,本例中就一条语句;第四项为语句序号,表示当前语句在语句序列中的位置;第五项为消息标识号,它标识该条语句的消息号,当仅一条语句时,该项不填;第六项指定了传输的频道;第七项是按协议定义的封装消息,如果消息是由多条语句组成,那么在解码时需要将各条消息提取合并成个完整的消息码文才能进行解码;第八项是比特填充位数;第九项为校验码,是“*”前面所有字符异或的结果,十六进制表示,用于数据校验。
其中第七项封装消息的第一个字符说明了该报文的类型,报文类型不同,格式也不相同。在AIS中,常用的报文类型如表1所示4。
如船位报告1、2、3报文的Bit位分布如表2所示。无论哪一类报文,在解析过程中,前六项及第八项的内容可以直接提取,不需要任何转换,第七项内容的提取才是整个解析过程中的难点。
1)对于包含相同信息的不同类型报文,相同信息在报文中的位置并不相同,从而导致解析过程中很多模块难以重用。如报文1、2、3与报文18、19 中均含有船舶的经纬度信息,但经纬度信息在前三类中处于报文的第62到117位,而在后两类则处于第58位到113位。
2)报文的解析主要是对Bit位的操作,整个过程中需多次移位、拼接,操作复杂繁琐。在PC端解析AIS报文时,首先需将字符转换为6 BitAscII 码,然后对转换后的6Bit进行拼接操作,形成一个新的字符串;最后再根据报文格式按照Bit位提取相应的信息;在提取过程中,还需要不断移位、拼接等操作,整个过程较为繁琐。
3)AS数据涉及的类型较少,只包括整数和字符两种类型。而对于经纬度航速等浮点数类型的信息,也是通过整数类型转换得到。这在一定程度上也减小了AIS报文解析的复杂度。