一个简单的AIS解析器
项目描述
我需要一个简单的AIS解码器来完成一个小型艺术项目。我没有找到,所以我在我的需求上创建了一个最小限度的工具。解码器是从公共协议文档自动生成的,但由于我使用的字段很少,我没有验证大部分解码。此代码相当粗糙,不注重正确性,因此不应用于任何重要的事情。特别是,它不应该用于船舶导航。
SimpleAIS还提供了一些实用的命令行工具,包括
aisgrep - 提取符合给定标准的句子
aist - 每行一个文本句子
aisburst - 将大量句子文件分割为每个发送者一个文件
aisinfo - 为句子文件提供摘要报告,可选地提供每个发送者的详细信息
aisdump - 详细输出单个句子,包括位
aisstat - 对字段进行基本统计
aisrefine - 一种AIS文件的损失性压缩
ais2json - 将AIS句子转换为JSON结构
如果您想试用它,但没有AIS数据,请尝试tests/sample.ais。
欢迎贡献。
库使用
以下是一个示例,是aist工具的简化版本,它打印每条完整的AIS消息一行
for sentence in sentences_from_sources(sys.argv[1:): result = [] if sentence.time: result.append(sentence.time.strftime(TIME_FORMAT)) result.append("{:2}".format(sentence.type_id())) result.append("{:9}".format(str(sentence['mmsi']))) location = sentence.location() if location: result.append("{:9.4f} {:9.4f}".format(location[0], location[1])) if sentence.type_id() == 5: result.append("{}->{}".format(sentence['shipname'], sentence['destination'])) print(" ".join(result))
sentence_from_sources() 函数将从各种来源(本地文件、串行端口、HTTP URL)中提取,只提供到达的完整句子。每个句子都有广泛的可读信息。所有记录的字段都可以通过名称引用。例如,sentence['mmsi'] 或 sentence['shipname']。location() 方法将返回一个元组,形式为 (longitude, latitude)。缺失或无效的字段将返回 None。
命令行使用
假设您有一个包含旧金山地区大量AIS数据的文件。您想从中提取各种类型船只的位置传输,然后绘制信号密度图。此外,您想用星号标记Fort Point和Fort Mason的位置,以便您对所看到的内容有一个大概的了解。为此,您可以使用aisgrep获取相关数据包,并使用aisinfo绘制地图。
$ aisgrep -t 1 -t 2 -t 3 -t 5 -t 18 -t 19 bayarea.ais | \ aisinfo --map --point -122.4775 37.8108 --point -122.4321 37.8065 Found 51 senders in 15419 good sentences with 39 invalid (0.25%). top left: -122.9261, 37.9233 bottom right: -122.3013, 37.5967 width: 55.06 km height: 36.33 km +------------------------------------------------------------+ | . . | | . | | . . .. | | ..1... .... | | ........... | | ......1... .. | | ....*..1*19..... | | . ...... . .. .| | ..... ....... | | . ......... | | ... | | ... . | | .... . | | .. . | | . | | .. | | | | | |. | +------------------------------------------------------------+
来源
我的主要协议信息来源在这里:http://catb.org/gpsd/AIVDM.html
更多协议信息在这里:http://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1371-5-201402-I!!PDF-E.pdf
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分布
构建分布
simpleais-0.7.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 619d8238a7d43e4bb0b87fd4001c892eae9b7054cc4fbe0d9928bc88496c09ac |
|
MD5 | 3f4afa4efc3fe232709d2b2a99627848 |
|
BLAKE2b-256 | 16b253b2e23c95d4b5b7fcea54c6f63d7419937174f9be0fa8b2509fea2254d3 |