Ce document fournit un bref aperçu du processus, ainsi que des données et des outils requis, pour générer des cartes de densité à l'aide de la « boîte à outils Marinetraffic AIS ». Les données utilisées dans cet aperçu sont des données historiques décodées du système d’identification automatique (AIS).
Nous vous recommandons fortement d'exécuter ce module dans un environnement virtuel pour garantir la compatibilité des packages.
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;
Installation du package dans l'environnement virtuel
pip install -e .
Pour désactiver l'environnement virtuel, utilisez :
deactivate
Le package peut également être installé directement à partir de notre dépôt gitub avec la commande suivante, cependant des modifications supplémentaires dans les chemins sont nécessaires pour exécuter les exemples suivants.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
Vérifiez également la section de configuration ci-dessous
Remarque : il est recommandé de définir la variable système suivante pour accélérer les jointures spatiales pygeos :
export USE_PYGEOS=1
Cette boîte à outils s'appuie sur la bibliothèque GDAL, principalement pour les processus de rastérisation, donc son installation dans le système d'exploitation Windows nécessitera une installation fonctionnelle de GDAL sur votre système.
Pour utiliser ce module sous Windows, vous devez disposer d'une installation GDAL fonctionnelle avant d'installer cette boîte à outils. Une solution de contournement consiste à installer GDAL via OSGeo4w (https://trac.osgeo.org/osgeo4w/) et à définir les chemins appropriés pour utiliser à la place la version Python incluse. De plus, vous devez inclure le répertoire bin du dossier d'installation d'osgeo dans votre variable d'environnement PATH.
Ce forfait comprend
Un fichier configuration.json qui détermine :
Implémentations pour :
Chaque étape de notre approche nécessite certains paramètres qui incluent : les chemins des fichiers d'entrée et des répertoires de sortie, les indicateurs concernant l'opération à exécuter, les seuils supplémentaires requis lors de l'exécution (par exemple, le taux de sous-échantillonnage). Toutes ces informations doivent être incluses dans un fichier de configuration, et doivent être passées en argument lors de l'exécution (par exemple config/config.json).
Pour le chargement des messages AIS, des fichiers compressés de valeurs séparées par des virgules doivent être inclus (format .csv.bz2). Ces fichiers doivent avoir les messages classés par leurs horodatages. S'il existe plusieurs fichiers d'entrée, ils doivent être classés par ordre alphabétique afin que les fichiers contenant des messages antérieurs arrivent en premier.
Fusionner les données décodées : les messages AIS (statiques et positionnels) seraient fusionnés afin que chaque message de position comprenne des informations supplémentaires provenant des messages AIS statiques correspondants. Le processus de fusion peut être exécuté par :
python -m mt.cleaning.ais_merge config/config.json
Dans le cas où le message est un rapport statique :
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
Dans le cas où le message est un rapport de position :
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
Exemple d'ensemble de données original pour un seul navire.
Nettoyer les données fusionnées : après la fusion, tous les messages AIS doivent passer par les filtres indiqués dans le fichier de configuration. Ceux-ci peuvent inclure : la vérification de la validité des champs de mouvement, de la validité de l'ID du navire (MMSI), du masque terrestre et autres (voir la section Filtres ci-dessous). Les répertoires d'entrée et de sortie ainsi que les filtres à appliquer sont définis sur le fichier de configuration fourni. Le processus de nettoyage peut être exécuté par :
python -m mt.cleaning.data_cleaning config/config.json
Nettoyer l'ensemble de données (vert) pour le même navire. Les messages rouges sont filtrés.
L'étape de génération de carte de densité lit les fichiers ais nettoyés et génère des cartes de densité par rapport à la méthode sélectionnée dans le fichier de configuration. Deux options sont disponibles, la première mesure le nombre de navires dans chaque cellule tandis que la seconde regroupe le temps passé dans chaque cellule de tous les navires qui la traversent.
python -m mt.density.export_density_maps config/config.json
Grille latérale de 1 km utilisée pour calculer les cartes de densité. Positions nettoyées de trois navires
Le processus de rastérisation.
La carte résultante de la méthode time_at_cells au format tiff géoréférencé et la palette de couleurs comme fourni dans la configuration.
Les filtres fournis par la boîte à outils Marinetraffic AIS incluent :
Le fichier de configuration donné détermine lequel des filtres ci-dessus serait appliqué.
Le fichier de configuration de la boîte à outils Marinetraffic AIS est un fichier json composé des paramètres qui contrôlent entre autres les chemins d'entrée et de sortie, ajustent la sensibilité du processus de nettoyage des données et contrôlent d'autres aspects du processus de génération de cartes.
Paramètre | Description | Valeurs par défaut |
---|---|---|
"chemin_fichier_géométrie" | Chemin du fichier de géométrie utilisé | dans la configuration |
"grids_path" | Chemin pour sauvegarder la grille | dans la configuration |
"ais_path" | Chemin du répertoire des messages AIS fusionnés | dans la configuration |
"ais_cleaned_path" | Chemin du répertoire des messages AIS nettoyé | dans la configuration |
"ais_decoded_path" | Chemin du répertoire des messages AIS fusionnés | dans la configuration |
"chemin_densité" | Chemin du répertoire des fichiers de densité résultants | dans la configuration |
"chemin_fichiers_couleurs" | Répertoire des fichiers de couleur du chemin du fichier de densité (TIFF) | dans la configuration |
"ais_stats_path" | Chemin du répertoire des statistiques | dans la configuration |
"out_crs" | Code du système de référence de coordonnées de sortie (CRS 3035 ou 3857 (non testé)) | 3035 |
"champs_vides" | Si vrai, supprime les messages avec des champs vides | FAUX |
"champs_de_mouvement_invalides" | Si vrai, supprime les messages avec des valeurs non valides dans les champs COG, SOG, LON, LAT | FAUX |
"invalid_mmsi" | Si vrai, supprime les messages avec des valeurs mmsi non valides (voir ci-dessous) | FAUX |
"faux_mmsi" | Liste des MMSI à exclure | dans la configuration |
"masque_terre" | Si c'est vrai, cela applique le processus de masquage du terrain | FAUX |
"boîte_limite" | Liste de coordonnées qui indiquent la zone d'intérêt. Les coordonnées sont au format : [minLon, minLat, maxLon, maxLat], et doivent suivre le système de projection en sortie | facultatif dans la configuration (exemple : [5905000, 2185000, 5910000, 2190000]) |
"sous-échantillonner" | Si c'est vrai, cela applique le processus de sous-échantillonnage | FAUX |
"taux_downsample" | Taux de sous-échantillonnage (en millisecondes) | dans la config (exemple : 180000 ~ 3 mins) |
"filtre_bruit" | Si c'est vrai, il applique le processus de filtrage du bruit en éliminant les messages indiquant des transitions improbables. | dans la configuration |
"grid_edge_lengths" | Liste des longueurs de cellules de grille pour la génération de grille. Chaque longueur indique la taille du bord sur chaque dimension (en mètres). | dans la config (exemple : [500000,200000,10000]) |
"laps de temps" | Si c'est vrai, il applique un filtre concernant l'horodatage de chaque message. Si vrai, le "start_time"/"end_time" doit être défini (en utilisant la représentation EPOCH - en millisecondes) | FAUX |
"heure de début/fin" | Les heures de début/fin du filtre teimframe (en millisecondes) | dans la config (exemple : 1647592893000) |
"min_positions" | Nombre de messages AIS minimum pour que le fichier soit inclus dans le processus de nettoyage | 10 |
"max_threads" | Nombre maximum de threads pendant l'exécution ; uniquement pour les processus qui fonctionnent en parallèle | 4 |
"density_method" | Méthode à utiliser pour les cartes de densité 'vessels_count' (par défaut) ou 'time_at_cells' | 'navires_count' |
"density_vessel_types" | Liste des types de navires à prendre en compte lors de la création de cartes de densité. Une carte sera générée pour chaque type de navire, sur la base des codes de type fournis dans l'AIS. L'option « Tous » inclut tous les navires, quel que soit leur type. Les options incluent : ['Tous', 'Cargo', 'Pétrolier', 'Dredging', 'HSC', 'Pêche', 'Military_Law', 'Passenger', 'Pleasure', 'Sailing', 'Service', 'Remorqueur ', 'Inconnu', 'Autre'] | 'Tous' |
Le répertoire (« colors_files_path ») contenant les fichiers de couleurs doit inclure un fichier TXT, nommé « colors_{GEL}.txt », avec GEL correspondant à la longueur de chaque bord de grille en mètres (exemple : « colors_1000.txt »). Chaque fichier doit inclure les seuils de densité suivis de la couleur appropriée, exprimée en RVB et avec un indicateur d'opacité (0-255).
Vous pouvez extraire les exigences des importations en utilisant la commande : pipreqs --force
Vous pouvez utiliser le package pip-licenses pour vérifier les licences des dépendances
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
aboutit à :
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
Ces travaux ont été partiellement financés par le Fonds européen pour les affaires maritimes et la pêche (FEAMP) à travers le contrat de service n° CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940.
Ce travail est sous licence internationale Creative Commons Attribution-Pas d’Utilisation Commerciale-Partage dans les mêmes conditions 4.0.