Visualización y reproducción de trayectorias GPS en el navegador. Es un proyecto didáctico del TecNM · Instituto Tecnológico de Tijuana para prácticas de GPS, IoT, telemetría, programación, sistemas distribuidos y análisis de datos de vehículos.
- Importa CSV, GPX, KML, GeoJSON y NMEA 0183 (arrastrar y soltar o selector de archivos).
- Colorea la ruta por velocidad y exporta la trayectoria validada a GeoJSON.
- Ruta (polilínea), puntos, flechas de dirección, inicio y destino, y popup por punto.
- Reproducción animada con velocidad de 0.5x a 60x, barra de tiempo y panel de telemetría.
- Distancia por Haversine, duración, velocidad máxima y promedio, y selector para archivos con varios vehículos.
- Validación con mensajes amigables: archivos vacíos, coordenadas inválidas o fuera de rango, timestamps, duplicados y desorden.
- Los datos GPS se procesan localmente en el navegador, sin backend.
| Estándar | Organismo | Uso en el proyecto |
|---|---|---|
| WGS 84 (EPSG:4326) | NGA / IOGP | Sistema de referencia de todas las coordenadas: latitud de −90 a 90 y longitud de −180 a 180 |
| GPX 1.1 (y 1.0) | TopoGrafix | src/parsers/gpxParser.js: trkpt, rtept y wpt; <speed> en m/s |
| KML 2.2 (OGC 07-147r2) | OGC | src/parsers/kmlParser.js: Point, LineString, ExtendedData y la extensión gx:Track de Google |
| GeoJSON (RFC 7946) | IETF | src/parsers/geojsonParser.js: orden [longitud, latitud, altitud] |
| NMEA 0183 | NMEA | src/parsers/nmeaParser.js: sentencias $--RMC (posición, fecha, nudos) y $--GGA (altitud), con checksum |
| CSV (RFC 4180) | IETF | src/parsers/csvParser.js: comillas dobles y campos con delimitador |
| ISO 8601 | ISO | src/utils/timestamps.js: fecha y hora con o sin zona horaria |
| Web Mercator (EPSG:3857) | IOGP | Proyección de las teselas del mapa base (Leaflet + OpenStreetMap) |
| ODbL 1.0 | Open Data Commons | Licencia de los datos de OpenStreetMap; requiere atribución |
La distancia se calcula con la fórmula de Haversine sobre una esfera con el radio medio terrestre de la IUGG (6371.0088 km).
python3 -m http.server 8080 # http://localhost:8080/?demo
# o
docker compose up -d --build # http://localhost:8080/?demoHay que servir el sitio por HTTP: abrir index.html con doble clic no funciona porque los módulos ES lo impiden.
sh scripts/package.sh # → dist/public_html/ y dist/public_html.zipSube el contenido de dist/public_html/ a public_html/. No requiere Node.js, PHP ni base de datos.
npm test # Node ≥ 18, sin dependenciasLas pruebas de los parsers GPX y KML se ejecutan en el navegador en http://localhost:8080/tests/browser.html.
Mapa © colaboradores de OpenStreetMap · Leaflet (BSD-2). La ruta demo usa coordenadas sintéticas.
MIT © 2026 René Solis R. · Leaflet se distribuye con su propia licencia BSD-2 (src/assets/vendor/leaflet/LICENSE).