Concatenation de POIs
Ce programme a pour objet de concatener des fichiers de POIs utilisés entre autre par Tomtom Navigator 2/3.
Les POIs sont des points d'interets sur des thèmes divers, localisés par leurs coordonnées GPS (latitude, longitude), et associés eventuellement à une description.
Vous trouverez toute l'information concernant les POIs ici.
J'ai écrit ce programme pour les raisons suivantes :
D'autres programme permettent déjà de fusionner des bases (POI edit, POI manager...). Toutefois, ils fonctionnent tous à partir d'une interface graphique, la fusion étant effectuée manuellement, et est donc fastidieuse.
J'avais dans l'idée d'un programme fonctionnant en batch, une fois par jour de façon automatique et autonome. Ainsi, une fois le programme configuré et "schédulé" (crontab linux, planificateur de tâches windows), il ne reste plus qu'à venir chercher régulièrement les fichiers dans le répertoire cible, et les copier dans le répertoire carte du Pocket PC. Plus besoin d'aller voir régulierement sur chaque site si le fichier a été mis à jour. Vous êtes assuré d'avoir dans le répertoire cible une version à jour des bases.
Ensuite, ce programme devait tourner sur ma machine Linux, connecté à internet. Le programme a donc été écrit en Perl, permettant de le faire tourner sous Windows comme sous Linux.
Sous Windows, il sera necessaire d'installer un interpreteur Perl.
Je vous conseille ActivePerl (gratuit).
Les fonctions actuellement supportées sont :
Le programme fonctionne à partir d'un fichier de configuration, composé de mots clés.
Voici un exemple de fichier de configuration :
[MacDonald] getpoi ov2 1 http://www.gpspassion.com/poi/Mac_Donalds.ov2 getpoi ov2 1 http://poiplace.oabsoftware.nl/Overlays/France/McDonald_s.ov2 getzip http://www.tomtom.com/support/ce/support/ov2/mcdonalds_france.zip getpoi ov2 1 file:POIs/www.tomtom.com/support/ce/support/ov2/mcdonalds_france.ov2 deldup 200m savepoi ov2 ov2\macdonald.ov2 [Cinemas]
getpoi ov2 1 http://poiplace.oabsoftware.nl/Overlays/France/Cinema.ov2
getpoi ov2 1 http://poiplace.oabsoftware.nl/Overlays/France/Gaumont.ov2
getpoi ov2 1 http://poiplace.oabsoftware.nl/Overlays/France/Pathe.ov2
getpoi ov2 1 http://poiplace.oabsoftware.nl/Overlays/France/UGC.ov2
deldup 100m
savepoi ov2 ov2\cinemas.ov2
Ce fichier permet de créer deux fichiers POIs au format ov2 (macdonald et cinémas). Le premier est composé de 3 sources en provenance de sites distincts. Le second permet de fusionner des bases d'enseignes différentes.
Les données sont chargées en mémoire, jusqu'au moment où ils seront sauvegardés.
Le fichier de configuration est un fichier texte, à éditer manuellement.
Les lignes commençants par le caractère # sont ignorées. Les lignes blanches sont ignorées.
Le mot clé suspend permet de suspendre le traitement jusqu'au prochain mot clé resume. Cela est utile en phase de mise au point d'un fichier de configuration, pour exclure une partie du traitement déjà mis au point. En gros, cela permet de mettre en commentaire tout un bloc de lignes.
Le mot clé exit permet d'arreter le traitement à ce point, en ignorant les lignes qui suivent.
Un fichier de configuration permet de gérer plusieurs catégories. Une nouvelle catégorie est définie par un debut de chapitre :
[titre]
Le nom fourni comme titre est (pour le moment) totalement libre, et consitue une zone de commentaire. La définition d'une nouvelle catégorie purge la mémoire des POIs préalablement chargés.
getpoi
Ce mot clé permet de télécharger et de lire en mémoire un fichier contenant des POIs. Les formats ov2 et asc sont supportés. La lecture du fichier peux se faire depuis internet (url de type http://) ou depuis un disque local (url de type file:). Dans le cas d'un fichier sur internet, le fichier sera stocké de façon permanente sur le disque local après traitement. Cela permettra d'éviter de le télécharger lors du prochain traitement si celui-n'a pas été modifié. Cela permet également d'en avoir une copie locale si jamais le fichier est indisponible lors du prochain traitement (fichier relogé, réseau HS...).
Il est également possible de preciser comment le champ description du POI sera rensigné. Le mode 1 devrait être utilisé dans la majorité des cas.
Syntaxe :
getpoi format mode url avec format : ov2 | asc mode : 0 le champ description est laissé tel quel 1 le champ description, s'il est vide, est renseigné avec le nom du fichier 2 le champ descrpition est remplacé par le nom du fichier (dans tous les cas) 3 le nom du fichier est concatené au champ description existant 4 le champ description est effacé url : http://www.monsite.fr/file.ov2 file:mydir/file.ov2 file:c:/file.asc A noter l'utilsisation du caractere /, même sous Windows. exemple : getpoi ov2 1 http://www.monsite.fr/file.ov2 getpoi asc 0 http://www.monsite.fr/file.asc
getzip
Ce mot clé permet de télécharger et de dezipper un fichier à partir d'une URL. De nombreuses bases de POIs étant disponibles sur internet sous forme de fichier ZIP (1 fichier ov2 et un fichier bmp le plus souvent), ce mot clé permet d'effectuer le traitement de download/unzip dans le cadre du traitement batch.
Ce mot clé doit être suivi d'un getpoi, car le chargement en mémoire des POIs n'est pas assuré.
L'opération de dezippage est effectué par un programme externe. Sous linux, l'utilitaire unzip est utilisé. Sous Windows, le binaire unzip issu du projet cygwin est utilisé, et joint au package.
Syntaxe :
getzip url avec url : http://www.monsite.fr/file.zip file:mydir/file.zip A noter l'utilsisation du caractere /, même sous Windows. exemple : getzip http://www.monsite.fr/file.zip getpoi ov2 1 file:POIs/www.monsite.fr/file/file.ov2
getexcept
Ce mot clé permet de télécharger et de lire en mémoire un fichier contenant des POIs qui seront gérés comme des exceptions. Cela signifie que ces POIs seront supprimés de la liste des POIs sauvegardés.
Les formats ov2 et asc sont supportés. La lecture du fichier peux se faire depuis internet (url de type http://) ou depuis un disque local (url de type file:). Dans le cas d'un fichier sur internet, le fichier sera stocké de façon permanente sur le disque local après traitement. Cela permettra d'éviter de le télécharger lors du prochain traitement si celui-n'a pas été modifié. Cela permet également d'en avoir une copie locale si jamais le fichier est indisponible lors du prochain traitement (fichier relogé, réseau HS...).
Syntaxe :
getpoi format mode url
avec
format : ov2 | asc
url : http://www.monsite.fr/file.ov2
file:mydir/file.ov2
file:c:/file.asc
A noter l'utilsisation du caractere /, même sous Windows.
exemple :
getexcept ov2 http://www.monsite.fr/exceptfile.ov2
getexcept asc http://www.monsite.fr/exceptfile.asc
Le mot clé getexcept doit être utilisé en combinaison avec delexcept.
delexcept
Ce mot clé permet d'appliquer les exceptions chargées en mémoire, c'est à dire de supprimer les POIs d'exception de la liste des POIs chargés en mémoire par getpoi. Un rayon d'action peut être précisé, permettant de supprimer les POIs proches de l'exception.
Ce traitement doit être appliqué avant la sauvegarde du fichier avec savepoi.
Syntaxe : delexcept rayon avec rayon : le rayon, exprimé en mètres (m) ou en yard (y) exemple : delexcept 25m delexcept 33y
deldup
Ce mot clé permet de supprimer les POIs en double. Les POIs en double sont ceux se situant dans un même cercle, dont le rayon est fourni en paramètre. Un rayon de 0 signifie que les 2 POIs ont exactement les même coordonnées longitude/latitude.
Si les decriptions des POIs diffèrent, elles seront concatenées, c'est à dire que la description du POI restant sera composé des descriptions des deux POIs proches.
Ce traitement doit être appliqué avant la sauvegarde du fichier avec savepoi.
Syntaxe : deldup rayon avec rayon : le rayon, exprimé en mètres (m) ou en yard (y) exemple : deldup 25m deldup 33y
savestat
Ce mot clé permet de générer des statistiques d'éloignements des POIs en mémoire. Il est ainsi possible de savoir combien de points sont éloignés de moins de 100m par exemple. Le résultat est affiché, ou sauvegardé dans un fichier si celui-ci est précisé. Cette option peut être utilisée avant deldup, pour évaluer le rayon le plus approprié.
Syntaxe : savestat distance_1 ... distance_n [filename] avec distance_n : le distance entre 2 points, exprimé en mètres (m) ou en yard (y) filename : nom d'un fichier local exemple : savestat 10m 20m 50m 100m 200m 500m 1000m savestat 10m 20y 50m c:\stat.txt
savepoi
Ce mot clé permet de sauvegarder les POIs préalablement chargés en mémoire dans un fichier sur disque. Les formats en sortie sont asc et ov2.
Syntaxe : savepoi format filename avec format : ov2 | asc filename : nom d'un fichier local exemple : savepoi ov2 ov2\outfile.ov2 savepoi asc c:\outfile.asc
perl merge_ttpoi.pl -f <configfile> [-w <dir>]
avec
-f <file> : fichier de configuration
-w <dir> : répertoire où seront downloadés et conservés les fichiers POIs
(par defaut, le répertoire "POIs" est utilisé)
exemple :
perl merge_ttpoi.pl -f poi.cfg
merge_ttpoi.zip v1.0 30/04/2004
Dans le cas d'une utilisation du mot clé getzip sous windows, il est également nécessaire de télécharger l'utilitaire unzip/cygwin, à l'URL suivante. Les fichiers devront être stockés dans le même répertoire que le programme perl.
Ces fichiers ne sont pas nécessaires dans le cas d'une utilisation de perl sous Windows/cygwin ou sous Linux.