Lire les données

Dernière mise à jour le

L'API publique renvoie les hexagones que dessine la carte, pour la dernière mise à jour ou un jour enregistré, sans positions brutes d'avions. Le schéma complet est en OpenAPI 3.1.

Fenêtre la plus récente

GET https://api.gpsinterference.com/v1/interference/latest

GET https://api.gpsinterference.com/interference.json est le même document, que la carte utilise. Il contient une journée UTC de vols, history_date, et est reconstruit une fois par jour vers 05h00 UTC.

Une journée UTC

GET https://api.gpsinterference.com/v1/interference/YYYY-MM-DD

La carte telle qu'elle était à la dernière mise à jour de cette journée UTC (pas un décompte des seuls vols de cette date), avec les mêmes champs que le résumé le plus récent plus archive_date et complete. complete est faux tant que la journée est encore aujourd'hui et peut être remplacée ; une journée terminée ne change jamais. Une date sans carte enregistrée renvoie 404 et {"error":"no archive"}.

GET https://api.gpsinterference.com/v1/interference/days liste chaque jour enregistré : date, updated et hexes (un nombre), sans polygones.

Champs d'un hexagone

ChampSignification
hIdentifiant de cellule, column_row sur la grille hexagonale Web Mercator.
gAvions distincts dans la cellule dont le NACp est resté au-dessus de 7.
bAvions distincts qui ont signalé un NACp de 7 ou moins au moins une fois dans la cellule.
pPart touchée, en pourcentage, à une décimale : 100 × b ÷ (g + b). La couleur en est tirée.
cg sous 3 %, y de 3 % à 10 %, r au-dessus de 10 %, d'après le p arrondi.
polyAnneau de paires [latitude, longitude], en degrés.

Les cellules sont des hexagones à plat sur la grille Web Mercator avec un rayon de 0,34° de longitude (environ 38 km du centre au coin à l'équateur, 22 km à 54°N). Les cellules avec moins de 3 avions sont omises.

bands (résumés à partir de novembre 2026) répartit les mêmes comptes par altitude barométrique : edges_ft vaut [5000, 15000, 30000] et hexes contient quatre listes, pour sous 5 000 ft, 5 000–15 000 ft, 15 000–30 000 ft et au-dessus de 30 000 ft. Chaque entrée est { h, g, b }, le polygone et la part étant pris à l'hexagone de même h dans la liste principale (p = 100 × b ÷ (g + b), mêmes seuils pour c). Une tranche omet les cellules de moins de 3 avions dans cette tranche. Un avion qui change de tranche dans une cellule est compté dans chacune, les quatre tranches ne s'additionnent donc pas aux comptes principaux ; les avions au sol ou sans altitude ne figurent que dans les comptes principaux.

Champs de premier niveau : history_date est la journée UTC des vols ; updated est le moment où le résumé a été écrit (UTC) ; grid est mercator-r0.34 ; window_minutes vaut 1440, un jour ; sources est adsb.lol-globe-history plus la version d'adsb.lol utilisée, comme adsb.lol-prod-0. Les résumés enregistrés avant novembre 2026 peuvent ne pas avoir history_date et portent polled_points, grid_points et failed_points de l'ancienne collecte en direct.

Cache, CORS et limites

Le résumé le plus récent, le jour enregistré d'aujourd'hui et l'index des dates sont envoyés avec cache-control: public, max-age=60. Un jour terminé est envoyé avec max-age=86400.

Le CORS du navigateur n'est autorisé que pour https://gpsinterference.com et https://www.gpsinterference.com : un autre site ne peut donc pas lire le JSON depuis les navigateurs de ses visiteurs ; curl et les requêtes côté serveur ne sont pas concernés. Il n'y a pas de limite de débit fixe, mais des requêtes très fréquentes peuvent être freinées. Les données changent une fois par jour : suivez donc les en-têtes de cache plutôt que d'interroger sans cesse.

Attribution

Données aériennes issues de l'historique global d'adsb.lol, partagées sous licence Open Database License (ODbL). Citez https://gpsinterference.com. Une faible précision signalée n'est pas un brouillage confirmé et n'identifie aucune source. Les tuiles du fond de carte sont distinctes et ne font pas partie de cette API.

Citer les données

Citez le jour enregistré que vous avez utilisé : la carte la plus récente change chaque jour, un jour enregistré non.

APA

GPSInterference.com. (2026). GPS interference hexagon data [Data set]. https://gpsinterference.com/docs

Un jour enregistré :

GPSInterference.com. (2026). GPS interference hexagon data, 25 October 2026 [Data set]. https://api.gpsinterference.com/v1/interference/2026-10-25

BibTeX

@dataset{gpsinterference_2026,
  author       = {{GPSInterference.com}},
  title        = {GPS Interference Hexagon Data},
  year         = {2026},
  publisher    = {GPSInterference.com},
  url          = {https://gpsinterference.com/docs},
  note         = {Built from ADS-B flight tracks from adsb.lol globe history, available under the Open Database License (ODbL). Low reported accuracy (NACp 7 or lower) is not confirmed jamming. For one UTC day, use https://api.gpsinterference.com/v1/interference/YYYY-MM-DD}
}

Exemples

curl -sS "https://api.gpsinterference.com/v1/interference/latest"
curl -sS "https://api.gpsinterference.com/v1/interference/2026-10-25"

En JavaScript, sur ce site ou un serveur :

const res = await fetch("https://api.gpsinterference.com/v1/interference/latest");
if (!res.ok) throw new Error(String(res.status));
const data = await res.json();
// data.hexes[i] is { h, g, b, p, c, poly }

La méthodologie explique comment les comptes sont faits.

Intégrer la carte

La carte en direct est libre à intégrer. Collez ceci là où elle doit apparaître :

<iframe src="https://gpsinterference.com/embed" width="640" height="400"
        style="border:0;width:100%;max-width:960px" loading="lazy"
        title="Live GPS interference map"></iframe>
<p>Live map: <a href="https://gpsinterference.com/">GPS Interference</a></p>

Configurez-la ci-dessous et copiez le code, ou ajoutez vous-même les options.

Options

Ajoutez-en à https://gpsinterference.com/embed, reliées par & :

OptionValeursCe qu'elle fait
regionbaltic-sea, eastern-europe, black-sea, eastern-mediterranean, middle-east, east-asia, finland, estonia, latvia, lithuania, kaliningrad, poland, norway, romania, turkey, cyprus, israel, lebanon, south-korea, north-korea, japan, china, taiwan, philippines, vietnam, sweden, denmark, germany, iceland, united-kingdom, ukraine, belarus, moldova, bulgaria, georgia, armenia, azerbaijan, greece, egypt, iran, iraq, syria, jordan, saudi-arabia, united-arab-emirates, qatarS'ouvre sur cette région, ajustée à la taille du cadre.
bboxsouth,west,north,eastS'ouvre sur n'importe quelle zone, en degrés, par exemple bbox=30,-120,40,-105.
lat, lon, zoomnombresS'ouvre sur un centre et un zoom au lieu d'une zone.
lock1Garde les lecteurs dans la zone : ils peuvent s'y déplacer et zoomer, mais pas s'en éloigner.
styledark (par défaut), light, streets, satelliteLa carte sur laquelle reposent les hexagones : sombre, une carte claire et nette pour les pages blanches, rues, ou satellite avec frontières et noms de lieux. Cartes de MapTiler.
langauto, en, no, uk, pl, tr, es, fr, deLa langue du texte de la carte : auto utilise la langue du navigateur du lecteur, ou indiquez un code. Sans cela, anglais. Les pages de région utilisent leur propre langue.
nameson, off (par défaut)Noms de lieux sur la carte.
altall (par défaut), low, mid, high, cruiseN'affiche que les avions d'une tranche d'altitude : sous 5 000 ft, 5 000–15 000 ft, 15 000–30 000 ft ou au-dessus de 30 000 ft (barométrique). Les jours enregistrés avant la saisie des altitudes affichent tous les avions.
controlsonAffiche les commutateurs de style, de noms et d'altitude, pour que les lecteurs puissent les changer.
dateYYYY-MM-DDAffiche un jour enregistré au lieu de la carte la plus récente, pour un récit sur ce jour.