Inserta el mapa

Última actualización el

La API pública devuelve los hexágonos que dibuja el mapa, para la última actualización o un día guardado, sin posiciones brutas de aviones. El esquema completo está en OpenAPI 3.1.

Fuente: GPSInterference.com, https://gpsinterference.com/es/docs. Reutilización libre con este crédito y un enlace.

Incrustar el mapa

El mapa en vivo es libre de incrustar. Sirve para sitios de noticias, proyectos de investigación, blogs y páginas docentes que quieren un mapa vivo y citable sin tener que construirlo.

Pega esto donde deba aparecer:

<iframe src="https://gpsinterference.com/embed" width="640" height="400"
        style="border:0;width:100%;max-width:960px" loading="lazy"
        title="Mapa en vivo de interferencias GPS"></iframe>
<p>Mapa en vivo: <a href="https://gpsinterference.com/es/">Interferencias GPS</a></p>

Usa el generador de abajo y copia el código, o añade las opciones a mano.

Opciones

Añade cualquiera de estas a https://gpsinterference.com/embed, unidas con &:

OpciónValoresQué hace
regionbaltic-sea, eastern-europe, black-sea, eastern-mediterranean, middle-east, east-asia, south-southeast-asia, western-europe, balkans, oceania, africa, americas, finland, estonia, latvia, lithuania, kaliningrad, poland, norway, romania, turkey, cyprus, israel, lebanon, south-korea, north-korea, japan, china, taiwan, philippines, vietnam, south-africa, morocco, algeria, kenya, senegal, tunisia, botswana, india, pakistan, myanmar, thailand, cambodia, malaysia, singapore, indonesia, sweden, denmark, germany, iceland, united-kingdom, ukraine, belarus, moldova, bulgaria, georgia, armenia, azerbaijan, greece, egypt, iran, iraq, syria, jordan, saudi-arabia, united-arab-emirates, qatar, austria, russia, persian-gulf, united-states, canada, mexico, cuba, venezuela, colombia, brazil, argentina, chile, france, spain, portugal, italy, ireland, netherlands, belgium, switzerland, serbia, croatia, bosnia-and-herzegovina, albania, slovenia, north-macedonia, australia, new-zealand, hungary, czechia, slovakia, paraguay, uruguay, peru, oman, nepal, bangladesh, bolivia, cameroonSe abre en esa región, ajustada al tamaño del marco.
bboxsouth,west,north,eastSe abre en cualquier zona, en grados, por ejemplo bbox=30,-120,40,-105.
lat, lon, zoomnúmerosSe abre en un centro y un zoom en lugar de una zona.
lock1Mantiene a los lectores dentro de la zona: pueden desplazarse y hacer zoom dentro de ella, pero no alejarse.
stylesatellite (por defecto), globe, dark, light, streetsEl mapa sobre el que se asientan los hexágonos: oscuro, un mapa claro y limpio para páginas blancas, calles, o satélite con fronteras y nombres de lugares. Mapas de MapTiler.
langauto, en, no, uk, pl, tr, es, fr, de, ar, zh, he, ru, jaEl idioma del texto del mapa: auto usa el idioma del navegador del lector, o indica un código. Sin él, inglés. Las páginas de región usan su propio idioma.
nameson, off (por defecto)Nombres de lugares en el mapa.
altall (por defecto), low, mid, high, cruiseMuestra solo los aviones de una banda de altitud: por debajo de 5.000 ft, 5.000–15.000 ft, 15.000–30.000 ft o por encima de 30.000 ft (barométrica). Los días guardados antes de registrar altitudes muestran todos los aviones.
dateYYYY-MM-DDMuestra un día guardado en lugar del mapa más reciente, para una historia sobre ese día.

Ventana más reciente

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

GET https://api.gpsinterference.com/interference.json devuelve el mismo documento que usa el mapa. Contiene un día UTC de vuelos, history_date, y se reconstruye una vez al día hacia las 05:00 UTC.

Un día UTC

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

El mapa tal como estaba en la última actualización de ese día UTC (no un recuento solo de los vuelos de esa fecha). Tiene los mismos campos que el resumen más reciente, más archive_date y complete. complete es falso mientras el día siga siendo hoy y puede sustituirse; un día terminado no cambia nunca. Una fecha sin mapa guardado devuelve 404 y {"error":"no archive"}.

GET https://api.gpsinterference.com/v1/interference/days lista todos los días guardados: date, updated y hexes (un recuento), sin polígonos.

Serie diaria

GET https://api.gpsinterference.com/v1/interference/series/SLUG es la serie diaria de una región, un país o el mundo: una fila por día guardado, del más antiguo al más reciente, con recuentos de hexágonos y aeronaves y pct, la proporción de áreas afectadas (hexágonos rojos y amarillos sobre todos los hexágonos). El slug es la dirección de la página, como en /region/baltic-sea, o world. Cada página de región lo dibuja bajo A lo largo del tiempo.

Datos en bloque

Para una transferencia masiva del conjunto de datos, por ejemplo todos los días guardados de una vez, escribe a contact@libregps.com en lugar de pedirlo día por día.

Campos del hexágono

CampoSignificado
hId de celda, column_row en la cuadrícula hexagonal Web Mercator.
gAviones distintos en la celda cuyo NACp se mantuvo por encima de 7.
bAviones distintos que informaron NACp 7 o menos al menos una vez en la celda.
pProporción afectada, en porcentaje, con un decimal: 100 × b ÷ (g + b). El color se toma de esta cifra.
cg por debajo del 3 %, y del 3 % al 10 %, r por encima del 10 %, p por encima del 50 % con al menos 12 aviones afectados, tomado del p redondeado.
polyAnillo de pares [latitude, longitude], en grados.

Las celdas son hexágonos planos en la cuadrícula Web Mercator con un radio de 0,34° de longitud (unos 38 km del centro a la esquina en el ecuador, 22 km a 54°N). Se omiten las celdas con menos de 3 aviones.

bands (resúmenes desde el 26 de octubre de 2026) divide los mismos recuentos por altitud barométrica: edges_ft es [5000, 15000, 30000] y hexes contiene cuatro listas, para por debajo de 5.000 ft, 5.000–15.000 ft, 15.000–30.000 ft y por encima de 30.000 ft. Cada entrada es { h, g, b }, con el polígono y la proporción tomados del hexágono del mismo h en la lista principal (p = 100 × b ÷ (g + b), los mismos umbrales para c). Una banda omite las celdas con menos de 3 aviones en esa banda. Un avión que cambia de banda dentro de una celda se cuenta en cada una, así que las cuatro bandas no suman los recuentos principales; los aviones en tierra o sin altitud solo están en los recuentos principales.

Campos de nivel superior: history_date es el día UTC de los vuelos; updated es cuándo se escribió el resumen (UTC); grid es mercator-r0.34; window_minutes es 1440, un día; sources es adsb.lol-globe-history más la versión de adsb.lol con la que se construyó, como adsb.lol-prod-0. A los resúmenes guardados antes del 26 de octubre de 2026 puede faltarles history_date y llevan polled_points, grid_points y failed_points de la antigua recogida en vivo.

Caché, CORS y límites

El resumen más reciente, el día guardado de hoy y el índice de fechas se envían con cache-control: public, max-age=60, y un día terminado con max-age=86400.

El CORS del navegador solo se permite para https://gpsinterference.com y https://www.gpsinterference.com, así que otros sitios web no pueden leer el JSON desde los navegadores de sus visitantes (curl y las peticiones desde servidor no se ven afectados). No hay un límite fijo de peticiones, pero las muy frecuentes pueden limitarse. Los datos cambian una vez al día, así que sigue las cabeceras de caché en lugar de consultar sin parar.

Atribución

Los datos de aeronaves proceden del historial globe de adsb.lol, compartido bajo la Open Database License (ODbL). Cita https://gpsinterference.com. La baja precisión informada no es interferencia confirmada ni identifica una fuente. Las teselas del mapa base son aparte y no forman parte de esta API.

Cada respuesta JSON empieza con un campo attribution, y cada respuesta lleva una cabecera X-Attribution. Si usas estas cifras en cualquier lugar, también en la respuesta de un asistente de IA, nombra GPSInterference.com y enlaza https://gpsinterference.com. Basta con Source: GPSInterference.com (https://gpsinterference.com/).

Registros diarios

Cada día guardado tiene su propia página con el titular que mostró el mapa, una tabla de regiones contada una vez por hexágono, la serie mundial y una cita: todos los días guardados; el último es el 8 de noviembre de 2026.

Citar los datos

Cita el día guardado que usaste. El mapa más reciente cambia cada día; un día guardado no.

APA

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

Un día guardado:

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

Ejemplos

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

En JavaScript, en este sitio o en un servidor:

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 metodología explica cómo se hacen los recuentos.

A monkey typing on a laptop