Files
dataset/softwares/test/meteorologia_aeroportos
kolmeasi 77ec04cc43 V1.0
2026-05-31 18:57:03 -03:00
..
2026-05-31 18:57:03 -03:00
2026-05-31 18:57:03 -03:00
2026-05-31 10:32:59 -03:00
2026-05-31 10:32:59 -03:00
2026-05-31 18:57:03 -03:00
2026-05-31 10:32:59 -03:00
2026-05-31 10:32:59 -03:00
2026-05-31 18:57:03 -03:00
2026-05-31 10:32:59 -03:00
2026-05-31 18:57:03 -03:00

Dataset IED — Meteorologia e Transporte Aéreo Brasileiro

Plataforma de coleta, processamento e visualização de dados meteorológicos e de transporte aéreo brasileiro, com foco em aeroportos operados pelo sistema DECEA/ICEA.


Sumário


Pré-requisitos

Requisito Versão mínima Observação
Python 3.10+ python.org
Google Chrome Qualquer versão recente Necessário para o Selenium (scraper)
Git Qualquer Para clonar o repositório

O webdriver-manager baixa automaticamente o ChromeDriver compatível com a versão do Chrome instalada. Não é necessário instalar o ChromeDriver manualmente.


Instalação

1. Clonar o repositório

git clone ssh://git@git.ppgao.ita.br:2222/reboucassr/dataset.git
cd dataset

Caso não tenha acesso SSH configurado, solicite ao administrador a chave de acesso ou use HTTPS se disponível.

2. Criar e ativar o ambiente virtual

Navegue até o diretório do módulo de meteorologia:

cd softwares/test

Windows (PowerShell):

python -m venv .venv            # Instala o ambiente virtual no Windows
.\.venv\Scripts\Activate.ps1    # Ativa o ambiente virtual

Linux / macOS:

python3 -m venv .venv
source .venv/bin/activate # Para Linux e macOS

No Windows, se receber erro de política de execução, execute antes: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

3. Instalar dependências

Com o ambiente virtual ativado:

pip install -r requirements.txt

Principais pacotes instalados:

Pacote Finalidade
selenium Automação do navegador para scraping
webdriver-manager Gerencia o ChromeDriver automaticamente
beautifulsoup4 + lxml Parsing de HTML
pandas Processamento e análise de dados
streamlit Dashboard interativo
plotly Gráficos interativos

4. Executar o projeto

Com o ambiente virtual ativado:

cd meteorologia_aeroportos
streamlit run dashboard.py

O dashboard será executado na porta 8501.

Estrutura do Projeto

dataset/
├── softwares/
│   └── test/
│       └── meteorologia_aeroportos/
│           ├── dados/                  # Banco SQLite + CSVs por aeródromo
│           │   ├── met.db              # Banco de dados principal
│           │   ├── SBGR/              # CSVs do aeroporto de Guarulhos
│           │   └── SBAN/              # CSVs de outros aeródromos
│           ├── scraper_meteorologia.py # Coleta dados do ICEA/DECEA
│           ├── pipeline.py            # Orquestrador completo
│           ├── concat_meteorologia.py # Mescla arquivos CSV
│           ├── db.py                  # Lógica do banco SQLite
│           ├── dashboard.py           # Dashboard Streamlit
│           ├── _diag_outliers.py      # Diagnóstico de qualidade
│           └── requirements.txt
├── tabelas/
│   ├── raw/                           # Dados brutos ANAC
│   ├── preproc/                       # Dados intermediários
│   └── proc/                          # Dados processados finais
└── textos/
    ├── artigos/                        # Artigos acadêmicos
    ├── livros/
    └── relatorios/                     # Relatórios ANAC e setor

Módulos e Uso

Todos os comandos abaixo devem ser executados a partir do diretório softwares/test/meteorologia_aeroportos/, com o ambiente virtual ativado.

1. Scraper de Meteorologia

Coleta dados de superfície horários do portal ICEA/DECEA para um dado aeródromo.

Coletar todos os anos disponíveis:

python scraper_meteorologia.py --aerodrome SBGR --all-years

Coletar um intervalo de anos específico:

python scraper_meteorologia.py --aerodrome SBGR --start-year 2020 --end-year 2025

Executar com navegador visível (sem modo headless — útil para depuração):

python scraper_meteorologia.py --aerodrome SBGR --start-year 2023 --end-year 2023 --no-headless

Parâmetros disponíveis:

Parâmetro Tipo Descrição
--aerodrome string Código ICAO do aeródromo (ex: SBGR, SBSP, SBAN)
--all-years flag Coleta desde o início do histórico disponível
--start-year int Ano inicial do intervalo
--end-year int Ano final do intervalo
--no-headless flag Abre o Chrome de forma visível

Os arquivos CSV são salvos em dados/{CÓDIGO_ICAO}/.


2. Pipeline Completo

Orquestra todo o fluxo: verifica cobertura existente, executa scraping incremental, valida dados com limites físicos, calcula variáveis analíticas e persiste no banco SQLite.

Processar todos os anos para um aeródromo:

python pipeline.py --aerodrome SBGR --all-years

Processar intervalo específico:

python pipeline.py --aerodrome SBGR --start-year 2020 --end-year 2025

Manter arquivos temporários após o processamento:

python pipeline.py --aerodrome SBGR --all-years --no-cleanup

Parâmetros disponíveis:

Parâmetro Tipo Descrição
--aerodrome string Código ICAO do aeródromo
--all-years flag Processa todo o histórico disponível
--start-year int Ano inicial
--end-year int Ano final
--no-cleanup flag Mantém CSVs intermediários após upsert

Recomendado para uso normal. O pipeline é idempotente: pode ser executado múltiplas vezes sem duplicar dados.


3. Concatenação de CSVs

Mescla os arquivos CSV trimestrais baixados pelo scraper em uma tabela única por aeródromo.

python concat_meteorologia.py --dados-dir dados --validate --cleanup

Parâmetros:

Parâmetro Tipo Descrição
--dados-dir string Diretório raiz dos CSVs (padrão: dados)
--validate flag Aplica validação por limites físicos
--cleanup flag Remove arquivos temporários após concatenação

Este passo é executado automaticamente pelo pipeline.py. Use-o de forma isolada apenas se precisar reprocessar os CSVs sem coletar novos dados.


4. Dashboard Interativo

Interface web para análise e visualização das séries temporais meteorológicas.

streamlit run dashboard.py

Acesse no navegador: http://localhost:8501

Funcionalidades do dashboard:

  • Seleção de aeródromo e variável meteorológica
  • Reamostagem temporal: Horária, Diária, Semanal, Mensal
  • Gráficos de série temporal interativos (Plotly)
  • Rosa dos ventos
  • Análise de teto e visibilidade com classificação ICAO
  • Distribuição estatística por variável

5. Diagnóstico de Outliers

Analisa a qualidade dos dados no banco, exibindo estatísticas sobre valores tratados por limites físicos.

python _diag_outliers.py

Exibe contagens e proporções de outliers registrados na tabela outlier_log por variável meteorológica.


Banco de Dados

O banco SQLite (dados/met.db) possui três tabelas:

Tabela Descrição
observations Série temporal horária com 10 variáveis meteorológicas
outlier_log Registro de valores anômalos tratados (auditoria)
aerodromes Catálogo de aeródromos disponíveis

Variáveis na tabela observations:

Coluna Descrição Unidade
T Temperatura °C
Td Ponto de orvalho °C
UR Umidade relativa %
QNH Pressão atmosférica hPa
WS Velocidade do vento kt
WG Rajada de vento kt
WD Direção do vento graus
VIS Visibilidade dam
TETO Teto de nuvens dam
PREC Precipitação acumulada mm

Categorias ICAO

O dashboard classifica as condições meteorológicas segundo os critérios ICAO:

Categoria Teto (dam) Visibilidade (dam) Condição
LIFR < 31 < 16 IFR Severo
IFR 3191 1648 Voo por instrumentos
MVFR 91300 48800 VFR Marginal
VMC > 300 > 800 Condições visuais

Solução de Problemas

Erro de ChromeDriver / Selenium:

  • Verifique se o Google Chrome está instalado na máquina.
  • O webdriver-manager tentará baixar o ChromeDriver automaticamente; verifique se há acesso à internet.
  • Em ambientes corporativos com proxy, pode ser necessário configurar HTTP_PROXY / HTTPS_PROXY.

Erro ao ativar o ambiente virtual no Windows:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Dashboard não abre / porta ocupada:

streamlit run dashboard.py --server.port 8502

Banco de dados não encontrado:

  • Execute o pipeline.py ao menos uma vez para criar e popular o banco dados/met.db.

Dados ausentes para um aeródromo:


Fonte dos Dados


Projeto de pesquisa acadêmica — IED / ITA