martes, 1 de mayo de 2018

¡Mira por dónde pisas! (con MATLAB/OCTAVE)

Qué encontrarás en esta entrada?
  • Análisis en OCTAVE de un ".gpx".

Algunos de vosotros quizás conozcáis mi oscura obsesión por hacer grafiquitas de todo en MATLAB (u OCTAVE). Tras la entrada del otro día, no he podido resistirme a intentar pasar los datos al ordenador y analizarlos por mi cuenta. En esta entrada os doy unas pinceladas de cómo lo he hecho y os muestro algunos resultados.


El primer paso, es hacer que un archivo ".gpx" sea inteligible para MATLAB/OCTAVE. Después de ver algún módulo para OCTAVE (que es lo que tengo ahora mismo instalado en el ordenador), no conseguí cargarlo por problemas de dependencias... así que "no me compliqué", y me hice mi propio script en Shell de Linux que leyese el ".gpx" como un archivo de texto, extrajese los datos de latitud, longitud y elevación, y crease con ellos un archivo ".m" que pudiese ejecutar en MATLAB/OCTAVE.

Izquierda: datos originales de un ".gpx". Derecha: archivo ".m".

Una vez con los datos en un ".m" estamos listos para jugar. En la primera imagen vemos una especie de cuadro de mandos. Arriba a la izquierda tenemos el mapa de la ruta sobre una maya de líneas que representan la superficie terrestre. A su derecha, tenemos un globo terráqueo en el que se representa el punto donde se localiza la ruta. Bajo estas, se encuentra el clásico perfil de altitud, y más abajo, el perfil de velocidades.

Para esta prueba he utilizado los datos de GPSies de mi última ruta.



Podemos utilizar, por tanto, estos datos para comparar los resultados. Vemos que la forma de la ruta es similar (si bien, en mi versión la estética es un poco más minimalista, puesto que no muestra un mapa debajo). Sin embargo, lo que sí incluye es la altitud, de manera que representa la ruta en 3D, y calcula las distancias teniendo en cuenta las subidas.


Arriba se muestra el perfil de la ruta. A la derecha, los dos cerros más elevados que el resto. La línea gris del suelo representa la superficie plana a la altura del mar. Se observa también que la curvatura de la tierra a estas escalas es demasiado pequeña como para suponer una corrección significante en la medida de las distancias.

Y hablando de curvaturas, se ha tenido en cuenta la corrección del elipsoide. La tierra es más achatada por los polos que por el ecuador, por lo que no es una esfera, sino un "elipsoide oblato". Las distancias de la ruta se calculan basándose en la posición que tienen sobre la superficie terrestre dada su latitud, longitud y elevación, por lo que es importante conocer con exactitud el radio terrestre en cada punto. Para ello me ha sido muy útil esta respuesta en Xataka Ciencia, sin embargo, a la hora de implementarlo punto a punto, suponía un esfuerzo de computación considerable, por lo que se ha tomado un valor escalar constante del radio de La Tierra para toda la ruta basada en la latitud inicial.


Con todo, esto el resultado es... un poco pobre.


Y es que aún dista un poco de los datos de GPSies, que sin lugar a dudas son más aproximados a los reales:

  • Distancia plana: 29,77 Km frente a 32,31 Km de GPSies.
  • Distancia con elevación: 29,98 Km (+220m) frente a 32,51 Km (+200m) de GPSies.
  • Tiempo: Respecto al tiempo, he de decir que los datos que exporta GPSies después de transformarlos desde OruxMaps (como hablábamos el otro día) son un poco raros, con lo cual falla cualquier medida derivada, como las velocidades. Esto sale algo mejor si utilizamos el archivo original de OruxMaps.
  • Elevación: Los datos de elevación máxima, mínima y su diferencia son correctos. Se discrepa en la subida acumulada, que sale mayor que en GPSies, pero que parece que en este caso su cálculo tampoco está muy claro, porque ofrecen dos formas de hacerlo, una de ellas experimental.


Por último, he analizado el intervalo de muestreo. Mientras que en el archivo original de OruxMaps el intervalo de muestreo es de 2 segundos salvo errores en la precisión del GPS (según mi configuración actual), en el caso de GPSies (que no es más que una adaptación del archivo original de OruxMaps) es una auténtica orgía de valores:


Hay que tener en cuenta esto ya que es habitual hacer estimaciones pensando que el intervalo de muestreo es contante. En este caso, esas aproximaciones se alejarán notablemente de la realidad.

Y hasta aquí mi primer contacto con el análisis de datos ".gpx" en MATLAB/OCTAVE. No sé vosotros, pero yo he echado la mañana con esta tontería :p...

No hay comentarios:

Publicar un comentario

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.