Este documento proporciona una breve descripción general del proceso, así como de los datos y herramientas necesarios, para generar mapas de densidad utilizando la "caja de herramientas Marinetraffic AIS". Los datos utilizados en esta descripción general son datos históricos decodificados del Sistema de Identificación Automática (AIS).
Recomendamos encarecidamente ejecutar este módulo en un entorno virtual para garantizar la compatibilidad de los paquetes.
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;
Instalación de paquetes en el entorno virtual.
pip install -e .
Para desactivar el entorno virtual utilice:
deactivate
El paquete también se puede instalar directamente desde nuestro repositorio de Gitub con el siguiente comando; sin embargo, se requieren cambios adicionales en las rutas para ejecutar los siguientes ejemplos.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
Consulte también la sección de configuración a continuación.
Nota: se recomienda configurar la siguiente variable del sistema para acelerar las uniones espaciales de Pygeos:
export USE_PYGEOS=1
Esta caja de herramientas se basa en la biblioteca GDAL, principalmente para procesos de rasterización, por lo que instalarla en el sistema operativo Windows requerirá una instalación funcional de GDAL en todo su sistema.
Para utilizar este módulo en Windows, es necesario tener una instalación GDAL funcional antes de instalar esta caja de herramientas. Una solución alternativa es instalar GDAL a través de OSGeo4w (https://trac.osgeo.org/osgeo4w/) y definir las rutas apropiadas para usar la versión de Python incluida. Además, debe incluir el directorio bin de la carpeta de instalación de osgeo en su variable ambiental PATH.
Este paquete incluye
Un archivo Configuration.json que determina:
Implementaciones para:
Cada paso de nuestro enfoque requiere algunos parámetros que incluyen: rutas para archivos de entrada y directorios de salida, indicadores relacionados con la operación a ejecutar, umbrales adicionales requeridos durante la ejecución (por ejemplo, tasa de muestreo de reducción). Toda esa información debe incluirse dentro de un archivo de configuración, que debe pasarse como argumento durante la ejecución (por ejemplo, config/config.json).
Para la carga de los mensajes AIS se deben incluir archivos comprimidos de valores separados por comas (formato .csv.bz2). Estos archivos deben tener los mensajes ordenados por sus marcas de tiempo. En caso de que haya varios archivos de entrada, deben ordenarse alfabéticamente para que los archivos con mensajes anteriores aparezcan primero.
Fusionar datos decodificados: los mensajes AIS (estáticos y posicionales) se fusionarían de modo que cada mensaje posicional incluya información adicional procedente de los mensajes AIS estáticos correspondientes. El proceso de fusión se puede ejecutar mediante:
python -m mt.cleaning.ais_merge config/config.json
En caso de que el mensaje sea estático informe:
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
En caso de que el mensaje sea un informe posicional:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
Conjunto de datos de muestra original para un solo buque.
Limpiar datos combinados: después de fusionar todos los mensajes AIS deben pasar por los filtros indicados en el archivo de configuración. Estos pueden incluir: verificar la validez de los campos de movimiento, la validez de la identificación del barco (MMSI), la máscara terrestre y otros (consulte la sección Filtros a continuación). Los directorios de entrada y salida y los filtros que se aplicarán se definen en el archivo de configuración proporcionado. El proceso de limpieza se puede ejecutar mediante:
python -m mt.cleaning.data_cleaning config/config.json
Conjunto de datos limpio (verde) para el mismo barco. Los mensajes rojos se filtran.
El paso de generación de mapas de densidad lee los archivos ais limpios y genera mapas de densidad con respecto al método seleccionado en el archivo de configuración. Hay dos opciones disponibles, la primera mide el número de buques dentro de cada celda mientras que la segunda agrega el tiempo transcurrido dentro de cada celda de todos los buques que la cruzan.
python -m mt.density.export_density_maps config/config.json
Cuadrícula lateral de 1 km utilizada para calcular mapas de densidad. Posiciones limpiadas de tres buques.
El proceso de rasterización.
El mapa resultante del método time_at_cells en formato tiff georreferenciado y mapa de colores como se proporciona en la configuración.
Los filtros proporcionados por la caja de herramientas AIS de Marinetraffic incluyen:
El archivo de configuración proporcionado determina cuál de los filtros anteriores se aplicaría.
El archivo de configuración de la caja de herramientas Marinetraffic AIS es un archivo json que consta de los parámetros que controlan, entre otros, las rutas de entrada y salida, ajustan la sensibilidad del proceso de limpieza de datos y controlan otros aspectos del proceso de generación de mapas.
Parámetro | Descripción | Valores predeterminados |
---|---|---|
"ruta_archivo_geometría" | Ruta del archivo de geometría utilizado | en configuración |
"ruta_cuadrículas" | Ruta para guardar la cuadrícula | en configuración |
"ais_path" | Ruta del directorio de mensajes AIS fusionados | en configuración |
"ais_cleaned_path" | Ruta del directorio de mensajes AIS limpio | en configuración |
"ais_decoded_path" | Ruta del directorio de mensajes AIS fusionados | en configuración |
"ruta_densidad" | Ruta del directorio de archivos de densidad resultante | en configuración |
"ruta_archivos_colores" | Ruta del directorio de archivos de color del archivo de densidad (TIFF) | en configuración |
"ais_stats_path" | Ruta del directorio de estadísticas | en configuración |
"out_crs" | Código del sistema de referencia de coordenadas de salida (CRS 3035 o 3857 (no probado)) | 3035 |
"campos_vacíos" | Si es verdadero, elimina los mensajes con campos vacíos. | FALSO |
"campos_de_movimiento_inválidos" | Si es verdadero, elimina los mensajes con valores no válidos en los campos COG,SOG,LON,LAT | FALSO |
"mmsi_inválido" | Si es verdadero, elimina los mensajes con valores mmsi no válidos (ver más abajo) | FALSO |
"falso_mmsi" | Lista de MMSI que se excluirán | en configuración |
"máscara_tierra" | Si es cierto, impone el proceso de enmascaramiento de tierras. | FALSO |
"caja_limitante" | Listado de coordenadas que indican la zona de interés. Las coordenadas están en el formato: [minLon, minLat, maxLon, maxLat] y deben seguir el sistema de proyección de salida. | opcional en la configuración (ejemplo: [5905000, 2185000, 5910000, 2190000]) |
"reducir la muestra" | Si es verdadero, impone el proceso de reducción de resolución. | FALSO |
"tasa_de_muestra reducida" | Tasa de reducción de resolución (en milisegundos) | en configuración (ejemplo: 180000 ~ 3 minutos) |
"filtro_de_ruido" | Si es verdadero, aplica el proceso de filtrado de ruido eliminando mensajes que indican transiciones improbables. | en configuración |
"grid_edge_lengths" | Lista de longitudes de celdas de cuadrícula para la generación de cuadrícula. Cada longitud indica el tamaño del borde en cada dimensión (en metros). | en configuración (ejemplo: [500000,200000,10000]) |
"periodo de tiempo" | Si es verdadero, aplica un filtro con respecto a la marca de tiempo de cada mensaje. Si es verdadero, se debe definir la "hora_inicio"/"hora_final" (usando la representación EPOCH, en milisegundos) | FALSO |
"hora de inicio/finalización" | Los tiempos de inicio/finalización del filtro de cuadro de tiempo (en milisegundos) | en configuración (ejemplo: 1647592893000) |
"posiciones_min" | Número de mensajes AIS mínimos para que el archivo se incluya en el proceso de limpieza | 10 |
"max_threads" | Número máximo de subprocesos durante la ejecución; sólo para los procesos que funcionan en paralelo | 4 |
"método_densidad" | Método que se utilizará para los mapas de densidad 'vessels_count' (predeterminado) o 'time_at_cells' | 'recuento_de_buques' |
"tipos_de_vasos_densidad" | Lista de tipos de embarcaciones a considerar al crear mapas de densidad. Se generará un mapa para cada tipo de embarcación, según los códigos de tipo proporcionados en el AIS. La opción 'Todos' incluye todas las embarcaciones independientemente de su tipo. Las opciones incluyen: ['Todos', 'Carga', 'Cisterna', 'Dragado', 'HSC', 'Pesca', 'Derecho_militar', 'Pasajero', 'Placer', 'Navegación', 'Servicio', 'Remolcador ', 'Desconocido', 'Otro'] | 'Todo' |
El directorio ('colors_files_path') con archivos de color debe incluir un archivo TXT, llamado 'colors_{GEL}.txt' donde GEL es la longitud de cada borde de la cuadrícula en metros (ejemplo: 'colors_1000.txt'). Cada archivo debe incluir los umbrales de densidad seguidos del color apropiado, expresado como RGB y con un indicador de opacidad (0-255).
Puede extraer requisitos de las importaciones usando el comando: pipreqs --force
Puede utilizar el paquete pip-licenses para comprobar las licencias de dependencias
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
resultados en:
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
Este trabajo ha sido financiado parcialmente por el Fondo Europeo Marítimo y de Pesca (FEMP) a través del contrato de servicio nº CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940
Este trabajo está bajo una licencia Creative Commons Atribución-No Comercial-CompartirIgual 4.0 Internacional.