AIS数据解析

第一部分:原始AIS数据格式
以下是一条原始AIS数据:
!AIVDM,1,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C
数据由多个字段组成,字段之间用逗号隔开,每个字段的含义如下:

字段1 -- !AIVDM:数据包标志。前两个字母是设备标志,“AI”是船载标志,“BS”是基站标志,后三个字母是信息标志,VDM表示封装的是他船信息,VDO表示封装的是本船信息。所以AIVDM 数据包是来自其他船舶的报告,AIVDO 数据包是来自您自己的船舶的报告。

字段2 -- 1:当前消息中的累计片段数。每条报文的有效载荷大小是受限制的,因此有时需要将消息拆分成多个片段,该字段表示最大片段数。该例中是1。

字段3 -- 1:指本条报文处于哪个片段。该例中是1。

字段4 -- '':是多片段消息的连续ID,ID的值域是[0,9]。该例是空字符串,代表只有一个片段。

字段5 -- B:无线电信道代码。AIS 使用两个 VHF 无线电频道的复式高边:A 为 161.975Mhz (87B):B 频道为 162.025Mhz (88B)。

字段6 -- 177KQJ5000G?tO`K>RA1wUbN0TKH:数据的有效载荷,或者说是数据包,也就是我们最关心的,需要进行解码。

字段7 -- 05C:这个字段分成两个部分,号前面的数字,代表将数据有效载荷填充到 6 位边界所需的填充位数,范围从 0 到 5 不等。*号后面的数字是校验码,是 NMEA 0183 数据完整性检查。

举个例子:下面是一个多片段句子的示例,此例中,一条消息被分成了两条报文。
其中带有一个无提示消息 ID 字段。
!AIVDM,2,1,3,B,55P5TL01VIaAL@7WKO@mBplU@<PDhh000000001S;AJ::4A80?4i@E53,0*3E !AIVDM,2,2,3,B,1@0000000000000,2*55

第二部分:AIS解码后的数据类型
需要解码的数据在原始AIS数据的字段6中,字段6所含信息就是报文的实质性内容,它一共有27种类型。那么先列出有哪27种类型:

01 位置报告A类
02 位置报告A类(已分配时间表)
03 位置报告A类(对审讯的回应)
04 基站报告
05 静态和航程相关数据
06 二进制地址的消息
07 二进制确认
08 二进制广播消息
09 标准SAR飞机位置报告
10 UTC和日期查询
11 UTC和日期响应
12 已解决的安全相关消息
13 安全相关确认
14 安全相关广播消息
15 审讯
16 分配模式命令
17 DGNSS二进制广播消息
18 标准B级CS位置报告
19 扩展的B类设备位置报告
20 数据链接管理
21 助航报告
22 渠道管理
23 组分配命令
24 静态数据报告
25 单插槽二进制消息
26 具有通信状态的多插槽二进制消息
27 远程应用的位置报告
第三部分:不同类型数据对应的格式
每一条报文解码后因为类型的不同,所以解码出的格式或者说内容也会不同。对每种类型的数据解码后会有哪些内容,现在开始讲解。解码后的数据都是英文的,为了在使用中方便对照,不译成中文。

每种类型的数据含有不同的字段,以下面表格呈现,表头的含义如下:
Field:该字段在编码中所在位置;
Len:该字段在编码中所占长度;
Description:对于该字段的描述;
Member:解码后该字段的名称

类型1、2、3:A类设备的位置报告
注:A类设备能够接收和发送简短的安全相关信息,包括重要的航海和气象警报;B类设备只能接收简短的安全相关消息。

在部分字段中,比如MMSI、Rate of Turn、Position Accuracy、Longitude等,如果给出取值便可以知道其含义。但是如Message Type、Navigation Status等枚举型数据,则需要进一步对取值做说明。Message Type在前文中已经展示,取值是0~27。
Navigation Status 取值:

python解码后的数据是一个字典形式,1、2、3类型后的数据样例:
注:
1、数据已脱敏;
2、样本集中无类型2的数据,未展示;
3、Member栏是空值的,比如Spare,解码后则不会有这个字段;
4、后面各个类型的数据不一一展示,每个类型字典的key不一样,和表格中的字段是保持一致的。

{'type': 1, 'repeat': 0, 'mmsi': '000000001', 'status': <NavigationStatus.UnderWayUsingEngine: 0>, 'turn': 0, 'speed': 9.0, 'accuracy': 1, 'lon': 109.78566833333333, 'lat': 32.51417166666667, 'course': 318.40000000000003, 'heading': 312, 'second': 44, 'maneuver': <ManeuverIndicator.NotAvailable: 0>, 'raim': 0, 'radio': 2260}

{'type': 3, 'repeat': 0, 'mmsi': '000000002', 'status': <NavigationStatus.Undefined: 15>, 'turn': -128, 'speed': 2.3, 'accuracy': 0, 'lon': 110.837715, 'lat': 30.110753333333335, 'course': 63.6, 'heading': 511, 'second': 43, 'maneuver': <ManeuverIndicator.NotAvailable: 0>, 'raim': 1, 'radio': 0}

Maneuver Indicator 取值:

类型4:基站报告
固定位置基站将使用此消息来定期报告位置和时间。

Type of EPFD 取值:

类型5:静态和航行相关数据

Ship Type 取值:

类型6:二进制寻址的消息
带有未指定二进制有效载荷的寻址的点对点消息。

类型7:二进制确认
类型7消息是发给先前类型6消息的发件人的回执。

类型8:二进制广播消息
类型8消息是具有未指定二进制有效负载的广播消息。

类型9:标准SAR飞机位置报告
搜救飞机的跟踪信息。

类型10:UTC /日期查询
向AIS基站请求UTC /日期信息。

类型11:UTC /日期响应
与类型4相同,对查询返回响应。

类型12:已解决的安全相关消息

类型13:与安全相关的确认
消息类型13是发给先前类型12消息的发件人的回执。结构与类型7二进制确认相同。

类型14:与安全有关的广播消息

类型15:讯问
基站使用消息类型15来向一个或两个其他AIS收发器查询指定类型的状态消息。

类型16:分配模式命令
消息类型16由具有控制权限的基站用来配置来自下级站的AIS信息消息的调度,以每10分钟间隔的频率或通过指定应在其上发送这些消息的TDMA时隙偏移来配置。

类型17:DGNSS广播二进制消息
消息类型17用于广播GPS的差分校正。

类型18:标准B类CS位置报告
对于使用B类发射机的船只,其报告要比1-3类型的报告少。省略导航状态和转弯速率。字段的编码方式与通用导航块相同。

类型19:扩展的B级CS位置报告
对于使用B类变送器的船只,其报告要比18类型稍微详细一些。省略导航状态和转弯速率。字段的编码方式与通用导航块和5类型消息中的相同。

类型20:数据链接管理消息
该消息用于在AIS基站网络内预分配TDMA时隙。它不包含导航信息,除非您正在实施或研究AIS基站网络,否则不太可能有用。

类型21:导航协助报告
辅助工具(如浮标和灯塔)发出的标识和位置信息。

Aid Type 取值:

类型22:渠道管理
主管部门(AIS网络控制基站)广播此消息,以设置AIS覆盖区域的VHF参数。

类型23:组分配命令
该消息旨在由主管机构(AIS网络控制基站)广播,以设置AIS覆盖区域中所有移动台的操作参数。

Tx/Rx Mode 取值:

Station Type 取值:

Report Interval 取值:

类型24:静态数据报告
对于使用B类设备的船舶而言,相当于5类型消息。也用于将MMSI与A类或B类设备上的名称相关联。
类型24消息可以是A或B部分格式;根据该标准,A部分和B部分预计将以相邻对的方式进行广播。在现实中,它们可能由于各种聚合方法中的怪异现象被其他句子分隔开,甚至与不同的Type 24对交错排列;解码器必须对此进行处理。 B型格式的某些字段的解释会根据B型MMSI字段的范围而变化。

类型25:单插槽二进制消息

类型26:多槽位二进制消息

类型27:远程AIS广播消息
该消息主要用于对配备AIS A类的船只进行远程检测(通常是通过卫星)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容