一个简单的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 |