SkyProfile
SkyProfile é um aplicativo desktop PyQt5 para consultar o histórico global do ADSBexchange para uma ou múltiplas aeronaves, detectar voos com múltiplas pernas e exportar KML/CSV/JSON/Excel com análises ricas (aeroportos, rotas, buckets de tempo, indicativos, metadados FAA).
Principais Funcionalidades
- Consulta por intervalo de datas pelo hex ICAO; consulta opcional por cauda/matrícula via banco de dados básico de aeronaves do ADSBx.
- Detecção robusta de pernas (solo → ar → solo) com bandeiras ar/solo, heurísticas de altitude/velocidade no solo, permanência em solo de 90s, tratamento de lacunas de 20 minutos e histórico de indicativos ao vivo.
- Exportações (alternar por tipo): Pontos KML, Rotas KML 2D, Rotas KML 3D, Mapa de Calor de Aeroportos KML (pontos brancos dimensionados pela atividade), CSV, JSON, Resumo Excel.
- Modo em lote com opção Consolidar relatórios: mescla todas as aeronaves em um único conjunto de exportações offline (CSV/JSON/KML/Excel). Arquivos individuais são suprimidos ao consolidar.
- Correspondência de aeroportos (mais próximo dentro de 250 km; IDs sintéticos quando nenhum) reutilizada em KML e Excel.
- Consulta ao registro FAA para aeronaves com número N (banco de dados local em
resources/faa_registry).
- Progresso da GUI com status por fase; controles Executar/Parar; ícone do aplicativo aplicado à janela/barra de tarefas.
- Menu de Configurações com "Verificar Atualizações" (verificação de tag do GitHub) e "Sobre" (versão/informações + atribuições de dados).
Modo em Lote
- Entrada: CSV com coluna
icao_hex (ou hex/icao) e/ou tail/registration. Cada linha é um alvo de aeronave.
- Comportamento:
- Executa todas as aeronaves listadas no intervalo de datas escolhido.
- Grava saídas por aeronave em
output/<HEX>_<TAIL>/ (apenas hex se cauda ausente).
- Opcionalmente Consolidar relatórios: quando ativado, suprime arquivos individuais e produz um único conjunto mesclado:
consolidated_<N>ACFT_<inicio>_<fim>.csv/.json (todos os hits/payloads JSON)
- KMLs consolidados (pontos, rotas, rotas 3D, mapa de calor de aeroportos) mesclados inline para visualização offline
- Resumo Excel consolidado com as mesmas abas/gráficos de uma execução normal, combinando todos os voos
- Cache: downloads do ADSBx ainda armazenam em cache por aeronave/dia em
output/cache/<hex>/YYYY-MM-DD.json.
Instalar / Executar
A partir do código-fonte
pip install PyQt5 requests simplekml openpyxl lxml numpy
python skyprofile.py
EXE empacotado (Windows)
- Use
dist/SkyProfile.exe com dist/resources/ ao lado (contém dados FAA/aeroporto/acdb).
Exportações e Normalização
- Detecção de pernas: bandeiras solo/ar, verificações de altitude/GS, permanência em solo de 90s, pouso por lacuna de 20 minutos, média de clusters em solo, histórico de indicativos por perna.
- Pontos KML: Um marcador por chegada de perna com horários, duração, indicativo, meta.
- Rotas KML 2D/3D: Trilhas completas das pernas (não linhas retas); rotas 3D incluem altitude.
- Mapa de Calor de Aeroportos KML: Um marcador por aeroporto visitado, dimensionado pelo total de visitas (chegadas+partidas) e colorido de branco para uma sobreposição limpa; atributos incluem datas de chegada/partida, hex, cauda.
- CSV: Uma linha por hit; colunas incluem hex e cauda mais
ac_data achatado (sem coluna ac_data_json bruta).
- JSON: Payload encapsulado por aeronave:
{ hex, tail, meta, data: [blobs trace_full brutos] }; JSON consolidado é uma lista desses payloads.
- Resumo Excel (pasta de trabalho completa com múltiplas abas):
Summary: Metadados (hex, registro, tipo, proprietário, modelo, bandeiras, intervalo de datas); detalhes da FAA quando disponíveis.
Flights: Uma linha por perna detectada; colunas para hex, cauda, id do segmento, timestamps UTC de partida/chegada, duração, IDs e nomes dos aeroportos de partida/chegada, lat/lon, buckets de dia-da-semana/dia-do-mês/hora, indicativo e histórico.
Airports: Principais aeroportos por visitas (chegadas + partidas) com IDs, ICAO/IATA, nome, cidade/país, contagens, lat/lon; inclui gráfico de barras "Aeroportos por Número de Visitas".
Routes: Principais rotas com rótulos legíveis de aeroportos e contagens; inclui gráfico de barras "Contagem de Rotas Percorridas".
DayOfWeek: Contagens por dia-da-semana com gráfico de barras.
DayOfMonth: Contagens por dia-do-mês com gráfico de barras.
Hours: Decolagens vs pousos por hora UTC com gráfico de barras de série dupla (Decolagens azul, Pousos laranja).
Countries: Visitas por país com gráfico de barras.
Callsigns: Contagens de uso de indicativos.
- Gráficos usam fundos brancos, eixos Y inteiros com grade sensata (a cada 10 ou 100 para contagens grandes) e rótulos de valor nas barras.
Recursos e Cache
- Dados compartilhados residem em
resources/ (acdb_cache, airport_db, faa_registry). Builds do PyInstaller o incluem via --add-data e copiam ao lado do EXE.
- Cache de traces do ADSBx fica em
output/cache/<hex>/YYYY-MM-DD.json.
- Exportações por aeronave são agrupadas em
output/<HEX>_<TAIL>/ (ou apenas hex se sem cauda). Exportações em lote consolidadas usam consolidated_<N>ACFT_<intervalo de datas>* na pasta principal output/.
Notas e Limitações
- Lacunas de cobertura ainda podem perder horários exatos de solo; a correspondência de aeroporto mais próximo pode recorrer a IDs sintéticos
LL_lat_lon.
- Fotos estão desabilitadas no Excel para evitar desenhos corrompidos.
- EXE onefile é grande porque empacota Python + Qt + dependências; use one-dir se precisar de um EXE menor.
Licença
- Licença Apache 2.0 (veja
LICENSE). Dados/APIs externos permanecem sob seus próprios termos.