viernes, 22 de mayo de 2015

Conversión de TRK a GPX.



El otro día me encontré con que una página web permitía descargar un fichero para GPS en formato TRK, vía romana del Iregua. Otro tipo mas de colocar los tres o cuatro valores de los puntos de una ruta en un fichero. El fichero TRK comienza con una cabecera a continuación de cual hay una línea por punto.
Estructura de la línea de puntos:
T  A 42.17672892ºN 2.70418888ºW 17-JAN-09 09:01:37.000 s 1065.300049 0.000000 0.000000 0.000000 0 -1000.000000 -1.000000 -1 -1.000000 510
Los valores que nos interesan son :
  • Columna 3: Latitud.
  • Columna 4: Norte o sur.
  • Columna 5: Longitud.
  • Columna 6, Este (E) u oeste (W)
  • Columna 7, Día de la fecha, en ingles.
  • Columna 8, Hora del día.
  • Columna 10, Altitud, en metros.
Proceso de conversión:

  • Abrimos con el editor de texto el fichero TRK. En realidad,como siempre, aunque e puede trabajar directamente con el fichero original lo suyo e copiar el fichero TRK a un fichero TXT y trabajar con este último.
  • Seleccionamos y copiamos las líneas de los puntos. Como hay un carácter un poco problemático de usar en Excel, el signo de grado (º), resulta mas cómodo eliminarlo con el editor de textos, sustituyendolo por un espacio.
  • La hora viene con unos decimales al final (09:01:37.000). Esto decimales (.000) no se deben sustituir con el editor, estos caracteres se pueden dar en otros campos.
  • En un libro excel abierto pegamos las líneas a copiar.
  • Seleccionamos la columna recién pegada.
  • Buscamos en cualquiera de las líneas el carácter "º".  Esto no sería necesario si lo hemos sustituido anteriormente por un espacio.
  • Lo seleccionamos y copiamos.
  • En excel vamos a Datos->Texto en columnas. Seleccionamos delimitados. Seleccionamos como delimitadores espacio y otro. En el recuadro de otro pegamos el carácter "º".
  • Seleccionamos las diez primeras columnas y las importamos como texto, no como general, es importante.
  • Desechamos el resto de las columnas. Nos quedan n líneas de como la de abajo.

T A 42.17672892 N 2.70418888 W 17-JAN-0909:01:37.000 s 1065.300049










  • Sustituimos, con Editar->Reemplazar la fecha, en este caso 17-JAN-09, por una fecha con nuestro formato habitual (17/01/2009) . En este caso he reemplazado Jan por 01. Este cambio también se puede hacer con el editor de textos. 
  • Completamos la transformación de la fecha en las columnas N y M. Si la fecha del día está en la columna G escribimos en M la siguiente formula =IZQUIERDA(H1;8)+G1. 
  • En N escribimos =SUSTITUIR(M1;",";"."). Con esto tenemos la fecha convertida a un número en formato anglosajón, punto por coma.
  • Si el punto es oeste (W) debe aparecer la longitud con signo negativo. Lo mismo si el punto fuese un punto sur la latitud sería negativa. Para calcular estos signos escribo en K =SI($D1="N";"";"-") y escribo en L =SI($F1="E";"";"-"). Este cambio se puede hacer con el editor de textos, cambiando ºN por un espacio, ºS por un " -", ºW por " -" y ºE por un espacio.
  • En O ponemos la siguiente fórmula:="<trkpt lat="&CARACTER(34)&K1&C1&CARACTER(34)&" lon="&CARACTER(34)&L1&E1&CARACTER(34)&" >"
  • En P ="<ele>"&J1&"</ele>".
  • En Q ="<time>"&TEXTO(M1;"aaaa-mm-ddTHH:MM:SSZ")&"</time>"
  • Y por último en en R =O1&P1&Q1&"</trkpt>"
  • Arrastramos, llevado las formulas a todas las líneas.
  • Abrimos MapSource. Nos aseguramos de estar trabajando con el mismo  datum que el del fichero TRK. Lo ideal es trabajar en ambos ficheros con el datum  WGS84.
  •  Creamos MANUALMENTE un track ,con un par de puntos vale. Lo salvamos como GPX.
  • Editamos con el editor de textos ese fichero. Buscamos los puntos creados manualmente. Están limitados por un <trkseg> y un </trkseg>:
  •     <trkseg>
  •       <trkpt lat="40.5514303" lon="-4.0899551">
  •         <ele>845.8554688</ele>
  •       </trkpt>
  •       <trkpt lat="40.4400392" lon="-3.8991790">
  •         <ele>724.9843750</ele>
  •       </trkpt>
  •     </trkseg>
  • Mantenemos  <trkseg> y el </trkseg> y borramos los puntos.
  • Copiamos la columna R del libro excel entre <trkseg> y el </trkseg>
  • Salvamos y comprobamos que todo ha salido bien.
  • Completamos nuestro trabajo con MapSource.