10 KiB
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
- Instalação
- Estrutura do Projeto
- Módulos e Uso
- Banco de Dados
- Categorias ICAO
- Solução de Problemas
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-managerbaixa 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 | 31–91 | 16–48 | Voo por instrumentos |
| MVFR | 91–300 | 48–800 | 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-managertentará 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.pyao menos uma vez para criar e popular o bancodados/met.db.
Dados ausentes para um aeródromo:
- Verifique se o código ICAO está correto e disponível no portal ICEA: https://pesquisa.icea.decea.mil.br/superficie_list/
- Nem todos os aeródromos possuem histórico completo desde 1947.
Fonte dos Dados
- Meteorologia: Portal ICEA/DECEA — https://pesquisa.icea.decea.mil.br/superficie_list/
- Transporte Aéreo: ANAC — Relatório Anual 2024 e séries históricas de demanda e oferta
Projeto de pesquisa acadêmica — IED / ITA