Cuarta entrega de como convertir un fichero tipo KML (de Google herth) a fichero tipo GPX (Garmin). KML presenta un código demasiado abierto para hablar de certezas en todos sus formatos. Lo único que siempre he encontrado en los ficheros KML son, hacia el final del texto del fichero, las coordenadas de todos los puntos, sin fecha, encuadradas entre las etiquetas <coordinates> y </coordinates>. A su vez, en algunos ficheros estas coordenadas pueden aparecer de una en una en medio del texto del fichero KML.
En este caso un compañero de correrías montañeras, me mando un fichero KML en el que las coordenadas aparecen, además de al final del fichero, de una en una en medio del fichero, precedidas de la fecha y hora del momento en el que se tomó el punto.
En este caso caso, ya que las tengo, me interesa incorporar la fecha/hora del punto al fichero GPX.
Primero, como siempre, por precaución y por facilitar el trabajo, copié el fichero KML en otro con extensión TXT. A partir de este momento se puede trabajar con cualquier editor de textos, incluido el bloc de notas (notepad) de Windows.
Lo primero es identificar los distintos campos que queremos incorporar. En nuestro caso encontramos:
<TimeStamp><when>2017-03-12T09:34:18Z</when></TimeStamp>
<styleUrl>#track</styleUrl>
<Point>
<coordinates>-3.642419,41.230943,965.91</coordinates>
</Point>
Como vemos, los datos que nos interesan, están situados en distintas líneas. Pasar a una solo línea aquellos parámetros que en principio vienen en varías líneas se puede hacer de varias maneras, aunque alguna de ellas funciona en windows XP pero no funciona en windows 7.
En este caso decido evitar esos saltos de línea con código html. Edito la copia del fichero kml y sustituyo aquellos caracteres o conjunto de caracteres que posteriormente puedan confundirse por mi código por espacios o por nulos:
- <br> por un nulo. Normalmente no debe haber ninguno, pero por si acaso, los elimino.
- ; por un nulo.
Preparo el fichero para llevar los datos a excel.
- Introduzco un salto de línea delante de <when>. Reemplazo <when> por <br><when>.
- Reemplazo <when> por ; y </when> por ;. Esto deja cada fecha separada por puntos y comas.
- Reemplazo <coordinates> por ; y </coordinates> por ;. Esto deja cada coordenada separada por puntos y comas.
- Salvamos como htm.
Llevo los datos a excel:
- Hacemos doble click sobre el fichero htm. El fichero se abrirá con el nuestro navegador de internet (IExplorer o google chrome o ...). Como es un fichero extenso tarda un poco.
- Copiamos el texto que aparece en el navegador.
- Pegamos ese texo en una hoja excel.
- Eliminamos el contenido de la primera línea.
- Ya en Excel, con texto en columnas seleccionamos, de todo lo que hemos importado, los campos útiles, que son fecha y hora y coordenadas con altura.
- Seleccionamos texto en columnas, delimitados, y como delimitador,punto y coma.
- La primera columna la saltamos, la segunda (fecha y hora) la importamos como texto, la tercera no la importamos, la cuarta están las coordenadas y la altitud la importamos como texto y el resto no las importamos.
- Es importante importarlas como TEXTO.
- Quedan, por tanto, dos columnas, fecha y coordenadas.
- Repetimos el proceso texto en columnas para la columna B.
- En este caso el carácter de delimitación es coma, en vez de punto y coma, e importamos los tres campos campos como texto.
- En la columna e, celda e1, colocamos la siguiente fórmula:
="<trkpt lat=" &CARACTER(34) & C2 &CARACTER(34) & " lon=" & CARACTER(34)& B2 &CARACTER(34)& "><ele>" & D2 & "</ele><time>" & A2 & "</time></trkpt>"
Arrastramos la fórmula hasta el final de la columna. Editamos Modelo.gpx, copiamos la columna e y pegamos los datos en Modelo.gpx entre las líneas <trkseg> y </trkseg>. Guardamos como y le damos el nombre que queramos darle.
'**********************************************************************************
No solo de windows vive el hombre. Como trabajar los ficheros KML directamente en linux:
- Abrimos un terminal.
- Con grep 'when' x.kml|cut -d'>' -f3|cut -d'<' -f1|cat -n>when.txt pasamos las fechas al fichero when.txt
- Con grep 'coordinates' x.kml|cut -d'>' -f2|cut -d'<' -f1|cat -n>coor.txt pasamos las coordenadas al fichero coor.txt.
- Con join when.txt coor.txt>unidos.txt
- Pasamos a una hoja de cálculo de open office o de libre office y procedemos como lo explicado anteriormente para windows.
No hay comentarios:
Publicar un comentario