このドキュメントでは、「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 環境変数に含める必要があります。
このパッケージには以下が含まれます
以下を決定するconfiguration.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 ファイルを読み取り、構成ファイルで選択されたメソッドに関して密度マップを生成します。利用可能なオプションは 2 つあり、1 つ目は各セル内の血管の数を測定し、2 つ目はセルを通過するすべての血管が各セル内で費やした時間を集計します。
python -m mt.density.export_density_maps config/config.json
密度マップの計算に使用される 1km 四方のグリッド。 3 つの容器の洗浄位置
ラスター化プロセス。
地理参照 tiff 形式の time_at_cells メソッドの結果のマップと、設定で提供されるカラーマップ。
Marinetraffic AIS ツールボックスによって提供されるフィルターには次のものがあります。
指定された構成ファイルによって、上記のどのフィルターが適用されるかが決まります。
Marinetraffic AIS ツールボックス構成ファイルは、特に入力パスと出力パスを制御し、データ クリーニング プロセスの感度を調整し、マップ生成プロセスの他の側面を制御するパラメーターで構成される json ファイルです。
パラメータ | 説明 | デフォルト値 |
---|---|---|
「ジオメトリファイルのパス」 | 使用されるジオメトリ ファイルのパス | 構成内で |
「グリッドパス」 | グリッドを保存するためのパス | 構成内で |
「ais_path」 | マージされた AIS メッセージ ディレクトリのパス | 構成内で |
「ais_cleaned_path」 | クリーンアップされた AIS メッセージ ディレクトリのパス | 構成内で |
「ais_deded_path」 | マージされた AIS メッセージ ディレクトリのパス | 構成内で |
「密度パス」 | 結果の密度ファイル ディレクトリのパス | 構成内で |
「カラーファイルのパス」 | 密度ファイル (TIFF) カラー ファイル ディレクトリのパス | 構成内で |
「ais_stats_path」 | 統計ディレクトリのパス | 構成内で |
「out_crs」 | 出力座標参照系コード (CRS 3035 または 3857(未テスト)) | 3035 |
「空のフィールド」 | true の場合、フィールドが空のメッセージを削除します | 間違い |
「無効な移動フィールド」 | true の場合、COG、SOG、LON、LAT フィールドに無効な値を持つメッセージが削除されます。 | 間違い |
「無効な_mmsi」 | true の場合、無効な mmsi 値を持つメッセージが削除されます (下記を参照)。 | 間違い |
「false_mmsi」 | 除外するMMSIのリスト | 構成内で |
「ランドマスク」 | true の場合、ランドマスキングプロセスが強制されます。 | 間違い |
「バウンディングボックス」 | 対象領域を示す座標のリスト。座標は [minLon, minLat, maxLon, maxLat] の形式であり、出力投影法に従う必要があります。 | 設定のオプション (例: [5905000, 2185000, 5910000, 2190000]) |
「ダウンサンプル」 | true の場合、ダウンサンプリング プロセスを強制します | 間違い |
「ダウンサンプルレート」 | ダウンサンプリング レート (ミリ秒単位) | 設定内 (例: 180000 ~ 3 分) |
「ノイズフィルター」 | true の場合、ありそうもない遷移を示すメッセージを排除することで、ノイズ フィルタリング プロセスを強制します。 | 構成内で |
「グリッドエッジの長さ」 | グリッド生成のためのグリッドセルの長さのリスト。各長さは、各寸法のエッジのサイズ (メートル単位) を示します。 | 設定内 (例: [500000,200000,10000]) |
"時間枠" | true の場合、各メッセージのタイムスタンプに関するフィルターが適用されます。 true の場合、「start_time」/「end_time」を定義する必要があります(EPOCH 表現を使用してミリ秒単位で) | 間違い |
「開始/終了時刻」 | teimframe フィルターの開始/終了時間 (ミリ秒単位) | 設定内 (例: 1647592893000) |
"min_positions" | クリーニング プロセスに含めるファイルの最小 AIS メッセージの数 | 10 |
「最大スレッド数」 | 実行中のスレッドの最大数。並行して動作するプロセスのみ | 4 |
「密度メソッド」 | 密度マップに使用されるメソッド「vessels_count」(デフォルト) または「time_at_cells」 | 「容器数」 |
「密度_容器タイプ」 | 密度マップを作成する際に考慮すべき船舶のタイプのリスト。 AIS で提供されるタイプ コードに基づいて、船舶のタイプごとに 1 つのマップが生成されます。 「すべて」オプションには、タイプに関係なくすべての船舶が含まれます。オプションには次が含まれます: ['すべて'、'貨物'、'タンカー'、'浚渫'、'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
この研究は、サービス契約番号 CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940 を通じて、欧州海事漁業基金 (EMFF) から部分的に資金提供を受けています。
この作品は、クリエイティブ コモンズ 表示 - 非営利 - 継承 4.0 国際ライセンスに基づいてライセンスされています。