• 【听如子说】-python模块系列-AIS编解码Pyais


    1|0Pyais Module Introduce


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


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

    v1 doc 弃用,看2就好

    v2 仓库(folked)

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

    模块特点

    AIS消息的编解码。

    100% 纯Python。

    支持AIVDM / AIVDO消息。

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

    1|2首先直接pip安装模块


    !pip install pyais

    1|3编码例子


    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_dict data = { '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]

    1|4解码例子


    from pyais import decode decoded = decode(b"!AIVDM,1,1,,B,15NG6V0P01G?cFhE`R2IU?wn28R>,0*05") print(decoded)
    MessageType1(msg_type=1, repeat=0, mmsi=367380120, status=, 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 decode parts = [ 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')

    1|5其他例子


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

    1|6gui使用 (todo,有时间在二次开发)


    基于gooey快速开发GUI application

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

    !pip install Gooey

    未完,待续...

    可执行程序打包

    未完,待续...


    __EOF__

    本文作者我是如子啊
    本文链接https://www.cnblogs.com/iamruzi/p/16810211.html
    关于博主:评论和私信会在第一时间回复。或者直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    uniapp vue2 首页生命周期函数等待app.vue加载完毕后执行
    Linux 搭建本地镜像源(CentOS 离线 yum)
    计算机网络(持续更新…)
    git--工程备份git仓的使用
    SpringCloud-Bus
    三十六、java版 SpringCloud分布式微服务云架构之Java 泛型
    编程奇境:C++之旅,从新手村到ACM/OI算法竞赛大门(武器:递归与递推)
    ANSYS二次开发:Python解析ansys fluent结果文件
    基于混沌博弈优化的BP神经网络(分类应用) - 附代码
    RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像
  • 原文地址:https://www.cnblogs.com/iamruzi/p/16810211.html