Pyais Module Introduce

pyais一个简单实用的ais编解码模块

工作中需要和ais打交道,在摸鱼的过程中发现了一个牛逼的模块,对ais编解码感兴趣的可以拿项目学习一下,或者运用到你的项目中!

v1 doc 弃用,看2就好

这是我folk的 v2

现在github拉取的代码是v2,所以例子参考直接查看github的readme就好了,贴的第一个链接是v1与v2仓库的文档

模块特点

AIS消息的编解码。

100% 纯Python。

支持AIVDM / AIVDO消息。

支持单消息,文件和TCP/UDP套接字。

1. 首先直接pip安装模块

!pip install pyais

2. 编码例子

from pyais import encode_dict# Every message needs at least a MMSI and a message-type (1-27)
data = {'mmsi': 12345, 'type': 1}# Because larger payloads may need to split over several fragment sentences
# `encode_dict` always returns a list of parts (even if the message has a single part)
encoded = encode_dict(data)

看看编码效果:

encoded
['!AIVDO,1,1,,A,E000h>@00000000000000000000000000000000000000000000000000000,4*73']
from pyais.encode import encode_dictdata = {'course': 219.3,'lat': 37.802,'lon': -122.341,'mmsi': '366053209','type': 1,
}
# This will create a type 1 message for the MMSI 366053209 with lat, lon and course values specified above
encoded = encode_dict(data, radio_channel="B", talker_id="AIVDM")[0]

3. 解码例子

from pyais import decodedecoded = decode(b"!AIVDM,1,1,,B,15NG6V0P01G?cFhE`R2IU?wn28R>,0*05")
print(decoded)
MessageType1(msg_type=1, repeat=0, mmsi=367380120, status=<NavigationStatus.UnderWayUsingEngine: 0>, turn=None, speed=0.1, accuracy=False, lon=-122.404333, lat=37.806948, course=245.2, heading=511, second=59, maneuver=0, spare_1=b'\x00', raim=True, radio=34958)
from pyais import decodeparts = [b"!AIVDM,2,1,4,A,55O0W7`00001L@gCWGA2uItLth@DqtL5@F22220j1h742t0Ht0000000,0*08",b"!AIVDM,2,2,4,A,000000000000000,2*20",
]# Decode a multipart message using decode
decoded = decode(*parts)
print(decoded)
MessageType5(msg_type=5, repeat=0, mmsi=368060190, ais_version=2, imo=0, callsign='WDK4954', shipname='P/V_GOLDEN_GATE', ship_type=50, to_bow=14, to_stern=7, to_port=4, to_starboard=2, epfd=0, month=0, day=0, hour=24, minute=60, draught=0.0, destination='', dte=False, spare_1=b'\x00')

4. 其他例子

参看仓库的readme,本博客就是一个介绍,很强大,可认真学习源码,使用时候请注意开源协议,注意引用来源,尊重作者。

5.gui使用 (todo,有时间在二次开发)

5.1 基于gooey快速开发GUI application

首先,咱们安装一下gooey,这是一个快速生成GUI程序的一个库,好用简单。

!pip install Gooey

未完,待续…

5.2 可执行程序打包

未完,待续…

【听如子说】-python模块系列-AIS编解码Pyais相关推荐

  1. python 异常处理模块_扩展Python模块系列(五)----异常和错误处理

    在上一节中,讨论了在用C语言扩展Python模块时,应该如何处理无处不在的引用计数问题.重点关注的是在实现一个C Python的函数时,对于一个PyObject对象,何时调用Py_INCREF和Py_ ...

  2. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  3. 扩展Python模块系列(四)----引用计数问题的处理

    承接上文,发现在使用Python C/C++ API扩展Python模块时,总要在各种各样的地方考虑到引用计数问题,稍不留神可能会导致扩展的模块存在内存泄漏.引用计数问题是C语言扩展Python模块最 ...

  4. python 参数封装_扩展Python模块系列(三)----参数解析与结果封装

    在上一节中,通过一个简单的例子介绍了C语言扩展Python内建模块的整体流程,从本节开始讲开始深入讨论一些细节问题,在细节讨论中从始至终都会涉及[引用计数]的问题.首先讨论C语言封装的Python函数 ...

  5. 音视频系列--H264编解码总结

    一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...

  6. 音视频开发系列--H264编解码总结

    一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...

  7. python rot13解密_用Python实现的rot13编解码

    本文最后更新于2015年8月2日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! #一目了然版 def rot13(s): result = "" for v in ...

  8. 【Codecs系列】编解码基础知识:广义B帧GPB简介

    Date: 2022.7.20 文章目录 1.GPB概念 2.GPB帧宏块类型 1.GPB概念 广义B帧(Generalized P and B picture,GPB)是指对传统P帧采取类似于B帧的 ...

  9. 【Python模块】图形化编程模块-turtle

    Turtle,也称海龟渲染器,是 Python 内置的图形化模块,它使用 tkinter 实现基本图形界面,因此 当前使用的 Python 环境需要支持 tkinter. Turtle 提供了面向对象 ...

最新文章

  1. 大数据调度平台Airflow(三):Airflow单机搭建
  2. numpy——hsplit()、vsplit()函数的详细使用
  3. AUTOSAR从入门到精通100讲(四)-CAN总线数据帧分类及格式详解
  4. delphi控件切图界面闪烁_先本设计教你跳过UI小程序的七个坑
  5. linux 显卡驱动程序,NVIDIA为Linux发布重大驱动程序升级
  6. Sparse Modeling of Intrinsic Correspondences
  7. 转载自Kevin-Tong
  8. 这里有110+公开的专业数据集
  9. python 扫描枪_使用Python和OpenCV在视频中实时监测条形码
  10. Akamai 宣布收购 IaaS 提供商 Linode
  11. TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”
  12. Excel里如何设置保留几位小数
  13. 修改nz-select中的nz-option设置title属性展示内容。
  14. 七夕节送男朋友什么礼物、男生最渴望收到的礼物排行榜
  15. 信息无障碍相关会议网址链接
  16. 华为荣耀计算机设置,华为荣耀路由器设置(手机和电脑设置)的方法(图文详解)...
  17. 2019牛客暑期多校训练营(第一场)E : ABBA(dp)
  18. 百厨盛达厨房设备中心:乐信万能蒸烤箱适合做什么菜
  19. CAD图纸打印不出来
  20. WTL CCheckListViewCtrl详解及示例

热门文章

  1. 中国慕课c语言入门视频,程序设计入门——C语言
  2. STM32——FSMC(灵活的静态存储器控制器)驱动TFTLCD液晶屏
  3. 惠普541笔记本更换内存条_从两个方面来了解内存条和主板的兼容性问题
  4. kernel 加载用户空间fw实现原理
  5. Guitar Pro里的渐强渐弱符号
  6. 使用服务器虚拟机写代码好处,服务器虚拟化的好处
  7. 分享-SpringCloud微服务架构图
  8. 免费新闻采集工具之免费采集伪原创发布工具方法分享
  9. doris insert数据时出现问题:Invalid floating-point literal
  10. 图像算法工程师常考的面试问题附回答