В этом документе представлен краткий обзор процесса, а также данных и инструментов, необходимых для создания карт плотности с использованием «Набора инструментов 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. Обходной путь — установить GDAL через OSGeo4w (https://trac.osgeo.org/osgeo4w/) и определить соответствующие пути для использования вместо этого включенной версии Python. Кроме того, вам необходимо включить каталог bin папки установки osgeo в переменную среды 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 должны пройти через фильтры, указанные в файле конфигурации. Они могут включать в себя: проверку достоверности полей перемещения, достоверности идентификатора судна (MMSI), маски суши и других (см. раздел «Фильтры» ниже). Входные и выходные каталоги, а также применяемые фильтры определяются в данном файле конфигурации. Процесс очистки может осуществляться:
python -m mt.cleaning.data_cleaning config/config.json
Очистите набор данных (зеленый) для того же судна. Красные сообщения отфильтровываются.
На этапе создания карты плотности считываются очищенные файлы AIS и создаются карты плотности в соответствии с выбранным методом в файле конфигурации. Доступны два варианта: первый измеряет количество сосудов в каждой ячейке, а второй суммирует время, проведенное в каждой ячейке всех судов, пересекающих ее.
python -m mt.density.export_density_maps config/config.json
Боковая сетка шириной 1 км, используемая для расчета карт плотности. Зачищены позиции трех судов
Процесс растеризации.
Результирующая карта метода time_at_cells в формате tiff с географической привязкой и цветовой картой, как указано в конфигурации.
Фильтры, предоставляемые набором инструментов Marinetraffic AIS, включают:
Приведенный файл конфигурации определяет, какой из вышеуказанных фильтров будет применен.
Файл конфигурации набора инструментов Marinetraffic AIS представляет собой файл JSON, который состоит из параметров, которые управляют, среди прочего, путями ввода и вывода, регулируют чувствительность процесса очистки данных и управляют другими аспектами процесса создания карты.
Параметр | Описание | Значения по умолчанию |
---|---|---|
"путь_файла_геометрии" | Путь к используемому файлу геометрии | в конфигурации |
"grids_path" | Путь сохранения сетки | в конфигурации |
"ais_path" | Путь к каталогу объединенных сообщений AIS | в конфигурации |
"ais_cleaned_path" | Путь к очищенному каталогу сообщений AIS | в конфигурации |
"ais_decoded_path" | Путь к каталогу объединенных сообщений AIS | в конфигурации |
"density_path" | Путь к каталогу файлов результирующей плотности | в конфигурации |
"colors_files_path" | Путь к каталогу цветных файлов файла плотности (TIFF) | в конфигурации |
"ais_stats_path" | Путь к каталогу статистики | в конфигурации |
"out_crs" | Код выходной системы координат (CRS 3035 или 3857 (не проверялось)) | 3035 |
"пустые_поля" | Если true, удаляются сообщения с пустыми полями. | ЛОЖЬ |
"invalid_movement_fields" | Если true, удаляются сообщения с недопустимыми значениями в полях COG,SOG,LON,LAT. | ЛОЖЬ |
"инвалид_ммси" | Если true, удаляются сообщения с неверными значениями ммси (см. ниже). | ЛОЖЬ |
"false_mmsi" | Список MMSI, которые следует исключить | в конфигурации |
"land_mask" | Если это правда, это обеспечивает процесс маскировки земли. | ЛОЖЬ |
"ограничивающая_коробка" | Список координат, обозначающих интересующую область. Координаты имеют формат: [minLon, minLat, maxLon, maxLat] и должны соответствовать выходной системе проекции. | необязательно в конфигурации (пример: [5905000, 2185000, 5910000, 2190000]) |
"понижающая дискретизация" | Если это правда, это обеспечивает процесс понижения разрешения. | ЛОЖЬ |
"downsample_rate" | Скорость понижения частоты дискретизации (в миллисекундах) | в конфигурации (пример: 180000 ~ 3 минуты) |
"шум_фильтр" | Если это правда, он усиливает процесс фильтрации шума, устраняя сообщения, указывающие на невероятные переходы. | в конфигурации |
"grid_edge_lengths" | Список длин ячеек сетки для генерации сетки. Каждая длина указывает размер края по каждому измерению (в метрах). | в конфиге (пример: [500000,200000,10000]) |
"временные рамки" | Если это правда, применяется фильтр в отношении временной метки каждого сообщения. Если это правда, то «start_time»/«end_time» должно быть определено (используя представление EPOCH — в миллисекундах). | ЛОЖЬ |
"время начала/окончания" | Время начала/окончания фильтра teimframe (в миллисекундах) | в конфиге (пример: 1647592893000) |
"мин_позиции" | Минимальное количество сообщений AIS для файла, который будет включен в процесс очистки. | 10 |
"max_threads" | Максимальное количество потоков во время выполнения; только для процессов, которые работают параллельно | 4 |
"density_method" | Метод, используемый для карт плотности «vessels_count» (по умолчанию) или «time_at_cells». | 'число_сосудов' |
"density_vessel_types" | Список типов судов, которые следует учитывать при создании карт плотности. Для каждого типа судна будет создана одна карта на основе кодов типов, указанных в АИС. Опция «Все» включает все суда независимо от их типа. Варианты включают в себя: ['Все', 'Груз', 'Танкер', 'Дноуглубительные работы', 'HSC', 'Рыбалка', 'Военное_право', 'Пассажирский', 'Удовольствие', 'Парусный спорт', 'Сервис', 'Буксир'. ', 'Неизвестно', 'Другое'] | 'Все' |
Каталог («colors_files_path») с файлами цветов должен включать файл TXT с именем «colors_{GEL}.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.