User:Petrovsk/FR:Mkgmap
Les GPS Garmin utilisent des cartes au format .img. Ces fichiers peuvent être créés assez facilement à l'aide de Mkgmap. Les cartes que nous allons créer se trouveront dans un fichier gmapsupp.img, habituellement utilisé sur les Garmin pour les cartes ajoutées avec le logiciel MapSource.
Contents |
Installation
Nous commençons par choisir où installer mkgmap :
cd ~/OSM/
Téléchargeons la dernière version et décompressons l'archive :
curl -O "http://www.mkgmap.org.uk/snapshots/mkgmap-latest.tar.gz" tar -xvf mkgmap-latest.tar.gz rm mkgmap-latest.tar.gz
Cela crée un dossier du nom de la version téléchargée, du genre mkgmap-r1404. Dans les lignes de commande à suivre, le dossier de mkgmap sera appelé par mkgmap-r* pour ne pas tenir compte du numéro de version.
Utilisation
Nous considérons que nous avons récupéré des données OSM sous la forme d'un fichier data.osm et que nous l'avons placé dans le dossier de mkgmap.
Pour créer la carte Garmin reprenant ces données :
java -jar mkgmap.jar data.osm
Nous nous retrouvons avec un fichier 63240001.img qui pourra être copié dans le dossier Garmin de votre GPS, après avoir été renommé en gmapsupp.img s'il est assez ancien (avant les séries Colorado/Oregon/Dakota).
Si vous trouvez cela trop simple vous avez raison, ce que je viens d'indiquer ne marche que pour de petites quantités de données. Dès que vous voudrez monter en puissance, il faudra prendre des mesures pour pouvoir digérer l'afflux de données.
Donner plus de mémoire à java
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
C'est comme ça que java indique qu'il est à l'étroit. Il faut ajouter l'argument -Xmx512M pour allouer 512 Mo au maximum à java, -Xmx1G pour 1 Go...
java -Xmx512M -jar mkgmap.jar ../Datasets/data.osm
Utiliser le splitter
Area too large
Si vous essayez de faire la carte d'un pays, il y a de fortes chances que mkgmap refuse de travailler sous prétexte qu'il y a trop d'éléments à convertir.
Pour passer outre il faudra partager les données en petits bouts qui seront convertis puis assemblés par mkgmap. C'est le rôle du splitter.
Si mkgmap fonctionne sous java 1.5, le splitter exige java 1.6.
Le splitter se télécharge ici et se place dans le dossier de mkgmap. Il se commande comme lui :
java -Xmx1G -jar splitter.jar ../Datasets/france.osm
Il va créer les fichiers contenant les données OSM et un fichier template.args qui permettra à mkgmap de recoller les morceaux :
java -Xmx1G -jar mkgmap.jar -c template.args
Les options de mkgmap
Vous trouverez une liste d'options sur la page de mkgmap et une liste complète ici.
Je vais en détailler certaines que j'utilise.
- --latin1
Cette option permet l'utilisation de caractères non-ascii dans les noms de rue. Ce qui est réellement supporté dépend de l'appareil. Certains appareils ne supportent que les caractères ascii.
- --country-name
Nom du pays de la carte. C'est "UNITED KINGDOM" par défaut.
--country-name="France" pour la France.
- --country-abbr
Nom abrégé du pays de la carte. C'est "GBR" par défaut.
--country-abbr="FR" pour la France.
- --route
Crée une carte routable. Vous devez utiliser un style compatible, comme le style par défaut.
Cette option n'implique pas d'utiliser l'option suivante --net.
- --net
Crée un fichier supportant l'option verrouillage sur route.
L'option verrouillage sur route (lock to road) des GPS Garmin permet de fixer le marqueur sur la route la plus proche, pour compenser les erreurs de positionnement dues à une mauvaise réception. Cela nécessite des cartes routables (et donc l'option --route pour mkgmap).
Cette option est à désactiver sur le GPS pour enregistrer une trace devant être téléchargée sur OpenStreetMap, le but étant de corriger la carte.
- --remove-short-arcs
Active le retrait des segments courts.
Du fait de la précision limitée des coordonnées, les segments de moins de 3 mètres environ peuvent devenir de longueur nulle et empêcher le routage. Cette option retire ces segments en fusionnant les nœuds les composant. Ajouté à la version 1049 de mkgmap.
- --generate-sea=extend-sea-sectors
Dessine des polygones figurant la mer.
Jusque là les cartes crées par mkgmap n'affichaient pas la mer et ne figuraient que le trait de côte. Cette option dessine des polygones associés au code Garmin 0x32 à inclure dans vos styles et fichiers TYP.
- --add-pois-to-areas
Génère un POI pour chaque polygone.
Les POI sont créés après l'application du style et uniquement pour les polygones qui ont un point équivalent.
- --gmapsupp
Écrit un fichier gmapsupp.img qui peut être envoyé sur un appareil Garmin par USB.
- --tdbfile
Écrit un fichier .tdb
Ce fichier .tdb sera utilisé pour créer une carte pour RoadTrip (Mac) ou Qlandkarte.
Fusionner des cartes
Mkgmap peut fusionner des cartes au format .img dans un fichier gmapsupp.img. Les cartes doivent être dans le dossier de travail de mkgmap.
java -jar mkgmap.jar --gmapsupp france.img espagne.img
