lunes, 4 de febrero de 2008

Estado del arte del formato GPX

En esta ocasión vamos a hablar de un formato del que cada vez se oye hablar más en el mundillo de la geolocalización: GPX. He aquí un pequeño estudio de dicha tecnología que hemos elaborado entre Carlos Tejo y yo.

Qué es GPX

El formato GPX [3] (GPS eXchange format) es un esquema XML para la transferencia de datos entre aplicaciones GPS. Es un formato abierto. Con dicho formato es posible la descripción de:
1. puntos de interés (POI’s)
2. rutas (routes)
3. recorridos (tracks).

La versión 1.0 de GPX es del año 2002. El GPX Schema 1.1 es el que actualmente está usándose, y data de Agosto de 2004. GPX se considera un estándar XML de facto para el intercambio de datos GPS.

Uso del formato GPX

Actualmente, el formato GPX como tal es usado por el navegador Garmin para los datos que usa. En cambio, TomTom está usando un formato propio, ov2. Sin embargo, TomTom permite exportar sus rutas en el formato GPX. Navman, por su parte, usa el formato CSV para sus datos GPS. Por lo tanto, se puede considerar que GPX está poco a poco convirtiéndose en un estándar aceptado por las grandes marcas de navegación GPS [2].
Existen varios programas para pasar de un formato a otro, destando GPSBabel [4].

GPX adaptado al HCI-RG

Para las aplicaciones que se están llevando a cabo en el seno del HCI-RG, debemos buscar un tipo de ficheros de entrada/salida que cubra todas las necesidades y que sean lo más estándar posible. En este sentido, estamos tratando de buscar la mejor forma de adaptar GPX a nuestros intereses.

Para empezar, lo primero de todo es explicar un poco más en profundidad el formato GPX. Un archivo GPX puede definir tres cosas:
- Lista de waypoints <wpt>
- Lista de routes <rte>
- Lista de tracks <trk>


Además, se pueden añadir información mediante y (hablaremos con mayor profundidad más adelante)

¿Qué diferencia hay entre un Track y una Ruta?
Una Ruta es el camino en línea recta que hay que seguir para ir desde un Waypoints a otro y desde éste al siguiente y así sucesivamente hasta alcanzar el último punto. Un Track está formado por una sucesión de puntos de Track, normalmente próximos entre sí, que representan el camino que hay entre un punto de partida y otro de llegada. Un Track no es una línea recta aunque está formado por pequeños segmentos de líneas rectas uniendo los distintos puntos que lo forma.

¿Qué diferencia hay entre un punto de Track y un Waypoint?
Aunque un punto de Track y un Waypoint representan en ambos casos una localización, un Waypoint tiene nombre, comentarios, el icono para su representación, etc., mientras que un punto de Track es anónimo y no contiene este tipo de información. Un Waypoint representa una posición significativa mientras que un punto de Track no deja de ser un simple punto en el camino.

A continuación se muestran un fichero de ejemplo basado en un waypoint, y la explicación de sus elementos:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx
xmlns="http://www.topografix.com/GPX/1/1" creator="byHand" version="1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<metadata/>
<wpt lat="39.921055008" lon="3.054223107">
<ele>12.863281</ele>
<name>Cala Sant Vicenç - Mallorca</name>
<cmt>lovely place</name>
<des>Beach with palms</des>
<sym>Beach</sym>
<link>http://www.calasanvincen.com</link>
<type>Leisure place</type>
</wpt>
</gpx>


La explicación del lenguaje de maracdo anterior es la siguiente y otros elementos que podrían aparecer es:

- <wpt>Indica que se va a describir un WayPoint. A dicho waypoint hay que darle una posición, que se usará para su ubicación en los mapas. Esta localización se le da por medio de los atributos lat y lon (obligatorios) que indican la latitud y longitud del punto de interés. Dichas propiedades son obligatorias en la definición de waypoint. Estos valores están representados por medio de grados decimales según el sistema de medidas WGS84 [1].
- <ele>Indica la elevación (en metros) del punto de interés. Propiedad opcional.
- <name>Es el nombre del punto de interés. Esta propiedad también es obligatoria.
- <cmt>Son comentarios que se pueden incluir acerca del punto de interés. Propiedad opcional.
- <desc>Es la descripción del lugar. Opcional.
- <sym>Es la palabra que identifica al punto de interés como un tipo de POI. Propiedad opcional.
- <link>Es un link que contiene algo relacionado con el waypoint. Opcional.
- <type>Es una palabra que define un tipo. Opcional.
- <extensions>Es un tag para agregar información acerca del waypoint. Las extensions son opcionales. Para nosotros, este punto puede ser muy importante, pues se podrá agregar informaciones que necesitemos, y que no contempla el formato GPX como tal en la definición de waypoints, tracks o routes.

Un ejemplo del uso de será el siguiente:


<extensions>
<gpxx:WayPointExtension xmlns:gpxx="http://www.garmin.com/xsd/GpxExtensions/v3">
<gpxx:Address>
<gpxx:StreetAddress>dirección</gpxx:StreetAddress>
<gpxx:City>ciudad</gpxx:City>
</gpxx:Address>
<gpxx:Categories>
<gpxx:Category>categoría</gpxx:Category>
</gpxx:Categories>
</gpxx:WayPointExtension>
</extensions>



En este ejemplo, se incluye mediante la extensión la categoría del waypoint.

Del mismo modo que se define un punto, se pueden definir tracks or routes, que no son más que una combinación de waypoints, aunque con nomenclatura propia.

Vocabulario común

Buscando un poco por la red, llegamos al proyecto OSM (OpenStreetMap) que es un proyecto abierto de mapeo en la web. Este proyecto puede interpretar archivos GPX para representar los datos que se muestran en los mapas. Lo interesante de dicho proyecto, es que estandarizan una serie de “features” o palabras para referirse a diferentes lugares / POI’s. Con esto y un vocabulario que debemos definir nosotros para adecuarlo a nuestras necesidades podríamos llegar a encontrar el formato de archivo necesario para nuestras aplicaciones.

Beneficios del formato GPX

- Permite el intercambio entre un cada vez mayor número de programas para Windows, MacOS, Linux, Palm y PocketPC.
- Puede convertirse a cualquier otro formato utilizando una simple página web o programa conversor.
- Está basado en el estándar XML, por lo que muchos de los programas que se utilizan normalmente pueden leer archivos GPX (p.e. Microsoft Excel u OpenOffice).
- Permite el desarrollo de nuevas características para utilizar los datos de nuestros receptores GPS.
- Ampliamente soportado por los programas de GPS [2]

Glosario

Waypoint: punto de interés, POI
Route: ruta
Track: recorrido, rastro

Referencias

[1] http://en.wikipedia.org/wiki/WGS84
[2] http://www.topografix.com/gpx_resources.asp
[3] http://www.topografix.com/gpx.asp
[4] http://www.gpsbabel.org/

6 comentarios:

fidel dijo...

Está bastante clara la explicación de GPX, lo único que podría decir es que incluiría algún programilla más en lo de vocabulario común, como por ejemplo : http://www.geovative.com/
que lo que hace es lo contrario a OMS, te salen mapas y se seleccionan los waypoints con sus imagenes y sonido y al final puedes gurdarlo como GPX, descargándotelo de la propia página, puediendo usarlo incluso en nuestras aplicaciones.

Carlos Tejo dijo...

Hola Fidel,
la idea de crear/usar un vocabulario comun es para que todos los proyectos denominemos, por ejemplo, a una fuente de una manera única [type:fountain] (es decir, definir el tipo fuente) y no que uno lo llame fuente, otro fountain y otro fuentona (el nombre del POI es dufurente a su tipo).
¿Por donde va tu duda?

Lastra dijo...

Hola Fidel, el vocabulario común creemos que es necesario por lo que comenta Tejo, que sino no vamos a conseguir unificar los documentos de entrada para todos.

Anónimo dijo...

Hola, no es ninguna duda lo que tengo, solo es una sugerencia, pues una vez determinado el lenguaje a usar de forma común, se necesitará alguna manera de poder crearlo y una de las maneras de ver cual es una buena forma será viendo las diferentes herramientas que sirven para ello, y una de ellas es la que os había pasado.
Más que nada es para que veais una herramienta que genera un archivo GPX de unos datos introducidos por un usuario, pudiendo comparar como trabaja esa aplicacion con diferentes elementos y como los trata además de poder comprobar la interacción con el usuario.

Saludos.

Anónimo dijo...

Mi consulta es la siguiente, mi GPS me da los datos en formato TXT delimitado por comas (latitude,longitude,date,name) uando paso a GPX usando el GPSbabel , me cambia la fecha y me pone cualquiera (formato DD-MM-AA-HH:MM) creo que debe ser un tema del formato al guardar el TXT como CSV, me esta volviendo loco por lo cual se aceptan sugerencias de gente como ustdes.

Javier dijo...

Mi consulta es la siguiente, mi GPS me da los datos en formato TXT delimitado por comas (latitude,longitude,date,name) uando paso a GPX usando el GPSbabel , me cambia la fecha y me pone cualquiera (formato DD-MM-AA-HH:MM) creo que debe ser un tema del formato al guardar el TXT como CSV, me esta volviendo loco por lo cual se aceptan sugerencias de gente como ustdes.