jueves, 10 de noviembre de 2011

Ficheros Gpx y ficheros PLT. Conversión de Plt a GPX.

Para los que además de MapSource instalado tienen Oziexplorer  esta conversión se realiza directamente desde cualquiera de las versiones de Oziexplorer que admitan la importación de ficheros GPX. Para convertir de camino (track) a waypoints o a ruta (en GPX o en PLT) yo no he encontrado nada, me lo tuve que hacer, programando, pero para aquellos interesados en Excel y GPS este puede ser un ejercicio interesante.

El trabajo de conversión que realizo a continuación en términos EXCEL es correcta independientemente del DATUM  que utilice el fichero PLT.  Si el DATUM que utiliza el fichero PLT es distinto de WGS84  a la hora de utilizar el GPS se produce un error que puede ser de cientos de metros.

El fichero Plt es un fichero de texto, editable con cualquier editor de textos. Es un formato propio de Oziexplorer. El fichero GPX también es un fichero de texto editable con cualquier editor de texto. Tanto uno como otro constan, basicamente, de una cabecera y de la localización de los puntos, coordenadas, altura, fecha y hora del momento en que se tomo el punto.

Fichero PLT:

OziExplorer Track Point File Version 2.1
WGS 84
Altitude is in Feet
Reserved 3
0,2,16711680,PuertoCanenciaValdemancoReal.gpx Convertido a PLT                 ,1,0,0,0
1920


40.8711260  , -3.7647177  ,0, 5794 , 40531.3771180556 , 2010-12-19 , 09:03:03
40.8710805  , -3.7647516  ,0, 5782 , 40531.3771759259 , 2010-12-19 , 09:03:08
40.8710777  , -3.7647554  ,0, 5768 , 40531.3771875 , 2010-12-19 , 09:03:09
40.8710748  , -3.7647584  ,0, 5754 , 40531.3771990741 , 2010-12-19 , 09:03:10
40.8710575  , -3.7647747  ,0, 5744 , 40531.3772106481 , 2010-12-19 , 09:03:11

En donde los dos primeros campos son la latitud y la longitud. El tercero (0) se utiliza si se divide el track, el cuarto campo es la altitud en pies y los otros campos son la fecha y la hora.

Fichero GPX



Formato punto del camino en GPX`
      <trkpt lat="40.8282234" lon="-3.8302293">
        <ele>1643.0302734</ele>
        <time>2011-10-09T07:57:34Z</time>
      </trkpt>


Nueva versión de esta conversión:

Es conveniente tener instalado y ver los resultados de la conversión con OpenOffice.

Funciones utilizadas:
Entero()
Espacios()
Texto
Uso de nombres.
De texto a datos.
El primer paso es pasar los datos del fichero de texto a la hoja excel, solo los datos, sin cabecera. En este caso lo hice con un copia-pega, aunque quizas debí importar esos datos directamente desde el fichero de texto. Una vez todos los datos en la columna A los pasé, mediante la opción de texto a datos, cada uno a su columna. Además los pase todos ellos como campo tipo texto con el fin de hacer las cosas paso a paso.
Las coordenadas, campos 1 y 2 (columnas A y B) se van a utilizar tal cual están, números separados por punto. La altura se tiene que pasar de pies a metros (aprox. pies*o,28). Esta multiplicación es una aproximación por lo que en el resultado podemos redondear, prescindir de los decimales. El primer campo fecha (considerado texto), números separados por un punto, hay que pasarlo a numérico (en notación española, en mi caso). Utilizo para ello la opción de texto en columnas, primero selecciona la columna a convertir,Datos->Texto en columnas, como solo es una columna, Ancho fijo, avanzamos hasta el paso tres y pulsamos el botón Avanzadas. Cambiamos para el separador decimal la coma por el punto  y para el separador de miles  el punto por la coma. Damos destino a ese cambio (el resultado puede sustituir a los datos originales) y ya tenemos el dato convertido a numérico. Calculo la altitud en metros, redondeo y coloco las etiquetas correspondientes (k) con :

="<ele>" & ENTERO(I2*PM) & "</ele>"

A la fecha con formato GPX y sus correspondientes etiquetas le doy forma (L) con la función texto y el formato de fecha correspondiente:

 ="<time>" & TEXTO(J2;"aaaa-mm-ddThh:mm:ssZ") & "</time>"

Las coordenadas y sus etiquetas son la cocatenación de valores de texto.

El punto completo de GPX incluye saltos de línea. Los saltos de línea son los códigos ASCII 13 (CR) y 10 (LF), retorno de carro y avance de línea de las ya muy antiguas (casi olvidadas) máquinas de escribir. Según el editor de textos que se utilice se puede notar la diferencia, o no. Se pueden encontrar ficheros de texto con ambos caracteres al final de la línea , o con uno solo de ellos. Realmente no suele dar problemas, salvo la aparición de líneas en blanco.

Para utilizar comodamente los caracteres  que necesito incluir mediante la funcion CARACTER(), les doy nombre (insertar->Nombre->definir):

CR =CARACTER(13)
LF=CARACTER(10)
CRLF=Cr & LF
COM (de comillas) =CARACTER(34)
PM (de pies a metros) =0,28
En las columnas con los puntos completos los utilizo:

=$M2 & CRLF& $K2 & CRLF& $L2 & CRLF& "</trkpt>"

Para poder utilizar estos datos en un fichero GPX editamos un fichero GPX con cabera y cola, copiamos (sin la cabecera o título de la columna excel)  y pegamos los puntos en el sitio correspodiente del fichero GPX y ya (si lo hacemos bien)  podemos utilizarlo, por ejemplo, en MapSource. Esta copia se hace mejor abriendo el fichero XLS con Open Ofice y los ficheros de texto con WordPad.

Ficheros GPX preparados.

No hay comentarios:

Publicar un comentario