Este documento fornece uma breve visão geral do processo, bem como dos dados e ferramentas necessários, para gerar mapas de densidade usando a "caixa de ferramentas Marinetraffic AIS". Os dados usados nesta visão geral são dados históricos decodificados do Sistema de Identificação Automática (AIS).
Recomendamos fortemente a execução deste módulo em ambiente virtual para garantir a compatibilidade dos pacotes.
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;
Instalação de pacotes no ambiente virtual
pip install -e .
Para desativar o ambiente virtual utilize:
deactivate
O pacote também pode ser instalado diretamente de nosso repositório gitub com o seguinte comando, no entanto, são necessárias alterações adicionais nos caminhos para executar os exemplos a seguir.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
Verifique também a seção de configuração abaixo
Nota: é recomendado definir a seguinte variável de sistema para acelerar as junções espaciais do pygeos:
export USE_PYGEOS=1
Esta caixa de ferramentas depende da biblioteca GDAL, principalmente para processos de rasterização, portanto, instalá-la no sistema operacional Windows exigirá uma instalação funcional do GDAL em seu sistema.
Para usar este módulo no Windows, é necessário ter uma instalação GDAL funcional antes de instalar esta caixa de ferramentas. Uma solução alternativa é instalar o GDAL por meio do OSGeo4w (https://trac.osgeo.org/osgeo4w/) e definir os caminhos apropriados para usar a versão python incluída. Além disso, você deve incluir o diretório bin da pasta de instalação do osgeo em sua variável ambiental PATH.
Este pacote inclui
Um arquivo configuration.json que determina:
Implementações para:
Cada etapa da nossa abordagem requer alguns parâmetros que incluem: caminhos para arquivos de entrada e diretórios de saída, sinalizadores relativos à operação a ser executada, limites adicionais necessários durante a execução (por exemplo, taxa de redução da resolução). Todas essas informações devem ser incluídas em um arquivo de configuração, que deve ser passado como argumento durante a execução (por exemplo, config/config.json).
Para o carregamento das mensagens AIS devem ser incluídos arquivos compactados com valores separados por vírgula (formato .csv.bz2). Esses arquivos devem ter as mensagens ordenadas por carimbos de data/hora. Caso existam vários arquivos de entrada, eles devem ser ordenados em ordem alfabética para que os arquivos com mensagens anteriores venham primeiro.
Mesclar dados decodificados: As mensagens AIS (estáticas e posicionais) seriam mescladas de modo que cada mensagem posicional incluísse informações adicionais provenientes das mensagens AIS estáticas correspondentes. O processo de fusão pode ser executado por:
python -m mt.cleaning.ais_merge config/config.json
Caso a mensagem seja um relatório estático:
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
Caso a mensagem seja um relatório posicional:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
Conjunto de dados de amostra original para um único navio.
Limpar dados mesclados: após mesclar todas as mensagens AIS deverão passar pelos filtros indicados no arquivo de configuração. Estes podem incluir: verificação da validade dos campos de movimento, validade do ID da embarcação (MMSI), máscara de terra e outros (ver seção Filtros abaixo). Os diretórios de entrada e saída e os filtros a serem aplicados são definidos no arquivo de configuração fornecido. O processo de limpeza pode ser executado por:
python -m mt.cleaning.data_cleaning config/config.json
Conjunto de dados limpo (verde) para a mesma embarcação. As mensagens vermelhas são filtradas.
A etapa de geração do mapa de densidade lê os arquivos ais limpos e gera mapas de densidade em relação ao método selecionado no arquivo de configuração. Existem duas opções disponíveis, a primeira mede o número de navios dentro de cada célula, enquanto a segunda agrega o tempo gasto dentro de cada célula de todos os navios que a atravessam.
python -m mt.density.export_density_maps config/config.json
Grade lateral de 1 km usada para calcular mapas de densidade. Posições limpas de três embarcações
O processo de rasterização.
O mapa resultante do método time_at_cells em formato tiff georreferenciado e mapa de cores conforme fornecido na configuração.
Os filtros fornecidos pela caixa de ferramentas Marinetraffic AIS incluem:
O arquivo de configuração fornecido determina quais dos filtros acima serão aplicados.
O arquivo de configuração da caixa de ferramentas Marinetraffic AIS é um arquivo json que consiste nos parâmetros que controlam, entre outros, os caminhos de entrada e saída, ajustam a sensibilidade do processo de limpeza de dados e controlam outros aspectos do processo de geração de mapas.
Parâmetro | Descrição | Valores padrão |
---|---|---|
"geometry_file_path" | Caminho para arquivo de geometria usado | na configuração |
"grids_path" | Caminho para salvar a grade | na configuração |
"ais_caminho" | Caminho do diretório de mensagens AIS mescladas | na configuração |
"ais_cleaned_path" | Caminho do diretório de mensagens AIS limpo | na configuração |
"ais_decoded_path" | Caminho do diretório de mensagens AIS mescladas | na configuração |
"densidade_caminho" | Caminho do diretório de arquivos de densidade resultante | na configuração |
"colors_files_path" | Diretório de arquivos de cores do arquivo de densidade (TIFF) | na configuração |
"ais_stats_path" | Caminho para o diretório de estatísticas | na configuração |
"out_crs" | Código do sistema de referência de coordenadas de saída (CRS 3035 ou 3857 (não testado)) | 3035 |
"campos_vazios" | Se verdadeiro, remove mensagens com campos vazios | falso |
"campos_de_movimento_inválidos" | Se verdadeiro, remove mensagens com valores inválidos nos campos COG,SOG,LON,LAT | falso |
"inválido_mmsi" | Se verdadeiro, remove mensagens com valores mmsi inválidos (veja abaixo) | falso |
"falso_mmsi" | Lista de MMSIs a serem excluídos | na configuração |
"máscara_de_terra" | Se for verdade, impõe o processo de mascaramento de terras | falso |
"caixa delimitadora" | Lista de coordenadas que indicam a área de interesse. As coordenadas estão no formato: [minLon, minLat, maxLon, maxLat], e devem seguir o sistema de projeção de saída | opcional na configuração (exemplo: [5905000, 2185000, 5910000, 2190000]) |
"reduzir a resolução" | Se for verdade, impõe o processo de redução da resolução | falso |
"downsample_rate" | Taxa de redução da resolução (em milissegundos) | na configuração (exemplo: 180000 ~ 3 minutos) |
"filtro_de_ruído" | Se for verdade, reforça o processo de filtragem de ruído, eliminando mensagens que indicam transições improváveis | na configuração |
"grade_edge_lengths" | Lista de comprimentos de células da grade para geração da grade. Cada comprimento indica o tamanho da aresta em cada dimensão (em metros). | na configuração (exemplo: [500000,200000,10000]) |
"prazo" | Se for verdade, impõe um filtro em relação ao carimbo de data/hora de cada mensagem. Se verdadeiro, o "start_time"/"end_time" deve ser definido (usando a representação EPOCH - em milissegundos) | falso |
"horário de início/término" | Os horários de início/término do filtro teimframe (em milissegundos) | na configuração (exemplo: 1647592893000) |
"min_posições" | Número mínimo de mensagens AIS para que o arquivo seja incluído no processo de limpeza | 10 |
"max_threads" | Número máximo de threads durante a execução; apenas para os processos que funcionam em paralelo | 4 |
"método_densidade" | Método a ser usado para mapas de densidade 'vessels_count'(padrão) ou 'time_at_cells' | 'contagem_de navios' |
"densidade_vessel_types" | Lista de tipos de embarcações a serem considerados na criação de mapas de densidade. Será gerado um mapa para cada tipo de embarcação, com base nos códigos de tipo fornecidos no AIS. A opção 'Todos' inclui todas as embarcações, independentemente do seu tipo. As opções incluem: ['Todos', 'Carga', 'Tanque', 'Dragagem', 'HSC', 'Pesca', 'Lei_Militar', 'Passageiro', 'Prazer', 'Vela', 'Serviço', 'Rebocador ', 'Desconhecido', 'Outro'] | 'Todos' |
O diretório ('colors_files_path') com arquivos de cores deve incluir um arquivo TXT, denominado 'colors_{GEL}.txt' sendo que GEL é o comprimento de cada borda da grade em metros (exemplo: 'colors_1000.txt'). Cada arquivo deve incluir os limites de densidade seguidos da cor apropriada, expressa como RGB e com um indicador de opacidade (0-255).
Você pode extrair requisitos de importações usando o comando: pipreqs --force
Você pode usar o pacote pip-licenses para verificar licenças de dependências
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
resulta em:
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 trabalho foi parcialmente financiado pelo Fundo Europeu dos Assuntos Marítimos e das Pescas (FEAMP) através do contrato de serviços n.º CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940
Esta obra está licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-Compartilhamento pela mesma Licença 4.0 Internacional.