本文檔簡要概述了使用「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 授權。