使用gpsd aivdm模式的通用ais i/o库。
gpsdio的Python项目详细描述
带有python、字典和GPSd AIVDM模式的ais i/o。
这个项目仍在发展中,但一旦达到v0.1,它就会平静下来。我们 希望听到您使用或希望使用此项目的消息 所以我们不会做出任何意外的改变,也不会让外界对ais产生意见。 处理。
概述
船舶使用船对船自动识别系统(ais)来避免 通过广播关于他们是谁,他们在哪里的信息,以及 他们在做什么。这些消息以NMEA 0183的形式广播 或NMEA 2000句子 不断被地面和卫星接收器收集。
NMEA很大,很难在本地使用,所以解决方法是 解析它并存储为另一种格式。而不是花时间发展我们的 我们选择采用自己的模式GPSd AIVDM 模式,它清楚地定义了所有消息类型。消息很好地映射到python 字典是因为字段的类型不同,所以这就是gpsdio使用的。
该项目旨在通过提供I/O和 一组有用的小转换,并通过大规模数据处理构建 考虑到管道。
示例I/O
下面是一个如何读取存储为newline delimited JSON的数据的小例子, 添加一个字段,并编写为gzip压缩的MsgPack。 驱动程序和压缩是显式给定的,但也可以从文件路径中检测到。 有关gpsdio.open()返回的内容的详细信息,请参阅messages部分。
importgpsdiowithgpsdio.open('sample-data/types.json')assrc:withgpsdio.open('with-num-fields.msg.gz','w',driver='MsgPack',compression='GZIP')asdst:formsginsrc:msg['num_fields']=len(msg)
分析NMEA句子
gpsdio还不支持直接读取NMEA,尽管它希望 在不久的将来。同时,libais 有一个aisdecode实用程序,它具有生成数据的可选--gpsd格式 这个图书馆可读。
命令行接口
此项目还为诸如 检查和转换数据。见CLI docs 更多信息。
消息
注意:消息验证和转换尚未完全解决,将 更改为v0.1。下面的描述目前主要是相关的,尽管 有些字段在读或写时可能会放入__invalid__键中。
gpsdio.open()返回一个名为Stream()的类似文件的对象,即 负责从底层驱动程序获取字典并转换 它变成了一个格式良好的信息。
通常I/O库在读取和读取之前执行一些严格的验证 编写数据,但使用ais通常需要添加一些自定义字段。 而不是告诉gpsdio.open()它可能遇到的其他字段 每次打开文件时,只有在请求时才会进行消息验证。 这可能看起来有些倒退,但想法是验证实际上只需要 当数据被解析并带入gpsdio世界时发生。在那之后 用户对自己的数据了解得更多,而且可能会添加其他字段 在处理过程中。
见sample-data 对于某些数据,gpsdio可以立即读写。
cli插件
开发人员可以使用click-plugins创建自己的gpsdio命令。 gpsdio从setuptools entry point加载插件 称为gpsdio.cli_plugins,因此在您的setup.py:
setup(entry_points=''' [gpsdio.cli_plugins] name=package.module:click_command ''')
有关更深入的描述,请参见click-plugins 文档。另外,请参见gpsdio-density 例如,或者 plugin registry。
驱动程序插件
外部驱动程序应注册到入口点gpsdio.driver_plugins,并且 必须子类gpsdio.base.BaseDriver或gpsdio.base.BaseCompressionDriver。 有关子类化信息,请参见这两个对象上的docstrings。
安装
使用pip:
$ pip install gpsdio
来源:
$ git clone https://github.com/SkyTruth/gpsdio $cd gpsdio $ python setup.py install
开发
$ git clone https://github.com/SkyTruth/gpsdio.git $cd gpsdio $ virtualenv venv $source venv/bin/activate $ pip install -e .[dev]$ py.test tests --cov gpsdio --cov-report term-missing
更改日志
见CHANGES.md
许可证
见LICENSE.txt