Dieses Dokument bietet einen kurzen Überblick über den Prozess sowie die erforderlichen Daten und Tools zur Erstellung von Dichtekarten mit der „Marinetraffic AIS Toolbox“. Bei den in dieser Übersicht verwendeten Daten handelt es sich um entschlüsselte historische AIS-Daten (Automatic Identification System).
Wir empfehlen dringend, dieses Modul in einer virtuellen Umgebung auszuführen, um die Paketkompatibilität sicherzustellen.
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;
Paketinstallation in der virtuellen Umgebung
pip install -e .
Um die virtuelle Umgebung zu deaktivieren, verwenden Sie:
deactivate
Das Paket kann mit dem folgenden Befehl auch direkt aus unserem Gitub-Repo installiert werden, allerdings sind zusätzliche Pfadänderungen erforderlich, um die folgenden Beispiele auszuführen.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
Sehen Sie sich auch den Konfigurationsabschnitt unten an
Hinweis: Es wird empfohlen, die folgende Systemvariable festzulegen, um räumliche Pygeos-Joins zu beschleunigen:
export USE_PYGEOS=1
Diese Toolbox basiert hauptsächlich für Rasterisierungsprozesse auf der GDAL-Bibliothek. Daher erfordert die Installation im Windows-Betriebssystem eine funktionierende Installation von GDAL auf Ihrem gesamten System.
Um dieses Modul unter Windows verwenden zu können, benötigen Sie eine funktionierende GDAL-Installation, bevor Sie diese Toolbox installieren. Eine Problemumgehung besteht darin, GDAL über OSGeo4w (https://trac.osgeo.org/osgeo4w/) zu installieren und die entsprechenden Pfade zu definieren, um stattdessen die enthaltene Python-Version zu verwenden. Darüber hinaus müssen Sie das bin-Verzeichnis des Osgeo-Installationsordners in Ihre PATH-Umgebungsvariable aufnehmen.
Dieses Paket beinhaltet
Eine Datei „configuration.json“, die Folgendes bestimmt:
Implementierungen für:
Jeder Schritt unseres Ansatzes erfordert einige Parameter, darunter: Pfade für Eingabedateien und Ausgabeverzeichnisse, Flags bezüglich der auszuführenden Operation, zusätzliche Schwellenwerte, die während der Ausführung erforderlich sind (z. B. Downsampling-Rate). Alle diese Informationen sollten in einer Konfigurationsdatei enthalten sein, damit sie während der Ausführung als Argument übergeben werden können (z. B. config/config.json).
Für das Laden der AIS-Meldungen sollten komprimierte kommagetrennte Wertedateien eingebunden werden (Format .csv.bz2). In diesen Dateien sollten die Nachrichten nach Zeitstempel sortiert sein. Falls mehrere Eingabedateien vorhanden sind, müssen diese alphabetisch geordnet werden, sodass Dateien mit früheren Nachrichten an erster Stelle stehen.
Dekodierte Daten zusammenführen: AIS-Nachrichten (statisch und positionell) würden zusammengeführt, sodass jede Positionsnachricht zusätzliche Informationen enthält, die aus den entsprechenden statischen AIS-Nachrichten stammen. Der Zusammenführungsprozess kann wie folgt durchgeführt werden:
python -m mt.cleaning.ais_merge config/config.json
Falls es sich bei der Nachricht um einen statischen Bericht handelt:
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
Falls es sich bei der Nachricht um eine Positionsmeldung handelt:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
Ursprünglicher Beispieldatensatz für ein einzelnes Schiff.
Zusammengeführte Daten bereinigen: Nach dem Zusammenführen sollten alle AIS-Nachrichten die in der Konfigurationsdatei angegebenen Filter durchlaufen. Dazu können gehören: Überprüfung der Gültigkeit von Bewegungsfeldern, der Gültigkeit der Schiffs-ID (MMSI), der Landmaske und anderer (siehe Abschnitt „Filter“ unten). Eingabe- und Ausgabeverzeichnisse sowie die anzuwendenden Filter werden in der angegebenen Konfigurationsdatei definiert. Der Reinigungsprozess kann durchgeführt werden durch:
python -m mt.cleaning.data_cleaning config/config.json
Bereinigter Datensatz (grün) für dasselbe Schiff. Die roten Nachrichten werden herausgefiltert.
Der Schritt zur Generierung der Dichtekarte liest die bereinigten AIS-Dateien und generiert Dichtekarten in Bezug auf die ausgewählte Methode in der Konfigurationsdatei. Es stehen zwei Optionen zur Verfügung: Die erste misst die Anzahl der Schiffe in jeder Zelle, während die zweite die in jeder Zelle verbrachte Zeit aller sie durchquerenden Schiffe aggregiert.
python -m mt.density.export_density_maps config/config.json
1 km langes Seitengitter zur Berechnung von Dichtekarten. Bereinigte Positionen von drei Schiffen
Der Rasterisierungsprozess.
Die resultierende Karte der time_at_cells-Methode im georeferenzierten TIFF-Format und in der Farbkarte, wie in der Konfiguration bereitgestellt.
Zu den von der Marinetraffic AIS-Toolbox bereitgestellten Filtern gehören:
Die angegebene Konfigurationsdatei bestimmt, welche der oben genannten Filter angewendet werden.
Die Marinetraffic AIS Toolbox-Konfigurationsdatei ist eine JSON-Datei, die aus den Parametern besteht, die unter anderem die Eingabe- und Ausgabepfade steuern, die Empfindlichkeit des Datenbereinigungsprozesses anpassen und andere Aspekte des Kartenerstellungsprozesses steuern.
Parameter | Beschreibung | Standardwerte |
---|---|---|
„geometry_file_path“ | Pfad für die verwendete Geometriedatei | in der Konfiguration |
„grids_path“ | Pfad zum Speichern des Rasters | in der Konfiguration |
„ais_path“ | Pfad des zusammengeführten AIS-Nachrichtenverzeichnisses | in der Konfiguration |
„ais_cleaned_path“ | Pfad des bereinigten AIS-Nachrichtenverzeichnisses | in der Konfiguration |
„ais_decoded_path“ | Pfad des zusammengeführten AIS-Nachrichtenverzeichnisses | in der Konfiguration |
„density_path“ | Pfad des resultierenden Dichtedateiverzeichnisses | in der Konfiguration |
„colors_files_path“ | Pfad des Farbdateiverzeichnisses der Dichtedatei (TIFF). | in der Konfiguration |
„ais_stats_path“ | Pfad für das Statistikverzeichnis | in der Konfiguration |
„out_crs“ | Ausgabekoordinatenreferenzsystemcode (CRS 3035 oder 3857 (nicht getestet)) | 3035 |
„empty_fields“ | Bei „true“ werden Nachrichten mit leeren Feldern entfernt | FALSCH |
„invalid_movement_fields“ | Bei „true“ werden Nachrichten mit ungültigen Werten in den Feldern COG,SOG,LON,LAT entfernt | FALSCH |
„ungültige_mmsi“ | Bei „true“ werden Nachrichten mit ungültigen mmsi-Werten entfernt (siehe unten). | FALSCH |
„false_mmsi“ | Liste der auszuschließenden MMSIs | in der Konfiguration |
„land_mask“ | Wenn dies der Fall ist, wird der Landmaskierungsprozess erzwungen | FALSCH |
„bounding_box“ | Liste der Koordinaten, die den Interessenbereich angeben. Die Koordinaten haben das folgende Format: [minLon, minLat, maxLon, maxLat] und müssen dem Ausgabeprojektionssystem folgen | optional in der Konfiguration (Beispiel: [5905000, 2185000, 5910000, 2190000]) |
„Downsampling“ | Wenn „true“, wird ein Downsampling-Prozess erzwungen | FALSCH |
„downsample_rate“ | Downsampling-Rate (in Millisekunden) | in der Konfiguration (Beispiel: 180000 ~ 3 Min.) |
„noise_filter“ | Bei „true“ wird der Rauschfilterungsprozess erzwungen, indem Meldungen eliminiert werden, die auf unwahrscheinliche Übergänge hinweisen | in der Konfiguration |
„grid_edge_lengths“ | Liste der Gitterzellenlängen für die Gittergenerierung. Jede Länge gibt die Größe der Kante in jeder Dimension an (in Metern). | in der Konfiguration (Beispiel: [500000,200000,10000]) |
„Zeitrahmen“ | Bei „true“ wird ein Filter bezüglich des Zeitstempels jeder Nachricht erzwungen. Wenn „true“, muss „start_time“/„end_time“ definiert werden (unter Verwendung der EPOCH-Darstellung – in Millisekunden). | FALSCH |
„Start-/Endzeit“ | Die Start-/Endzeiten für den Teimframe-Filter (in Millisekunden) | in der Konfiguration (Beispiel: 1647592893000) |
„min_positions“ | Anzahl der AIS-Mindestmeldungen für die Datei, die in den Reinigungsprozess einbezogen werden sollen | 10 |
„max_threads“ | Maximale Anzahl von Threads während der Ausführung; nur für die Prozesse, die parallel arbeiten | 4 |
„density_method“ | Für Dichtekarten zu verwendende Methode „vessels_count“ (Standard) oder „time_at_cells“ | 'vessels_count' |
„density_vessel_types“ | Liste der Schiffstypen, die bei der Erstellung von Dichtekarten berücksichtigt werden müssen. Für jeden Schiffstyp wird eine Karte erstellt, die auf den im AIS bereitgestellten Typcodes basiert. Die Option „Alle“ umfasst alle Schiffe unabhängig von ihrem Typ. Zu den Optionen gehören: ['Alle', 'Fracht', 'Tanker', 'Baggerarbeiten', 'HSC', 'Angeln', 'Militärrecht', 'Passagier', 'Vergnügen', 'Segeln', 'Dienst', 'Schlepper ', 'Unbekannt', 'Andere'] | 'Alle' |
Das Verzeichnis („colors_files_path“) mit Farbdateien sollte eine TXT-Datei mit dem Namen „colors_{GEL}.txt“ enthalten, wobei GEL die Länge jeder Rasterkante in Metern ist (Beispiel: „colors_1000.txt“). Jede Datei sollte die Dichteschwellenwerte gefolgt von der entsprechenden Farbe enthalten, ausgedrückt als RGB und mit einem Opazitätsindikator (0-255).
Sie können Anforderungen aus Importen mit dem Befehl extrahieren: pipreqs --force
Sie können das Paket pip-licenses verwenden, um Abhängigkeitslizenzen zu überprüfen
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
ergibt:
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
Diese Arbeit wurde teilweise vom Europäischen Meeres- und Fischereifonds (EMFF) durch den Dienstleistungsvertrag Nr. CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940 finanziert
Dieses Werk ist unter einer Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License lizenziert.