Mas GPS, XMap HH

      No Comments on Mas GPS, XMap HH

Ultimamente estoy en estado de hiperactividad mental y eso me está haciendo meterme en un montón de proyectos a la vez. Claro, así no hay quien termine nada, y por tanto no he tenido mucho que escribir.
Entre otras cosas estoy liadisimo con el proyecto de modding de la render farm (un blade server de 6 hojas de fabricación casera) para Zinkia, el soporte para estudios de usabilidad en móviles para Dnextep (que está casi acabado y que pondré aquí solo si me dan permiso :), la programación de un módulo en PHP para presentar el tiempo que envia en un feed XML The weather channel para incluir en la página de mi grupo ciclista y también he estado trabajando en la lectura e interpretación de los datos de GPS de otro tipo de archivo, los que crea el XMap HandHeld Edition, para lo que he tenido que volver a realizar una labor de ingenieria inversa.

El XMap crea logs de los puntos por los que pasa el GPS y se puede configurar cada cuanto tiempo toma las muestras, cosa que el GPSPilot Tracker 5.05 no hace (el 5.5 si lo hace, pero recordemos que solo funciona para Palm V y yo tengo la PalmIIIx). El Xmap no me presenta el mapa como el GPSPilot, por que usa mapas vectoriales en vez de raster y no tengo mapas vectoriales de las zonas que frecuento (España), pero para el propósito que lo utilizo no lo necesito, ya que solo quiero grabar la ruta y normalmente ni siquiera miro la Palm en todo el trayecto.
El caso es que tuve que volver a bucear en las profundidades de los archivos PDB. Para hacerme la tarea mas fácil grabé un trayecto en tren de la línea C-5 (si el mismo cercanias que uso todos los dias y que pasa por Atocha) entre El soto y Cuatro Vientos.
Saqué el xPDB y me puse a escudriñar los registros del PDB.
El archivo, aparte de los datos propios de la cabecera del PDB, contiene 10 registros que forman la cabecera y que son siempre 10, y luego un numero de registros igual al numero de puntos que han sido guardados durante la sesión de captura del log del GPS.
De la cabecera he conseguido descifrar los 3 primeros registros, los mas importantes, que contienen las latitudes y longitudes de los puntos del log, guardados, eso si, de una forma muy peculiar. Cada valor de latitud y longitud va almacenado en un long, como es habitual, de 4 bytes en Big Endian pero con la peculiaridad de que los datos del primer punto se encuentran en las primeras posiciones del primer registro, el segundo punto esta en las primeras posiciones del segundo registro, el tercer punto en las primeras del tercero, y el cuarto punto, está en las segundas posiciones del primer registro otra vez, y así sucesivamente.
Esto fue lo que mas trabajo me costó averiguar, ya que en un principio yo hacía la lectura secuencial de todas las latitudes y longitudes y me salian valores del recorrido un tanto extravagantes, como que desde el soto a cuatro vientos hay 50Km (en realidad solo hay 10) y que el tren de cercanias viajaba a una velocidad media de 192 Km/h, lo cual era bastante gracioso.

Los 7 valores de los 7 registros siguientes no se aun lo que son, aunque no parecen demasiado relevantes. Se trata de registros que contienen un solo byte.
A continuación vienen los registros de cada punto del trayecto, cada uno conteniendo los siquientes datos:

Tiempo desde el ultimo punto en segundos (int)
Altitud en pies (int)
Rumbo en grados (int 0-360)
Velocidad en millas por hora (int)
Fecha y hora en formato palm (long)

Ciertos datos son un poco redundantes, como la velocidad o el tiempo transcurrido, ya que la primera se puede calcular a partir de las latitudes y el tiempo, y la segunda la sacamos de la diferencia de las fechas de los puntos, pero en fin, sus razones tendrán para hacerlo así.
Como ya tenia hecho el programa para exportar a OZI los tracks del GPSPilot, no me ha costado nada exportar los tracks de XMap.

Para terminar este rollo infumable pongo una muestra de lo que se puede sacar con el OZIExplorer a partir de una sesión grabada en una salida en bici por la sierra de Madrid.


Mapa ruta

Leave a Reply

Your email address will not be published. Required fields are marked *