Magazine High tech

Générer des cartes routables gratuites et libres pour votre GPS Garmin

Publié le 29 septembre 2010 par Dictege

http://blog.lionelmaraval.fr/category/GeolocalisationPlutôt que d’acheter des cartes, hors de prix, pour vos GPS Garmin, il est tout à fait possible d’en générer à partir d’Open Street Map. Pour rappel, Open Street Map est un projet destiné à réaliser une carte du monde, sous licence dite “libre”. Cela signifie, que tout le monde est libre d’utiliser, d’améliorer, de distribuer ou d’effectuer des travaux dérivés à partir de ces cartes, donnant ainsi une liberté bien plus grande que les solutions payantes du type cartes IGN.

Générer des cartes routables gratuites et libres pour votre GPS Garmin

Génération de Cartes pour les GPS Garmin

Les cartes OSM fonctionnent avec les GPS Garmin qui supportent le téléchargement dont les série : Colorado, Dakota, eTrex Legend, eTrex Vista, eTrex Summit, eTrex Venture, GPSMAP, Nüvi, Zumo, Oregon, Quest and Streetpilot ranges. La création de carte consiste à convertir un fichier osm en un fichier img qui sera copié vers  votre GPS. Il y a généralement quelques étapes à suivre nécessitant l’utilisation de différents logiciels :

1.Préparation des répertoires de travail

mkdir -p ~/osm/base_osm ~/osm/applis ~/osm/work ~/osm/styles

2 Installation des programmes

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-jdkl mono-runtime libmono-corlib2.0-cil libmono-system-runtime2.0-cil libmono-system2.0-cil mono-gmcs libmono-i18n2.0-cil
cd ~/osm/applis/
wget http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz
tar xvfz osmosis-latest.tgz
sudo chmod -R 755 osmosis-0.36/
sudo ln -s ~/osm/applis/osmosis-0.36/bin/osmosis /usr/bin/
cd ~/osm/applis/
wget http://www.mkgmap.org.uk/snapshots/mkgmap-r1708.tar.gz
tar xvfz mkgmap-r1708.tar.gz
ln -s ~/osm/applis/mkgmap-r1708/mkgmap.jar
cd ~/osm/applis/
wget http://www.mkgmap.org.uk/splitter/splitter-r123.tar.gz
gtar -xvfz splitter-r123.tar.gz
ln -s /osm/applis/splitter-r123/splitter.jar
cd ~/osm/applis/
wget http://topo.openstreetmap.de/Srtm2Osm-1.8.14.10.zip
unzip Srtm2Osm-1.8.14.10.zip
mv Srtm2Osm/* .
<strong>2.6 Installations des styles</strong>

Il suffit de télécharger cet archive et de la décompresser dans le répertoire style.

cd ~/osm/styles/g
wget http://www.webdevonlinux.fr/geomatique/styles.tar.gz
unzip styles.zip

3.Obtenir les données d’OpenstreetMap OSM

Il est possible d’obtenir des données OSM à partir du site geofabrik.de. Vous pouvez télécharger soit toute l’Europe, 5.1Go (pour générer une carte passant les frontières) ou bien plus spécifiquement un pays. Je vais utiliser dans mon exemple la zone Europe car je suis frontalier avec la Suisse. Ce téléchargement ne se fera qu’une seule fois car par la suite, nous utiliserons une système de mise à jour de la zone de travail.

cd ~/osm/base_osm/
wget http://download.geofabrik.de/osm/europe.osm.bz2

ou alors

wget http://download.geofabrik.de/osm/europe/france.osm.bz2
3.1.1 Paramétrage de la gestion de la mise à jour des données de base

Au lieu de télécharger chaque fois le fichier de base, il est possible de mettre en place un mécanisme permettant de ne télécharger que les mises à jour des données OSM. Il suffit de récupérer la date à laquelle a été créé le fichier de base comme paramètre d’osmosis.

osmosis --read-change-interval-init initialDate=2010-09-27_03:04:00

Il faudra ensuite modifier le fichier configuration.txt avec les paramètres indiqués ci-dessous

  • intervalLength=86400
  • changeFileBeginFormat=yyyyMMdd
  • changeFileEndFormat=yyyyMMdd

3.2. Extraction d’une zone de travail

Pour réaliser cette opération nous allons utiliser un autre programme java : Osmosis. Osmosis permet d’extraire des zones géographiques à partir des données télécharger précédemment. Cette extraction peut se faire suivant une une bounding-box ou encore un polygone définissant un pays, une région, un département… Il permet également de mettre à jour cette extraction à partir de l’image créé à l’étape précédente.

Il suffit de lancer cette extraction depuis le répertoire base_osm en indiquant votre zone d’extraction avec les valeurs left, right, top et bottom que vous pouvez récupérer dans l’onglet Export d’OpenStreetMap. Pour cela il suffit de zoomer sur la zone qui vous intéresse, de cliquer sur le texte « Manually Select a différent Area », de sélectionner la zone et de noter les valeurs dans les champs Area Export.

Générer des cartes routables gratuites et libres pour votre GPS Garmin

cd ~/osm/base_osm/
osmosis --rx europe.osm.bz2 --bb left=XX.XXX right=X.XXX top=XX.XXX bottom=XX.XXX --wx base.osm

Remplacer les valeurs XX.XXX par celles relevées plus haut.

4.Obtenir les données de reliefs STRM de la NASA

Il suffit de lancer la commande suivante depuis le répertoire des applis.

cd ~/osm/applis/
mono ./Srtm2Osm/Srtm2Osm.exe -bounds1 [bottom] [left] [top] [right]  -step 25 -cat 500 100 -large -corrxy 0.0005 0.0006 -o ~/osm/base_osm/topo_25.osm

Mis à part un cataclysme, le relief ne risque pas de changer, alors nous allons généner le fichier garmin qui sera ensuite merger avec le reste de la carte. Pour cela, vue sont étendue il est plus sage de la découper avec splitter. Cet outil va générer des tiles et un fichier templates.args utilisé ensuite par mkgmap.

cd ~/osm/work/
java -Xmx1G -jar ./splitter.jar --mixed=true --mapid=72500001 ../base_osm/topo_25.osm
java -Xmx1G -jar ./mkgmap.jar --draw-priority=25 --transparent --family-id=13 -c template.args

Il faudra ensuite renommer le fichier resultat en topo_25.img

5.Convertir ces données en un fichier Garmin IMG

Maintenant que nous avons notre relief généré nous allons lancer le calcul de la carte au complet. Comme précédemment, il faut auparavant découper la carte avec Splitter. Ensuite il faut créer le fichier routages.arg pour générer une couche transparente.

cd ~/osm/work/
java -Xmx1G -jar ./splitter.jar ../base_osm/base.osm
 
sed 's/mapname: 6324/mapname: 6100/g' template.args &gt; routage.args
 
java -Xmx2G -jar ./mkgmap.jar --gmapsupp --tdbfile \
--family-id=11 --family-name="Fond de Carte OSM" \
--draw-priority=25 \
--add-pois-to-areas --style-file=../styles/heinz/ \
--remove-short-arcs --max-jobs=3 --latin1 \
--country-name="France" --country-abbr="FR" \
--generate-sea=extend-sea-sectors -c template.args \
--family-id=12 --family-name="Routage OSM" --route \
--draw-priority=5 --style-file=../styles/routage/ \
--add-pois-to-areas --remove-short-arcs \
--max-jobs=3 --latin1 \
--country-name="France" --country-abbr="FR" -c routage.args \
--family-id=13 --family-name="Relief SRTM 25m" \
--draw-priority=50 --transparent \
--remove-short-arcs --max-jobs=1 --latin1 \
--series-name="Topo 25 Relief OSM" --description="OSM par S ROBERT" \
topo_25.img ../styles/11_hienz389.typ ../styles/13_topo.typ

6. Explications sur les styles.

Mkgmap convertit les éléments de carte d’OpenStreetMap en éléments de carte Garmin en utilisant une table de correspondance. Cette table de correspondance est invoqué par le paramêtre -style-file=[nom du style], qui peut être soit un fichier zip ou bien un répertoire. On doit y retrouver un certain nombre de fichiers (dont certain optionnels) :

  • version : Permet d’identifier le fichier de style
  • info : Description du style, …
  • options :
  • levels=0:23, 1:21, 2:19
  • points : Table de correspondance des noeuds OSM avec les POI Garmin
  • lines : Table de correpondance des lignes OSM
  • polygons : Description des polygones
  • relations  :  Description des relations entre routes
  • overlays  : Gestion des couches

Plus d’infos ici : wiki.openstreetmap.org et wiki.openstreetmap.org
Ce style ne modifie pas le rendu de la carte sur votre GPS. En effet, ce rendu est pris en charge par les fichiers .typ. Il faut savoir ce sont des fichiers binaires qui dans leur entêtes possèdent des informations indiquant à quel layer est destiné ce fichier de rendu. Pour vous rendre compte de cette information, vous pouvez utiliser l’éditeur en ligne suivant : Editor for Garmin TYP files. Dans l’entête on retrouve le produit (prenez 0) et la couche à mettre en correspondance avec le layer indiqué lors du calcul par le paramêtre family-id.

7. Transfert de la carte sur le GPS.

Il suffit de connecter votre GPS à votre PC avec un câble USB et de copier la carte généré avec le nom gmapsupp.img dans le répertoire Garmin du GPS.

Automatisation du processus de mis à jour.

Il suffit d’écrire un script contenant les lignes suivantes :

cd ~/osm/work/
vi update.sh

Ajouter les lignes suivantes en n’oubliant pas de remplacer les valeurs left, right, top et bottom :

cd ~/osm/base_osm/
osmosis --rci ./ --rx base.osm --ac --bb left=X.XXX right=X.XXX top=XX.XXX bottom=XX.XXX --wx tmp.osm
mv tmp.osm base.osm
cd ~/osm/work/
java -Xmx1G -jar ./splitter.jar ../base_osm/base.osm
sed 's/mapname: 6324/mapname: 6100/g' template.args &gt; routage.args
java -Xmx2G -jar ./mkgmap.jar --gmapsupp --tdbfile \
--family-id=11 --family-name="Fond de Carte OSM" --draw-priority=25 --add-pois-to-areas \
--style-file=../styles/heinz/ --remove-short-arcs --max-jobs=3 --latin1 --country-name="France" --country-abbr="FR"\
--generate-sea=extend-sea-sectors -c template.args  \
--family-id=12 --family-name="Routage OSM" --route  --draw-priority=5 \
--style-file=../styles/routage/ --add-pois-to-areas --remove-short-arcs --max-jobs=3 --latin1 --country-name="France" --country-abbr="FR" \
-c routage.args --family-id=13 --family-name="Relief SRTM 25m" --draw-priority=50 --transparent --remove-short-arcs --max-jobs=1 --latin1 \
--series-name="Topo 25 Relief OSM" --description="OSM par S ROBERT" topo_25.img ../styles/11_heinz389.typ ../styles/13_topo.typ

Il faut ensuite lui donner les droits déexecution

chmod +x update.sh

Et l’executer pour mettre à jour votre carte


Retour à La Une de Logo Paperblog

A propos de l’auteur


Dictege 7209 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog