Convertisseur en lot d'itinéraires gps

Contenu du snippet

Convertisseur en lot d'itinéraires GPS avec l'aide du logiciel ITNConv (à télécharger sur http://benichougps.blogspot.com )

Source / Exemple :


# -*- coding: cp1252 -*-

'''
python version  = "2.5.1"
environnement   = "Windows XP"
ide             = "Idle 1.2.1"
author          = "killer_sam (Pythonfrance)"
date            = "2008/09/07"

from Tkinter import *
from tkFileDialog import *
from os import *

extension_text = ['Autoroute Express (.axe)','Streets & Trips (.est)',
             'MapPoint (.ptm)','MapSource (.gdb)',
             'TomTom 3, 5 & 6, Go, Rider, One (.itn)',
             'Navigon MN|4, MN|5 & MN|6 (.rte)',
             'Destinator PN (.dat)',
             'Marco Polo, Falk Navigator, Motorrad Tourenplaner & OnRoute (.bcr)',
             'GPS eXchange (.gpx)','Garmin PCX5 (CartoExploreur) (.rte)',
             'ViaMichelin (.xvm)','IGN Rando (.rdn)',
             'OziExplorer CE (.rt2)','Google Earth (.kml)','CSV (Longitude,Latitude,Commentaires)']

extension = ['axe','est','ptm','gdb','itn','rte','dat',
             'bcr','gpx','rte','xvm','rdn','rt2','kml','csv']

class itinery_converter(Tk):
    def __init__(self,parent):
        Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.out = 0
        self.source = 0
        self.dir = 0
        self.grid()

        dir_label = Label(self,text='Cliquez sur le bouton pour ouvrir un répertoire')
        dir_label.grid(column=0,row=0)
                          
        dir_open = Button(self,text="Open Directory",command=self.open_directory)
        dir_open.grid(column=1,row=0)

        self.dir_text = Text(self,height=1,width=40,bg='yellow')
        self.dir_text.grid(column=2,row=0)

        list_dir_explain = Label(self,text='Nom de fichier')
        list_dir_explain.grid(column=2,row=1)

        source_ext_explain = Label(self,text='Type de fichier')
        source_ext_explain.grid(column=0,row=1)

        self.source_ext = Listbox(self,height=17,width=55)
        self.source_ext.grid(column=0,row=2)
        for ext in extension_text:
            self.source_ext.insert(END,ext)

        out_ext_explain = Label(self,text='Type de fichier')
        out_ext_explain.grid(column=1,row=1)

        self.out_ext = Listbox(self,height=17,width=55)
        self.out_ext.grid(column=1,row=2)
        for ext in extension_text:
            self.out_ext.insert(END,ext)

        self.list_dir_text = Text(self,height=18,width=30)
        self.list_dir_text.grid(column=2,row=2)

        launch_conv = Button(self,text="Go",command=self.GO)
        launch_conv.grid(column=0,row=3)

        close_app = Button(self,text="Quit",fg='white',bg='red',command=self.destroy)
        close_app.grid(column=2,row=3)
        
        self.source_ext.bind('<ButtonRelease-1>',self.onSelect)
        self.out_ext.bind('<ButtonRelease-1>',self.onSelect_out)

    def open_directory(self):
        self.dir = askdirectory(title='Choisissez le répertoire source')
        self.dir_text.insert('@0,0',self.dir+"\n")
        self.list_directory = listdir(self.dir)

        for i in self.list_directory:
            self.list_dir_text.insert(END,i+"\n")

    def onSelect(self,i):
        i=0
        select=self.source_ext.get(self.source_ext.curselection())
        while i < len(extension_text):
            if select == extension_text[i]:
                self.source = "*." + extension[i]
            i += 1

    def onSelect_out(self,i):
        i=0
        select=self.out_ext.get(self.out_ext.curselection())
        while i < len(extension_text):
            if select == extension_text[i]:
                self.out = extension[i]
            i += 1

    def GO(self):
        if self.out and self.source and self.dir != 0:
            if self.out in ['axe','itn','rte','dat','bcr','gpx','xvm','rdn'
                            'rt2','kml','csv']:
                command ="ITNConv.exe "+ self.dir+"\\"+self.source+" "+self.out
                popen(command)
                
            else:     
                error = Toplevel(self)
                Label(error,text="""Les extensions de sortie permisent sont :\n
                      - Autoroute Express (.axe) (Version 2004 et supérieure)
                      - TomTom 3, 5 & 6, Go, Rider, One (.itn)
                      - Navigon MN|4, MN|5 & MN|6 (.rte)
                      - Destinator PN (.dat)
                      - Marco Polo, Falk Navigator, Motorrad Tourenplaner & OnRoute (.bcr)
                      - GPS eXchange (.gpx)
                      - ViaMichelin (.xvm)
                      - IGN Rando (.rdn)
                      - OziExplorer (.rte)
                      - OziExplorer CE (.rt2)
                      - Google Earth (.kml)
                      - CSV (Longitude,Latitude,Commentaires)""").pack()
                Button(error,text='Quit',bg='red',fg='white',command=error.destroy).pack()
        else:            
            error1 = Toplevel(self)
            Label(error1,text="""Veuillez choisir le répertoire,
le type de fichier source et
le type de fichier de sortie""").pack()
            Button(error1,text='Quit',bg='red',fg='white',command=error1.destroy).pack()

if __name__ == "__main__":
    app = itinery_converter(None)
    app.title('Convertisseur d\'itinéraire en lot')
    app.mainloop()

Conclusion :


Utilisation de ITNConv en ligne de commande. ITNConv doit être dans le même répertoire que la source. Une version ultérieure sera peut-être avec un set-up à la première utilisation (création d'un fichier de config) qui demandera ou se trouve le logiciel ITNConv, les différentes extensions possibles, les messages d'erreur, ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.