使用gpsd aivdm模式的通用ais i/o库。

gpsdio的Python项目详细描述


带有python、字典和GPSd AIVDM模式的ais i/o。

https://travis-ci.org/SkyTruth/gpsdio.svg?branch=masterhttps://coveralls.io/repos/SkyTruth/gpsdio/badge.svg?branch=master

这个项目仍在发展中,但一旦达到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命令。 gpsdiosetuptools 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.BaseDrivergpsdio.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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
未检测到“空格”的java ASCII码   音频如何在Java中设置SourceDataLine的音量   java MyBatissSpringBoot无法使用作为bean注入的数据源   Java字谜递归列表<List<String>>仅存储空列表<Strings>   java显示30px高的JPanel,然后用minecraft填充剩余空间   java JOGL平滑度   Java:按完整与否对1d对象数组进行排序   arraylist仅当java结构不存在时才将对象添加到java结构中   无法初始化java渲染库在安卓 studio 4.1.1上出现错误   java SpringBoot ClassCastException   java解析文本文件,基于字数   java=运算符引发异常   java使点可拖动并存储新坐标JavaFx   JavaWebSphereApplicationServer:EJB模块和JMS路由器