本文档简要概述了使用“Marinetraffic AIS 工具箱”生成密度图的过程以及所需的数据和工具。本概述中使用的数据是解码的历史自动识别系统 (AIS) 数据。
我们强烈建议在虚拟环境中运行此模块以确保包兼容性。
git clone https://github.com/marinetraffic/mt-ais-toolbox.git;
cd mt-ais-toolbox/;
python3 -m venv .venv;
source .venv/bin/activate;
pip install -e .;
export USE_PYGEOS=1;
虚拟环境中的包安装
pip install -e .
要停用虚拟环境,请使用:
deactivate
还可以使用以下命令直接从我们的 gitub 存储库安装该软件包,但是需要对路径进行额外更改才能运行以下示例。
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
另请检查下面的配置部分
注意:建议设置以下系统变量以加速 pygeos 空间连接:
export USE_PYGEOS=1
该工具箱依赖于 GDAL 库,主要用于光栅化过程,因此在 Windows 操作系统中安装它需要在整个系统中安装 GDAL。
要在 Windows 中使用此模块,您需要在安装此工具箱之前安装有效的 GDAL。解决方法是通过 OSGeo4w (https://trac.osgeo.org/osgeo4w/) 安装 GDAL,并定义适当的路径以使用包含的 python 版本。另外,您必须将osgeo安装文件夹的bin目录包含到您的PATH环境变量中。
该套餐包括
配置.json 文件确定:
实现:
我们方法的每个步骤都需要一些参数,包括:输入文件和输出目录的路径、有关要执行的操作的标志、执行期间所需的附加阈值(例如下采样率)。所有这些信息都应该包含在配置文件中,并且应该在执行期间作为参数传递(例如 config/config.json)。
为了加载 AIS 消息,应包含压缩的逗号分隔值文件(格式 .csv.bz2)。这些文件中的消息应按时间戳排序。如果有多个输入文件,则必须按字母顺序对它们进行排序,以便包含较早消息的文件排在前面。
合并解码数据:AIS 消息(静态和位置)将被合并,以便每个位置消息包含源自相应静态 AIS 消息的附加信息。合并过程可以通过以下方式执行:
python -m mt.cleaning.ais_merge config/config.json
如果消息是静态报告:
t,station,channel_code,mmsi,type,data_type,imo;shiptype;to_bow;to_stern;to_port;to_starboard;callsign;shipname;draught;destination;eta_month;eta_day;eta_hour;eta_minute
如果消息是位置报告:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
单个容器的原始样本数据集。
清理合并的数据:合并后,所有 AIS 消息应经过配置文件中指示的过滤器。这些可能包括:检查运动字段的有效性、船舶 ID (MMSI) 的有效性、陆地掩码等(请参阅下面的“过滤器”部分)。输入和输出目录以及要应用的过滤器在给定的配置文件中定义。清洁过程可以通过以下方式执行:
python -m mt.cleaning.data_cleaning config/config.json
同一容器的干净数据集(绿色)。红色消息被过滤掉。
密度图生成步骤读取清理后的 ais 文件并根据配置文件中选定的方法生成密度图。有两种可用选项,第一个选项测量每个单元内的血管数量,而第二个选项则汇总所有穿过该单元的血管在每个单元内花费的时间。
python -m mt.density.export_density_maps config/config.json
1km边网格用于计算密度图。三艘船的清洁位置
光栅化过程。
time_at_cells 方法的结果图采用地理参考 tiff 格式和配置中提供的颜色图。
Marinetraffic AIS 工具箱提供的过滤器包括:
给定的配置文件确定将应用上述哪个过滤器。
Marinetraffic AIS 工具箱配置文件是一个 json 文件,其中包含控制输入和输出路径、调整数据清理过程的敏感度以及控制地图生成过程的其他方面的参数。
范围 | 描述 | 默认值 |
---|---|---|
“几何文件路径” | 使用的几何文件的路径 | 在配置中 |
“网格路径” | 网格保存路径 | 在配置中 |
“ais_路径” | 合并AIS消息目录的路径 | 在配置中 |
“ais_cleaned_path” | 已清理的 AIS 消息目录的路径 | 在配置中 |
“ais_解码_路径” | 合并AIS消息目录的路径 | 在配置中 |
“密度路径” | 生成的密度文件目录的路径 | 在配置中 |
“颜色_文件_路径” | 密度文件 (TIFF) 颜色文件目录的路径 | 在配置中 |
“ais_stats_路径” | 统计目录的路径 | 在配置中 |
“out_crs” | 输出坐标参考系代码(CRS 3035或3857(未测试)) | 3035 |
“空字段” | 如果 true 则删除带有空字段的消息 | 错误的 |
“无效移动字段” | 如果为 true,则删除 COG、SOG、LON、LAT 字段中具有无效值的消息 | 错误的 |
“无效_mmsi” | 如果为 true,则删除具有无效 mmsi 值的消息(见下文) | 错误的 |
“假_mmsi” | 要排除的 MMSI 列表 | 在配置中 |
“土地掩码” | 如果为真,则强制执行土地屏蔽过程 | 错误的 |
“边界框” | 指示感兴趣区域的坐标列表。坐标的格式为:[minLon, minLat, maxLon, maxLat],并且必须遵循输出投影系统 | 配置中可选(例如:[5905000, 2185000, 5910000, 2190000]) |
“下采样” | 如果 true 则强制执行下采样过程 | 错误的 |
“下采样率” | 下采样率(以毫秒为单位) | 在配置中(例如:180000 ~ 3 分钟) |
“噪音过滤器” | 如果为 true,则通过消除指示不可能转换的消息来强制执行噪声过滤过程 | 在配置中 |
“网格边缘长度” | 用于网格生成的网格单元长度列表。每个长度表示每个尺寸上的边缘尺寸(以米为单位)。 | 在配置中(例如:[500000,200000,10000]) |
“大体时间” | 如果为 true,它将强制执行有关每个消息时间戳的过滤器。如果为 true,则必须定义“start_time”/“end_time”(使用 EPOCH 表示 - 以毫秒为单位) | 错误的 |
“开始/结束时间” | teimframe 过滤器的开始/结束时间(以毫秒为单位) | 在配置中(例如:1647592893000) |
“最小位置” | 要包含在清理过程中的文件的最小 AIS 消息数 | 10 |
“最大线程数” | 执行期间的最大线程数;仅适用于并行工作的进程 | 4 |
“密度方法” | 用于密度图“vessels_count”(默认)或“time_at_cells”的方法 | '船只数量' |
“密度血管类型” | 创建密度图时要考虑的船舶类型列表。根据 AIS 中提供的类型代码,将为每种船舶类型生成一张地图。 “全部”选项包括所有船只,无论其类型如何。选项包括:['全部'、'货物'、'油轮'、'疏浚'、'HSC'、'钓鱼'、'军事法'、'乘客'、'游乐'、'航行'、'服务'、'拖船'、'未知'、'其他'] | '全部' |
包含颜色文件的目录(“colors_files_path”)应包含一个名为“colors_{GEL}.txt”的 TXT 文件,其中 GEL 是每个网格边缘长度(以米为单位)(例如:“colors_1000.txt”)。每个文件应包含密度阈值,后跟适当的颜色,以 RGB 表示并带有不透明度指示器 (0-255)。
您可以使用以下命令从导入中提取需求: pipreqs --force
您可以使用pip-licenses包来检查依赖项许可证
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
结果:
Fiona 1.8.21 BSD License
Shapely 2.0.0 BSD License
geopandas 0.10.2 BSD
haversine 2.5.1 MIT License
pandas 1.4.2 BSD License
pyproj 3.3.1 MIT License
这项工作由欧洲海事和渔业基金 (EMFF) 通过服务合同号 CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940 提供部分资助
本作品根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 获得许可。