Czytaj dane

Ostatnia aktualizacja

Publiczne API zwraca sześciokąty, które rysuje mapa, dla ostatniej aktualizacji lub zapisanego dnia, bez surowych pozycji samolotów. Pełny schemat jest w OpenAPI 3.1.

Najnowsze okno

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

GET https://api.gpsinterference.com/interference.json to ten sam dokument, z którego korzysta mapa. Zawiera jedną dobę UTC lotów, history_date, i jest budowany od nowa raz dziennie około 05:00 UTC.

Jedna doba UTC

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

Mapa taka, jaka była przy ostatniej aktualizacji tej doby UTC (nie zliczenie samych lotów z tej daty), z tymi samymi polami co najnowsze podsumowanie plus archive_date i complete. complete jest fałszywe, dopóki doba jest jeszcze dzisiejsza i może zostać zastąpiona; zakończona doba nigdy się nie zmienia. Data bez zapisanej mapy zwraca 404 i {"error":"no archive"}.

GET https://api.gpsinterference.com/v1/interference/days wymienia każdy zapisany dzień: date, updated i hexes (liczbę), bez wielokątów.

Pola sześciokąta

PoleZnaczenie
hIdentyfikator komórki, column_row w siatce sześciokątów Web Mercator.
gRóżne samoloty w komórce, których NACp pozostał powyżej 7.
bRóżne samoloty, które zgłosiły NACp 7 lub niższy co najmniej raz w komórce.
pUdział dotkniętych, w procentach, z jednym miejscem po przecinku: 100 × b ÷ (g + b). Kolor jest z tego brany.
cg poniżej 3%, y od 3% do 10%, r powyżej 10%, z zaokrąglonego p.
polyPierścień par [latitude, longitude], w stopniach.

Komórki to płaskie sześciokąty w siatce Web Mercator z promieniem 0,34° długości geograficznej (około 38 km od środka do wierzchołka na równiku, 22 km na 54°N). Komórki z mniej niż 3 samolotami są pomijane.

bands (podsumowania od listopada 2026) dzieli te same liczby według wysokości barometrycznej: edges_ft to [5000, 15000, 30000], a hexes zawiera cztery listy, dla poniżej 5000 ft, 5000–15 000 ft, 15 000–30 000 ft i powyżej 30 000 ft. Każdy wpis to { h, g, b }, z wielokątem i udziałem wziętymi z sześciokąta o tym samym h z listy głównej (p = 100 × b ÷ (g + b), te same progi dla c). Przedział pomija komórki z mniej niż 3 samolotami w tym przedziale. Samolot zmieniający przedział w komórce jest liczony w każdym, więc cztery przedziały nie sumują się do liczb głównych; samoloty na ziemi lub bez wysokości są tylko w liczbach głównych.

Pola najwyższego poziomu: history_date to doba UTC, z której pochodzą loty; updated to czas zapisania podsumowania (UTC); grid to mercator-r0.34; window_minutes to 1440, jedna doba; sources to adsb.lol-globe-history plus wydanie adsb.lol, z którego zbudowano, np. adsb.lol-prod-0. Podsumowaniom zapisanym przed listopadem 2026 może brakować history_date i mają polled_points, grid_points oraz failed_points ze starego zbierania na żywo.

Buforowanie, CORS i limity

Najnowsze podsumowanie, dzisiejszy zapisany dzień i indeks dat są wysyłane z cache-control: public, max-age=60. Zakończony dzień jest wysyłany z max-age=86400.

CORS przeglądarki jest dozwolony tylko dla https://gpsinterference.com i https://www.gpsinterference.com, więc inna strona nie może odczytać JSON-a z przeglądarek swoich odwiedzających; curl i żądania po stronie serwera nie są dotknięte. Nie ma stałego limitu częstotliwości, ale bardzo częste żądania mogą być dławione. Dane zmieniają się raz dziennie, więc stosuj nagłówki bufora zamiast odpytywać ciągle.

Podanie źródła

Dane o samolotach z historii globalnej adsb.lol, udostępniane na licencji Open Database License (ODbL). Cytuj https://gpsinterference.com. Niska zgłaszana dokładność nie jest potwierdzonym zagłuszaniem i nie wskazuje źródła. Kafelki mapy podkładowej są osobne i nie należą do tego API.

Cytowanie danych

Cytuj zapisany dzień, którego użyłeś: najnowsza mapa zmienia się codziennie, a zapisany dzień nie.

APA

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

Jeden zapisany dzień:

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}
}

Przykłady

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

W JavaScripcie, na tej stronie lub na serwerze:

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 }

Metodologia wyjaśnia, jak powstają liczby.

Osadzanie mapy

Mapę na żywo można swobodnie osadzać. Wklej to tam, gdzie ma się pojawić:

<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>

Ustaw ją poniżej i skopiuj kod albo dodaj opcje samodzielnie.

Opcje

Dodaj dowolne z nich do https://gpsinterference.com/embed, łącząc przez &:

OpcjaWartościCo robi
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, qatarOtwiera się na tym regionie, dopasowanym do rozmiaru ramki.
bboxsouth,west,north,eastOtwiera się na dowolnym obszarze, w stopniach, na przykład bbox=30,-120,40,-105.
lat, lon, zoomliczbyOtwiera się na środku i powiększeniu zamiast na obszarze.
lock1Zatrzymuje czytelników w obszarze: mogą w nim przesuwać i powiększać, ale nie oddalać się od niego.
styledark (domyślnie), light, streets, satelliteMapa, na której leżą sześciokąty: ciemna, czysta jasna mapa dla białych stron, ulice albo satelita z granicami i nazwami miejsc. Mapy od MapTiler.
langauto, en, no, uk, pl, tr, es, fr, deJęzyk tekstu na mapie: auto używa języka przeglądarki czytelnika, albo podaj jeden kod. Bez tego: angielski. Strony regionów używają własnego języka.
nameson, off (domyślnie)Nazwy miejsc na mapie.
altall (domyślnie), low, mid, high, cruisePokazuje tylko samoloty z jednego przedziału wysokości: poniżej 5000 ft, 5000–15 000 ft, 15 000–30 000 ft lub powyżej 30 000 ft (barometryczne). Dni zapisane przed rejestrowaniem wysokości pokazują wszystkie samoloty.
controlsonPokazuje przełączniki stylu, nazw i wysokości lotu, by czytelnicy mogli je zmieniać.
dateYYYY-MM-DDPokazuje zapisany dzień zamiast najnowszej mapy, do opowieści o tym dniu.