Skip to content

Script awk : mkl2gpx

2 août 2013

Je fais de la capture de parcours avec OSMtracker.
Les fichiers obtenus sont au format XML GPX. J’ai trouvé une série d’outils me permettant de réaliser des tracés et quelques statistiques. Et je saisie le cas échéant les chemins manquant dans Open Street Map (OSM!).

Lors d’une de mes sorties, c’est un ami qui a réalisé la capture GPS. Le fichier obtenu est un KML, aussi en XML.
En regardant le contenu, c’est la même chose que le GPX écrit différemment.
Du coup, j’ai réalisé ce petit script pour réaliser le travail.

L’unique astuce du script est

 FS = "[> <]" 

qui permet d’avoir le signe > et < en séparateur de champ.

BEGIN {
  print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
  print "<gpx xmlns=\"http://www.topografix.com/GPX/1/1\" version=\"1.1\" creator=\"KML convertor\" 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 \">"
  print "	<trk>"
  print "		<name>"FILENAME"</name>"
  print "		<trkseg>"
  FS = "[> <]"
  capture  = 0
  DEBUG = 0
  reduce = 2
  count = 0
}

( $2 == "gx:Track" ) {
  capture = 1
  next
}

/when/ {
  time = $3
  if(DEBUG){
    for(i = 1; i <= NF; ++i) {
      printf("%s %s  :  ", i, $i)
    }
    printf("\n")
  }
}

( /gx:coord/ && capture == 1) {
  lon = $3
  lat = $4
  alt = $5
  count ++
  if( count == reduce ) {
    print "			<trkpt lat=\""lat"\" lon=\"" lon "\">"
    print "				<ele>"alt"</ele>"
    print "				<time>"time"</time>"
    print "			</trkpt>"
    count = 0
  }
  if(DEBUG){
    for(i = 1; i <= NF; ++i) {
      printf("%s %s  :  ", i, $i)
    }
    printf("\n")
  }
  next
}




END {
  print "		</trkseg>"
  print "	</trk>"
  print"</gpx>"
}

Pour l'utiliser :

awk -f kml2gpx.awk in.kml > out.gpx
One Comment leave one →
  1. yoko permalink
    3 août 2013 9 h 31 mi

    Simpas (il faudra que j’essai le FS= »[> <]"), pour le script en lui même tu peut mettre le shaban #!/usr/bin/awk -f c'est plus pratique je trouve.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :