Observatório de interferência: nota de método
Versão kshana-observatory/adsb/v1, construída sobre kshana-interference-map/adsb/v2. Apenas consultivo: esta é uma descrição de como os relatos de posição publicados se mostravam em dias passados, não uma medição de qualquer receptor, uma previsão, uma confirmação de interferência nem uma atribuição de sua causa.
O que o observatório publica#
Um produto por dia UTC e por região, a partir de um único arquivo aberto de posições de aeronaves. Cada célula de uma grade fixa de latitude-longitude de 0,5 grau está em um de três estados:
| Estado | Significado |
|---|---|
degraded |
Uma parcela alta das aeronaves amostradas na célula relatou baixa precisão de navegação naquele dia, claramente acima do fundo daquele dia. |
not_degraded |
Houve aeronaves amostradas em número suficiente e a parcela não atingiu a regra. |
not_observed |
Os dados não permitiram um veredito. Isto não é "limpo". Cada célula publicada nessa situação traz um motivo de dados: insufficient_sample, no_day_background ou day_wide_effect. Uma célula sem nenhuma entrada foi vista por menos de 5 aeronaves distintas e é omitida. |
Nada mais é publicado: nenhuma causa, nenhum ator, nenhum registro por aeronave. Os motivos descrevem se os dados do dia eram suficientes, nunca por que a precisão estava baixa.
Três arquivos por dia (kshana interference-map daily):
observatory-adsb-<dataset>-<day>.geojson: as células, comschemakshana-observatory-day/1, o método e seus parâmetros de pré-registro, a licença e a atribuição, a regra de liberação e um aviso.observatory-adsb-<dataset>-<day>.png: as mesmas células como imagem (degraded, not degraded, not observed hachurado; células vazias não foram observadas). Blocos de texto no arquivo repetem o aviso e a licença.observatory-adsb-<dataset>-<day>.incidents.json:schemakshana-incident-report/1. Células degraded contíguas (diagonais incluídas) formam um incidente, com uma caixa delimitadora e suas células.causeé o texto fixonot attributed. O arquivo é uma entrada para um ciclo de relatar, confirmar e notificar (o ciclo de notificação da aviação que termina em um NOTAM); não é uma confirmação e não é um NOTAM.
e um .manifest.json com a contagem de bytes e o SHA-256 dos três arquivos, o id do método, os contadores de entrada (linhas lidas e excluídas) e o bloco do conjunto de dados, de modo que um produto possa ser verificado e reproduzido.
Regras de liberação (impostas pelo comando)#
- Atraso de pelo menos 24 h. O produto de um dia é liberado no mínimo ao fim desse dia UTC mais
--delay-hours(24 ou mais; um valor menor é recusado). O comando recusa um dia que ainda não pode ser publicado e informa o horário mais cedo possível. Não há opção para encurtar esse prazo. - Células grosseiras.
--cell-degabaixo de 0,5 é recusado. - Supressão. Uma célula vista por menos de 5 aeronaves distintas não é publicada; uma contagem abaixo de 5 é
null(zero incluído), como no método básico. - Sem atribuição. O vocabulário de estados e motivos não tem causa; um teste afirma isso.
- Fontes. Apenas adsb.lol (ODbL 1,0) ou um conjunto de dados do usuário com licença própria. Dados da OpenSky Network são recusados (sua licença não permite uso comercial nem redistribuição de mapas derivados). ADS-B e AIS nunca são combinados.
- Licença do produto. Um arquivo ADS-B por célula feito a partir do adsb.lol é um Derived Database e traz a ODbL 1,0 e a atribuição ao adsb.lol no arquivo. O código do Kshana continua AGPL-3.0.
O observável e o método básico#
Uma aeronave ADS-B informa o quão precisa ela acredita ser sua própria posição GNSS: NACp (Navigation Accuracy Category for Position, um limite horizontal de 95 % de 10 NM até menos de 3 m) e NIC (Navigation Integrity Category, um raio de contenção). O método básico (kshana-interference-map/adsb/v2, docs/INTERFERENCE-MAP.md) conta, por célula e dia, a parcela de aeronaves distintas cujos relatos dentro da célula foram em sua maioria de baixa precisão, com salvaguardas: apenas altitude acima de 5.000 ft; uma aeronave só conta se tiver relatado boa precisão em outro lugar no mesmo dia (uma linha de base do equipamento); a parcela da célula deve superar a mediana das parcelas das células do dia por uma margem; um dia cuja mediana já é alta é marcado como confundido e nenhuma célula é declarada degraded. Os parâmetros foram fixados a partir das definições dos campos e da regra de privacidade antes de qualquer dado ser examinado, e estão gravados em todo arquivo de saída. O observatório acrescenta o vocabulário de três estados, as regras de liberação e os arquivos acima, e não altera nenhum parâmetro.
Execuções regionais. Com --bbox, apenas os relatos dentro da caixa são lidos. A linha de base do equipamento e o fundo do dia são então calculados somente a partir dos relatos da caixa, e o arquivo informa isso (method.scope). Um produto regional é, portanto, um produto dos dados daquela região, não um recorte de um produto global.
Relação com o método NACp versus HDOP do almanaque#
Pleninger, Topkova e Steiner, "GNSS interference detection: Methodology utilising ADS-B NACp indicator and GPS almanac data", The Aeronautical Journal 129 (1331), 206 a 223 (2025), doi 10.1017/aer.2024.67, comparam o erro de posição implícito no NACp de uma aeronave com o HDOP (horizontal dilution of precision, diluição horizontal da precisão) da constelação GPS obtido de dados de almanaque, e sinalizam uma aeronave como afetada quando os dois divergem; o artigo avalia o método em experimentos de jamming deliberado de GPS.
O que usamos. Apenas o resumo publicado e o registro bibliográfico. O texto completo não estava disponível para nós (acesso pago), de modo que não conhecemos nem seu mapeamento de NACp para uma estimativa de erro, nem seu cálculo de HDOP, nem seus limiares, e não afirmamos reproduzi-los.
O que o observatório faz em vez disso. A pergunta que a comparação com o almanaque responde é "a geometria da constelação, por si só, poderia explicar essa baixa precisão?". O método básico responde a uma pergunta relacionada sem almanaque: uma parcela baixa deve se destacar em relação ao fundo do mesmo dia na região e em relação aos próprios bons relatos da aeronave em outros lugares. Esse é um substituto diferente e mais fraco: ele não pode dizer que uma hora de geometria tranquila foi degraded onde o fundo do dia também é baixo. Um avaliador de HDOP por almanaque não está implementado. É um item em aberto, a ser construído a partir do texto completo do artigo e do almanaque GPS público e pré-registrado antes de ser executado; até lá ele é citado, não afirmado.
Reproduzindo um produto#
scripts/fetch_adsblol_day.sh 2026-09-15 /path/to/cache # fetch and extract one day, hashes recorded
kshana interference-map daily /path/to/cache/extracted/2026-09-15 \
--dataset adsb-lol --day 2026-09-15 --bbox 53.5,9.0,66.0,31.0 --out products/
O pipeline é determinístico em tudo o que publica (o salt do identificador por execução altera apenas hashes internos, que nunca são gravados). Os valores SHA-256 do manifesto permitem comparar uma segunda execução byte a byte.
Estudo de sensibilidade#
kshana interference-map sensitivity <input> --dataset adsb-lol --day <day> --out report.json reexecuta os relatos de um dia sob alterações, uma de cada vez, de cada parâmetro pré-registrado (dois valores cada, mais uma grade de 1,0 grau) e informa, por variante, o número de células degraded, not degraded e not observed, o índice de Jaccard do conjunto degraded com o conjunto registrado, as células cujo estado mudou e a área degraded. Ele não altera nada na regra registrada: uma variante não é uma alternativa validada, e uma grande mudança sob um parâmetro mostra o quanto o veredito depende desse parâmetro, não qual valor está certo. Os resultados do catálogo retrospectivo estão em docs/observatory/RESULTS.md.
Limites#
- Cobertura. O adsb.lol segue receptores voluntários; o mar aberto e o espaço aéreo pouco coberto são esparsos, e
not_observedé comum ali. Um mapa mostra a cobertura da sua fonte. - O que significa baixa precisão. NACp e NIC caem por razões que não são interferência: falhas de satélite ou de aumentação, clima espacial, falhas de receptor ou de transponder e geometria. Nenhum estado implica uma causa.
- Aeronaves que permanecem o dia todo em uma região afetada não têm linha de base fora dela e não são contadas, de modo que o método subestima um efeito regional persistente. O estudo de sensibilidade mostra o efeito da salvaguarda da linha de base.
- Os limites do dia são em UTC; um evento que cruza a meia-noite é dividido entre dois dias.
- Sem verdade de referência. O observatório não tem referência independente externa: toda cifra é MODELLED, e nenhuma linha da matriz de verificação se apoia nele.
- Sensibilidade do tema. Mapas desse tipo são políticos. O observatório declara um método, um atraso e um vocabulário, e nada mais; não nomeia Estados nem atores, e não publica em tempo real.