Conversion inverse : KMZ -> IGC ?

J’aimerai pouvoir rejouer les traces de parawing avec IGC GE Replay (http://ywtw.de/igcsimen.html).
Ce logiciel ne lit que le format igc.
Il me faut donc effectuer la conversion inverse : récupérer un format igc avec la trace uniquement à partir du fichier kmz mouliné.
J’ai essayé GPS Babel, GPS Dump, ITN Converter sans succès : la complexité du fichier kmz en sortie de moulinette rend cette conversion très difficile.
J’ai essayé d’alléger le fichier kmz en l’ouvrant sous Google Earth, en sélectionnant la trace du vol et en sauvegardant en kml.
Je n’ai pas eu plus de succès avec ce fichier allégé. Il est vue comme un fichier contenant 2000 traces.

Des idées ?

Question posée ici:

http://www.paraglidingforum.com/viewtopic.php?t=22183

Apparemment that’s impossible!

A partir du moment où tu as toutes les données de chaque point (latitude, longitude, altitude et heure:minutes:secondes) c’est possible de créer le fichier IGC si tu gère un minimum de programmation. Le format IGC est décrit ici : http://www.parapentiste.info/forum/le-coin-du-geek/lire-trace-gps-avec-python-t15907.0.html;msg226358#msg226358

Le soucis avec le KMZ c’est que c’est pas aussi standardisé que l’IGC, donc selon la manière dont le kmz a été créé tu peux perdre certaines infos (souvent le temps d’enregistrement). Mais dans le kmz de parawing tu as tout ce qu’il faut. Il ne reste “plus qu’à” dézipper le fichier kmz pour récupérer le kml et décoder chaque point. C’est un peu confus pour quelqu’un qui ne s’interesse qu’à la trace GPS, il faut jeter pas mal de données qui ne servent qu’à l’affichage dans google earth :

[quote]
15:35 : 983 m 28 km/h -2.8 m/s


2.07645
43.443116666667
2982
45
257.57260791603


2012-07-12T15:35:48+00:00

    <visibility>0</visibility>
    <Style>
  <LineStyle>
    <color>FFFF8400</color>
    <width>2</width>
  </LineStyle>
</Style>
<LineString>
  <tessellate>1</tessellate>
  <altitudeMode>absolute</altitudeMode>
  <coordinates>
  [b]2.07645,43.443116666667,994[/b] 2.0760333333333,43.44305,983
  </coordinates>
</LineString>
[/quote] Ca m'étonnerait qu'il existe un programme tout prêt qui soit capable de convertir du kml vers un format de trace GPS plus standard. Peut-être que Man's peut nous en dire plus sur le format kml de sa moulinette ?

Le plus simple est probablement d’aller voir si le pilote n’a pas déclaré aussi son vol à la CFD et de récupérer les igc là-bas.

Et essayer de passer par du GPX ?

En ouvrant sous GPSdump, en enregistrant en GPX, et en convertissant avec GPSbabel.

J’ai essayé, j’obtiens bien un IGC. En revanche je ne sais pas s’il est lisible par IGC replay, je suis sous Linux. Je te laisse tester à ton tour.

En fait c’est plus standard que je pensais, j’ai reussi a trouver un exemple de code en python qui m’a permis de faire rapidement un programme pour lire la premiere trace kmz trouvee sur parawing :
http://code.activestate.com/recipes/576782-calculate-distance-from-kmz-files

Et ca donne ca :
http://188.165.48.115/tmp/parawingkmz2igc.py

Je ne l’ai teste que sur un fichier kmz, il faut voir avec d’autres exemples si ca marche toujours. Je n’ai pas non plus teste si le fichier de sortie etait valide/utilisable avec IGC Flight Replay, il y a peut-etre de petits ajustements a faire. Aussi il faut savoir installer python3 et utiliser un programme python3 en ligne de commande MS-Dos.

Il faut taper ‘cmd’ dans le menu Demarrer>Executer, puis c’est un truc du genre :

C:\Mes Documents> c:\Python32\python.exe c:\dossier\du\programme\parawingkmz2igc.py "c:\dossier\du\kmz\trace.kmz" "c:\dossier\de\sortie\igc\trace.igc"

(les guillemets sont necessaires seulement s’il y a des espaces dans les nom de dossiers)

Edit: grillé par Suspente. Je savais pas que GPSdump lisait du kmz, ca veut dire que le format est encore plus standard que je pensais.

Gloups, pas tant que ça. Il lit du KML, mais vraisemblablement pas du KMZ. J’ai fait ma manip avec un KML.

Pour info, Pirk, puisque tu es sous Linux: GPSdump marche très bien sous wine.

OK, il faudra que je teste ca.

Au fait, est-ce que l’utilisation de GPSbabel est vraiment necessaire avec ta manip ? Quand je decharge une trace GPS avec GPSdump je peux sauver de l’igc directement (Ctrl+I).

Sinon, le kmz c’est une archive zip avec un fichier kml et quelques autres fichiers (surtout des icones et des images a afficher par google earth), donc il suffit de le dezipper pour extraire le kml.

Et GPSdump peut lire un fichier kml…

donc la manip est :

  • dézipper le kmz
  • lire le kml résultant avec GPSdump
  • sauvegarder la trace obtenue en IGC

C’est bien ça Fabrice et PiRK.
En faisant “Save log as…” je n’avais pas l’option IGC.
L’enregistrement en IGC se fait en cliquant un peu plus bas sur “Save log in IGC format” ou Ctrl-I: c’est encore plus simple. (Je mets la manip au cas où certains soient aussi attentifs que moi :smiley: )

Juste vérifier que l’IGC généré soit lisible avec IGCreplay.

gpsbabel fait ça sinon…

[quote]En fait c’est plus standard que je pensais
[/quote]
le kml est très bien documenté, donc tout autant standard que l’igc. C’est juste qu’il permet tellement de chose que t’as pas une bijection entre igc et kml…

Bah oui d’ailleurs ! Bizarre que Cyrille79 n’y soit pas parvenu.

Alors Pour GPSbabel: soit le soft sur le PC sinon sur le web: http://www.gpsvisualizer.com/gpsbabel/?lang=fr

Mais c’est pas aussi fun que de reinventer la roue
:canape:

Cela dit je suis content d’avoir appris a dezipper un fichier et lire du xml avec python, j’ai pas complement perdu mes deux heures.

Le temps que je vois ce fil, toutes les réponses ont été données ! :slight_smile:

Merci pour les réponses mais cependant je reste sur ma faim.

Pour le programme python, merci pour le temps de développement, cependant j’obtiens une erreur ligne 105 (file = igcf) lorsque je l’exécute avec la version pyton 2.7 de windows.

J’ai bien essayé GPS Babel et la conversion renvoie OK mais le fichier généré est illisible.

[i]gpsbabel -r -t -i kml,lines=0,points=0,floating=0,extrude=0,track=0,trackdata=0,trackdirection=0,labels=0 -f C:\Users\Cyrille\Documents\documents\parapente\carnet_de_vol\traces\parawing\tangos_23_07_12_petit_tour_du_lac\tmp\doc.kml -o igc -F C:/Users/Cyrille/Documents/documents/parapente/carnet_de_vol/traces/parawing/Traces.igc

Translation successful[/i]

Lorsque je lance IGC Flight Replay j’obtiens :
Could not read File …\Traces.igc

Pour GPS Dump lorsque je lance File -> Convert .igc files to .kml sur le fichier doc.kml (kmz dézippé) j’obtiens :
File decode error

Toute cela est assez logique étant donné les très nombeuses infos ajoutées dans le fichier kmz.
Comme dit plus haut, il faut supprimer toutes les informations supplémentaires générées par la moulinette et ne garder que les infos de la trace. C’est à ce niveau que se situe ma question. Il serait bien d’avoir une moulinette inverse ou bien de socker sur parawing les deux formats : igc et kmz.

Sinon il va falloir que chaque personne qui aimerait lire la trace sous un autre format développe la moulinette inverse dans son coin s’il a les compétences et le temps.

Il faut python 3, python 2 ne fonctionnera pas.Si tu veux vraiment utiliser python2 il y a des adaptations a faire. Celle qui cause ton erreur est que la fonction print n’a pas d’option file en python2, je crois qu’il faut mettre un truc du genre print>>igcf, “Blabla”. Mais il y aura certainement d’autres erreurs quand tu auras corrige ca.

Je met un fichier igc produit par mon programme a partir de ce fichier kmz en piece jointe, est-ce que quelqu’un peut tester si c’est lisible avec IGC Replay ? (je ne peux pas l’installer)

Bonsoir à tous,

Pour Cyrille79, dans ton dernier message tu as hélas bien résumé la situation. C’est Marc qui d’une phrase avait bien donné le ton :

[quote]C’est juste qu’il permet tellement de chose que t’as pas une bijection entre igc et kml…
[/quote]
GPSDump ne peut décoder que ses propres fichiers kml car il utilise un process d’écriture complètement différent du fichier produit par la moulinette de Man’s. ( :coucou: )

Pirk, sans avoir IGC Replay, je te confirme que ton igc est “quasiment” correct … Avec Logfly je le lis sans problème en datant la trace du 12 07 20 !. La date n’est pas au bon format. C’est DDMMYY et tu as mis DDMMYYYY. GPSDump est un psychorigide, il sort une erreur avec le fichier d’origine. Après correction GPSDump lit sans problème. Il faut juste corriger le record HFDTE dans ta génération.

La structure IGC est assez simple avec un cadre d’écriture très rigide. Si ça décode d’un côté, cela devrait gazer avec IGCReplay.

C’est corrigé, merci:

Super ça marche !
Je peux lire le fichier igc généré par ta moulinette avec IGC Flight Replay.

Je vais pouvoir rejouer les traces de parawing comme si j’y étais. C’est super.

Merci beaucoup PiRK :smiley:

J’ai fait une version avec une petite interface graphique, c’est plus dans l’esprit Windows. Normalement il suffit d’avoir python (> 3.2) et de double-cliquer sur le fichier parawingkmz2igc_gui.pyw.

Je pense que rejouer les vols de parawing sous IGC Flight Replay peut intéresser du monde, je pense qu’il serait bien de trouver une place sur parawing pour mettre un lien sur l’outil de PiRK et sur IGC Flight Replay. Sinon il restera toujours ce forum qui est conservé mais c’est moins fini et on tombe pas dessus sans chercher.