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: isto é uma descrição do aspeto que os relatórios de posição publicados tinham em dias passados, não uma medição de nenhum recetor, uma previsão, uma confirmação de interferência nem uma atribuição da sua causa.
O que o observatório publica#
Um produto por dia UTC e região, a partir de um arquivo aberto de posições de aeronaves. Cada célula de uma grelha fixa de latitude-longitude de 0.5 graus está num de três estados:
| Estado | Significado |
|---|---|
degraded |
Uma proporção elevada das aeronaves amostradas na célula comunicou baixa exatidão de navegação nesse dia, claramente acima do fundo desse dia. |
not_degraded |
Foram amostradas aeronaves suficientes e a proporção não satisfez a regra. |
not_observed |
Os dados não permitiram uma decisão. Isto não é «livre». Cada célula publicada deste tipo 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 é retida. |
Mais nada é publicado: nenhuma causa, nenhum agente, nenhum registo por aeronave. Os motivos descrevem se os dados do dia foram suficientes, nunca por que razão a exatidão foi baixa.
Três ficheiros por dia (kshana interference-map daily):
observatory-adsb-<dataset>-<day>.geojson: as células, comschemakshana-observatory-day/1, o método e os seus parâmetros pré-registados, a licença e a atribuição, a regra de divulgação e um aviso.observatory-adsb-<dataset>-<day>.png: as mesmas células como imagem (degradada, não degradada, não observada a tracejado; as células vazias não foram observadas). Blocos de texto no ficheiro repetem o aviso e a licença.observatory-adsb-<dataset>-<day>.incidents.json:schemakshana-incident-report/1. As células degradadas contíguas (diagonais incluídas) formam um incidente com uma caixa delimitadora e as suas células.causeé o texto fixonot attributed. O ficheiro é uma entrada para um ciclo de comunicar, confirmar e notificar (o ciclo de comunicação da aviação que termina num 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 ficheiros, o identificador 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 divulgação (impostas pelo comando)#
- Pelo menos 24 h de atraso. O produto de um dia é divulgado o mais cedo no fim desse dia UTC mais
--delay-hours(24 ou mais; um valor menor é recusado). O comando recusa um dia que ainda não seja publicável e indica a hora mais cedo possível. Não existe nenhum interruptor para o encurtar. - 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 de base. - Sem atribuição de causa. O vocabulário de estados e motivos não tem causa; um teste afirma-o.
- Fontes. Apenas adsb.lol (ODbL 1,0), ou um conjunto de dados do utilizador com a sua própria licença. Os dados da OpenSky Network são recusados (a sua licença não permite a utilização comercial nem a redistribuição de mapas derivados). ADS-B e AIS nunca são combinados.
- Licença do produto. Um ficheiro ADS-B por célula feito a partir de adsb.lol é uma Derived Database e inclui a ODbL 1,0 e a atribuição a adsb.lol no ficheiro. O código do Kshana continua a ser AGPL-3.0.
A observável e o método de base#
Uma aeronave ADS-B comunica a exatidão com que considera que a sua própria posição GNSS é conhecida: NACp (Navigation Accuracy Category for Position, um limite horizontal a 95 % de 10 NM até menos de 3 m) e NIC (Navigation Integrity Category, um raio de contenção). O método de base (kshana-interference-map/adsb/v2, docs/INTERFERENCE-MAP.md) conta, por célula e por dia, a proporção de aeronaves distintas cujas comunicações dentro da célula tiveram maioritariamente baixa exatidão, com salvaguardas: apenas acima de 5 000 ft de altitude; uma aeronave só conta se tiver comunicado boa exatidão noutro local no mesmo dia (uma linha de base do equipamento); a proporção da célula tem de exceder a proporção mediana das células desse dia por uma margem; um dia cuja mediana seja ela própria elevada é marcado como confundido e nenhuma célula é declarada degradada. 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 escritos em todos os ficheiros de saída. O observatório acrescenta o vocabulário de três estados, as regras de publicação e os ficheiros acima, e não altera nenhum parâmetro.
Execuções regionais. Com --bbox, apenas são lidas as comunicações dentro da caixa. A linha de base do equipamento e o fundo do dia são então calculados apenas a partir das comunicações da caixa, e o ficheiro di-lo (method.scope). Um produto regional é, por isso, um produto dos dados dessa região, e 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) da constelação GPS a partir de dados do almanaque, e assinalam uma aeronave como afetada quando os dois discordam; o artigo avalia o método em experiências deliberadas de jamming de GPS.
O que utilizámos. Apenas o resumo publicado e o registo bibliográfico. O texto integral não estava disponível para nós (acesso pago), pelo que não conhecemos nem o seu mapeamento de NACp para uma estimativa de erro, nem o seu cálculo do HDOP, nem os seus limiares, e não afirmamos reproduzi-los.
O que o observatório faz em alternativa. A pergunta a que a comparação com o almanaque responde é "poderá a geometria da constelação, por si só, explicar esta baixa exatidão?". O método de base responde a uma pergunta relacionada sem almanaque: uma proporção baixa tem de se destacar do fundo do mesmo dia em toda a região e das boas comunicações da própria aeronave noutros locais. É um substituto diferente e mais fraco: não consegue dizer que uma hora de geometria tranquila esteve degradada quando o fundo do dia também é baixo. Um avaliador de HDOP do almanaque não está implementado. É um ponto em aberto, a construir a partir do texto integral do artigo e do almanaque GPS público e a pré-registar antes de ser executado; até lá, é citado, não afirmado.
Reproduzir 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 é determinista em tudo o que publica (o sal do identificador, por execução, apenas altera hashes internos que nunca são escritos). 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 as comunicações de um dia sob alterações, uma de cada vez, de todos os parâmetros pré-registados (dois valores cada, mais uma grelha de 1,0 grau) e indica, por variante, o número de células degradadas, não degradadas e não observadas, o índice de Jaccard do conjunto degradado com o registado, as células cujo estado mudou e a área degradada. Não altera nada na regra registada: uma variante não é uma alternativa validada, e uma grande alteração sob um parâmetro indica o quanto a decisão depende desse parâmetro, não qual é o valor certo. Os resultados do catálogo retrospetivo estão em docs/observatory/RESULTS.md.
Limites#
- Cobertura. O adsb.lol depende de recetores voluntários; o mar aberto e o espaço aéreo pouco coberto são esparsos, e
not_observedé frequente aí. Um mapa mostra a cobertura da sua fonte. - O que significa baixa exatidão. O NACp e o NIC descem por razões que não a interferência: falhas de satélites ou de aumentação, meteorologia espacial, avarias de recetores ou de transponders, e geometria. Nenhum estado implica uma causa.
- As aeronaves que permanecem durante todo o dia numa região afetada não têm linha de base fora dela e não são contadas, pelo 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 atravesse a meia-noite é dividido entre dois dias.
- Sem verdade de referência. O observatório não tem nenhuma referência independente externa: todos os valores são MODELLED, e nenhuma linha da matriz de verificação assenta nele.
- Sensibilidade do tema. Os mapas deste tipo são politicamente sensíveis. O observatório enuncia 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.