Observatoire des interférences : note de méthode
Version kshana-observatory/adsb/v1, construite sur kshana-interference-map/adsb/v2. À titre consultatif seulement : il s'agit d'une description de l'aspect qu'avaient les rapports de position publiés lors de jours passés, et non d'une mesure d'un récepteur quelconque, d'une prévision, d'une confirmation d'interférence ni de l'attribution de sa cause.
Ce que publie l'observatoire#
Un produit par jour UTC et par région, à partir d'une archive ouverte de positions d'aéronefs. Chaque cellule d'une grille fixe de latitude-longitude de 0.5 degré est dans l'un de trois états :
| État | Signification |
|---|---|
degraded |
Une part élevée des aéronefs échantillonnés dans la cellule a rapporté une faible précision de navigation ce jour-là, nettement au-dessus du bruit de fond de ce jour. |
not_degraded |
Assez d'aéronefs ont été échantillonnés et la part n'a pas satisfait à la règle. |
not_observed |
Les données n'ont pas permis de trancher. Ce n'est pas « dégagé ». Chaque cellule publiée de ce type porte un motif de données : insufficient_sample, no_day_background ou day_wide_effect. Une cellule sans aucune entrée a été vue par moins de 5 aéronefs distincts et est retenue. |
Rien d'autre n'est publié : ni cause, ni acteur, ni enregistrement par aéronef. Les motifs décrivent si les données du jour étaient suffisantes, jamais pourquoi la précision était faible.
Trois fichiers par jour (kshana interference-map daily) :
observatory-adsb-<dataset>-<day>.geojson: les cellules, avecschemakshana-observatory-day/1, la méthode et ses paramètres préenregistrés, la licence et l'attribution, la règle de publication et un avis.observatory-adsb-<dataset>-<day>.png: les mêmes cellules sous forme d'image (dégradée, non dégradée, non observée hachurée ; les cellules vides n'ont pas été observées). Des blocs de texte dans le fichier répètent l'avis et la licence.observatory-adsb-<dataset>-<day>.incidents.json:schemakshana-incident-report/1. Les cellules dégradées contiguës (diagonales comprises) forment un incident avec un cadre englobant et ses cellules.causeest le texte fixenot attributed. Le fichier est une entrée d'un cycle signaler, confirmer et notifier (le cycle de signalement aéronautique qui se termine par un NOTAM) ; ce n'est ni une confirmation ni un NOTAM.
et un .manifest.json avec le nombre d'octets et le SHA-256 des trois fichiers, l'identifiant de méthode, les compteurs d'entrée (lignes lues et exclues) et le bloc du jeu de données, de sorte qu'un produit puisse être vérifié et reproduit.
Règles de publication (appliquées par la commande)#
- Au moins 24 h de délai. Le produit d'un jour est publié au plus tôt à la fin de ce jour UTC plus
--delay-hours(24 ou plus ; une valeur plus petite est refusée). La commande refuse un jour qui n'est pas encore publiable et indique l'heure au plus tôt. Il n'existe aucun interrupteur pour le raccourcir. - Cellules grossières.
--cell-degen dessous de 0,5 est refusé. - Suppression. Une cellule vue par moins de 5 aéronefs distincts n'est pas publiée ; un compte inférieur à 5 est
null(zéro compris), comme dans la méthode de base. - Aucune attribution. Le vocabulaire des états et des motifs ne comporte aucune cause ; un test l'affirme.
- Sources. adsb.lol (ODbL 1,0) uniquement, ou un jeu de données d'utilisateur avec sa propre licence. Les données d'OpenSky Network sont refusées (sa licence n'autorise ni l'usage commercial ni la redistribution de cartes dérivées). ADS-B et AIS ne sont jamais combinés.
- Licence du produit. Un fichier ADS-B par cellule produit à partir d'adsb.lol est une base de données dérivée et porte ODbL 1,0 et l'attribution adsb.lol dans le fichier. Le code de Kshana reste sous AGPL-3.0.
L'observable et la méthode de base#
Un aéronef ADS-B rapporte la précision qu'il estime à sa propre position GNSS : NACp (Navigation Accuracy Category for Position, une borne horizontale à 95 % allant de 10 NM jusqu'à moins de 3 m) et NIC (Navigation Integrity Category, un rayon de confinement). La méthode de base (kshana-interference-map/adsb/v2, docs/INTERFERENCE-MAP.md) compte, par cellule et par jour, la part d'aéronefs distincts dont les rapports dans la cellule étaient en majorité de faible précision, avec des garde-fous : altitude supérieure à 5 000 ft seulement ; un aéronef ne compte que s'il a rapporté une bonne précision ailleurs le même jour (une référence d'équipement) ; la part de la cellule doit dépasser la part médiane des cellules du jour d'une marge ; un jour dont la médiane est elle-même élevée est marqué comme confondu et aucune cellule n'est déclarée dégradée. Les paramètres ont été fixés à partir des définitions des champs et de la règle de confidentialité avant d'examiner la moindre donnée, et sont écrits dans chaque fichier de sortie. L'observatoire ajoute le vocabulaire à trois états, les règles de publication et les fichiers ci-dessus, et ne change aucun paramètre.
Exécutions régionales. Avec --bbox, seuls les rapports situés dans le cadre sont lus. La référence d'équipement et le bruit de fond du jour sont alors calculés à partir des seuls rapports du cadre, et le fichier l'indique (method.scope). Un produit régional est donc un produit des données de cette région, et non un extrait d'un produit mondial.
Relation avec la méthode NACp contre HDOP d'almanach#
Pleninger, Topkova et Steiner, « GNSS interference detection: Methodology utilising ADS-B NACp indicator and GPS almanac data », The Aeronautical Journal 129 (1331), 206 à 223 (2025), doi 10.1017/aer.2024.67, comparent l'erreur de position qu'implique le NACp d'un aéronef avec le HDOP (dilution horizontale de précision) de la constellation GPS issu des données d'almanach, et signalent un aéronef comme affecté lorsque les deux divergent ; l'article évalue la méthode sur des expériences de brouillage GPS délibéré.
Ce que nous avons utilisé. Seulement le résumé publié et la notice bibliographique. Le texte intégral n'était pas disponible pour nous (accès payant) ; nous ne connaissons donc ni sa correspondance entre le NACp et une estimation d'erreur, ni son calcul du HDOP, ni ses seuils, et nous ne prétendons pas les reproduire.
Ce que fait l'observatoire à la place. La question à laquelle répond la comparaison d'almanach est « la seule géométrie de la constellation pourrait-elle expliquer cette faible précision ? ». La méthode de base répond à une question voisine sans almanach : une faible part doit se distinguer du bruit de fond du même jour sur la région et des bons rapports du même aéronef ailleurs. C'est un substitut différent et plus faible : elle ne peut pas dire qu'une heure de géométrie calme était dégradée là où le bruit de fond du jour est lui aussi faible. Un évaluateur HDOP d'almanach n'est pas implémenté. C'est un point ouvert, à construire à partir du texte intégral de l'article et de l'almanach GPS public et à préenregistrer avant son exécution ; d'ici là, il est cité, et non revendiqué.
Reproduire un produit#
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/
Le pipeline est déterministe pour tout ce qu'il publie (le sel d'identifiant propre à chaque exécution ne change que des empreintes internes qui ne sont jamais écrites). Les valeurs SHA-256 du manifeste permettent de comparer une seconde exécution octet pour octet.
Étude de sensibilité#
kshana interference-map sensitivity <input> --dataset adsb-lol --day <day> --out report.json rejoue les rapports d'un jour sous des changements, un à la fois, de chaque paramètre préenregistré (deux valeurs chacun, plus une grille de 1,0 degré) et rapporte, par variante, le nombre de cellules dégradées, non dégradées et non observées, l'indice de Jaccard de l'ensemble dégradé avec l'ensemble enregistré, les cellules dont l'état a changé, et la surface dégradée. Elle ne change rien à la règle enregistrée : une variante n'est pas une alternative validée, et un grand changement sous un paramètre dit à quel point le constat dépend de ce paramètre, et non quelle valeur est la bonne. Les résultats du catalogue rétrospectif se trouvent dans docs/observatory/RESULTS.md.
Limites#
- Couverture. adsb.lol suit des récepteurs bénévoles ; la haute mer et l'espace aérien faiblement couvert sont clairsemés, et
not_observedy est fréquent. Une carte montre la couverture de sa source. - Ce que signifie une faible précision. Le NACp et le NIC baissent pour des raisons autres que l'interférence : pannes de satellites ou d'augmentation, météorologie spatiale, défauts de récepteur ou de transpondeur, et géométrie. Aucun état n'implique une cause.
- Les aéronefs qui restent toute la journée dans une région affectée n'ont pas de référence en dehors d'elle et ne sont pas comptés, de sorte que la méthode sous-estime un effet régional persistant. L'étude de sensibilité montre l'effet du garde-fou de référence.
- Les limites de jour sont en UTC ; un événement qui franchit minuit est réparti entre deux jours.
- Aucune vérité terrain. L'observatoire n'a pas de référence externe indépendante : chaque valeur est MODELLED, et aucune ligne de la matrice de vérification ne repose sur lui.
- Sensibilité du sujet. Les cartes de ce genre sont politiques. L'observatoire énonce une méthode, un délai et un vocabulaire, et rien d'autre ; il ne nomme ni États ni acteurs, et il ne publie pas en temps réel.