Dicionário de dados¶
Este contrato corresponde ao coletor, ao schema Arrow em src/air_traffic_beam/schemas/silver.py e às transformações atuais.
Bronze: um envelope por resposta¶
| Campo | Conteúdo |
|---|---|
_metadata.source |
opensky_network |
_metadata.endpoint |
/states/all |
_metadata.ingested_at |
String ISO 8601 no fuso America/Sao_Paulo |
_metadata.execution_id |
UUID comum às respostas da mesma coleta |
_metadata.collection_number |
Número sequencial da resposta, começando em 1 |
_metadata.schema_version |
Versão do envelope, atualmente 1 |
_metadata.bounding_box |
Objeto com lat_min, lon_min, lat_max, lon_max |
payload.time |
Instante da resposta em epoch Unix (segundos) |
payload.states |
Lista de vetores posicionais retornados pela API |
O cliente converte states: null (ou ausente) em [] antes da gravação. Os vetores são preservados, mas a Bronze não é uma cópia byte a byte da resposta HTTP. Status HTTP e tempo da requisição não são campos do envelope.
Silver: uma observação por aeronave¶
| Campo | Tipo Arrow | Significado |
|---|---|---|
icao24 |
string | Identificador da aeronave |
callsign |
string | Indicativo com espaços nas extremidades removidos; vazio vira nulo |
origin_country |
string | País informado pela fonte |
time_position |
int64 | Instante da posição, epoch em segundos |
last_contact |
int64 | Instante do último contato, epoch em segundos |
last_contact_at |
timestamp[us, America/Sao_Paulo] | Último contato convertido para data/hora com fuso |
longitude, latitude |
float64 | Coordenadas em graus |
barometric_altitude_m, geometric_altitude_m |
float64 | Altitudes em metros |
on_ground |
bool | Indicador de aeronave no solo |
velocity_mps |
float64 | Velocidade em metros por segundo |
velocity_kmh |
float64 | velocity_mps × 3.6 |
true_track_degrees |
float64 | Direção de deslocamento em graus |
vertical_rate_mps |
float64 | Razão vertical em metros por segundo |
squawk |
string | Código do transponder |
special_purpose_indicator |
bool | Indicador especial informado pela fonte |
position_source, aircraft_category |
int64 | Códigos de origem da posição e categoria |
source_time |
int64 | time_position quando disponível; caso contrário, payload.time |
ingested_at |
string | Instante de ingestão copiado dos metadados Bronze |
execution_id |
string | Identificador copiado dos metadados Bronze |
Identificador e coordenadas são validados; medições opcionais podem ser nulas. As altitudes permanecem em metros. Os epochs representam instantes absolutos; o fuso é aplicado em last_contact_at e na apresentação.
Gold: latest¶
Mantém os campos Silver do registro com maior last_contact para cada icao24 entre as entradas processadas. As datas são serializadas como strings em JSONL. Em empate, a seleção não define um critério adicional determinístico.
Gold: traffic¶
| Campo | Significado |
|---|---|
aircraft_observations |
Total de registros Silver de entrada |
unique_aircraft |
Quantidade de icao24 distintos |
airborne_aircraft |
Observações com on_ground=false, incluindo repetições de uma aeronave |
on_ground_aircraft |
Observações com on_ground=true |
average_velocity_kmh |
Média das velocidades não nulas, em km/h |
average_geometric_altitude_m |
Média das altitudes geométricas não nulas, em metros |
latest_contact |
Maior last_contact da entrada |
O resumo usa todas as observações, não apenas a visão latest. Por exemplo, três observações em voo da mesma aeronave resultam em aircraft_observations=3, unique_aircraft=1 e airborne_aircraft=3.
Rejeitados¶
Os JSONL de rejeição contêm record e rejection_reason. Para JSON inválido, contêm raw_record, rejection_reason=invalid_json e error_message. Não há um conjunto fixo de campos de timestamp ou identificador acrescentado a todas as rejeições.
Motivos incluem invalid_envelope, invalid_states, invalid_state_vector, state_vector_too_short, missing_aircraft_identifier, missing_coordinates, invalid_coordinates_type, latitude_out_of_range e longitude_out_of_range.
O contrato de métricas está em Logs e relatórios.