Cartes OpenStreetMap randonnée pour montre Garmin


Encore un énième rendu ? ... Oui, pour essayer de maximiser la qualité des données affichées sur les montres Garmin, notamment la récente Epix qui dispose d'un écran AMOLED beaucoup plus défini que les Fenix 5/6/7 et Forerunner 945/955
Le meilleur rendu trouvé jusqu'à présent était MapRando amoureusement généré et suivi par Alexis Lecanu, mais le rendu est très minimaliste et les traits des chemins trop fins pour l'Epix.
Suite au travail effectué par la communauté du forum Randonner Léger sur le rendu des cartes OSMAnd nous essayons désormais d'avancer dans la même direction pour le rendu sur les montres Garmin... et les GPS de rando (Etrex, Oregon...) pourront probablement en profiter également.
Face à la complexité et la redondance de certaines tâches j'ai souhaité mettre à disposition les sources intermédiaires, les fichiers de rendu et les cartes finales en téléchargement. Ainsi vous pouvez soit récupérer des cartes prêtes à l'emploi, soit les sources les plus proches du rendu final pour avoir le moins de manipulations à faire pour effectuer votre propre rendu si vous le souhaitez.

Il s'agit d'un travail en cours, loin d'être terminé, mais vous pouvez déjà accéder à ce qui a été réalisé.
Peut-être que tout finira par être intégré dans le rendu d'Alexis, mais en attendant ça permet de mettre à disposition, notamment des membres de Randonner Léger, des fichiers pratiques pour gagner du temps pour effectuer des tests de rendus.


Oulala je veux juste des cartes

Si tout ce que vous souhaitez c'est télécharger des cartes au format .IMG prêtes à transférer sur votre montre, c'est par ici que ça se passe.

Courbes au format OSM

Il s'agit de la conversion des fichiers hgt "1 arc seconde" issues de viewfinderpanoramas.org en mai 2022. Il s'agit des meilleures sources disponibles pour l'Europe à l'heure actuelle.
Pour connaitre la zone couverte, reportez vous à la source
Actuellement seule la France Métropolitaine a été prise en compte. Avec les 9 fichiers K,L,M 30,31,32 vous couvrez l'intégralité "très large" de la France, avec tous les Pyrénées, les Alpes, ...

Les données ont été converties avec la commande suivante (ex pour le dossier M30) :
hgt2osm.exe --HgtPath=./hgt/M30/ --WriteElevationType=false --FakeDistance=-0.5 --MinVerticePoints=3 --MinBoundingbox=0.00016 --DouglasPeucker=0.05 --MinorDistance=10 --OutputOverwrite=true
Note : cette conversion plante sur les fichiers HGT qui ne couvrent que de l'eau (donc aucune valeur > 0). Il faut supprimer le fichier bloquant, déplacer ceux déjà traités et relancer la commande. C'est pénible. Bref n'hésitez pas à récupérer les fichiers que j'ai généré, vous gagnerez beaucoup de temps !
Ces fichiers n'évoluent quasiment pas dans le temps, vous pouvez donc les télécharger une fois pour toute.

K30_osm.zip (2022-05-30 16:12:23 / 1,4 Go)
K31_osm.zip (2022-05-30 14:24:51 / 941 Mo)
K32_osm.zip (2022-06-01 22:51:59 / 541 Mo)
L30_osm.zip (2022-06-01 20:57:25 / 95 Mo)
L31_osm.zip (2022-06-01 22:05:53 / 950 Mo)
L32_osm.zip (2022-06-02 08:25:41 / 2,7 Go)
M30_osm.zip (2022-06-02 09:02:48 / 250 Mo)
M31_osm.zip (2022-06-02 10:02:39 / 332 Mo)
M32_osm.zip (2022-06-02 08:09:37 / 726 Mo)

Polygones de découpe

Il s'agit de sélections arbitraires pour définir certaines zones et créer des cartes restreintes à ces espaces. Pyrénées, Alpes, ...
Ils ont été créés en générant un fichier .gpx sur n'importe quel outil en ligne, par exemple VisuGPX.
Pour la conversion au format poly, vous pouvez utiliser l'outil que j'ai créé à cet effet.

france_plus.gpx (2022-06-03 15:44:22 / 2 Ko)
france_plus.poly (2022-06-03 15:44:22 / 702 o)
pyrenees.gpx (2022-06-03 15:44:21 / 1 Ko)
pyrenees.poly (2022-06-03 15:44:20 / 390 o)

Il vous faut juste le .poly, mais le .gpx peut vous servir (en l'important sur visugpx) pour visualiser la zone englobée.
A titre indicatif : France plus / Pyrénées.

Styles

Il s'agit du regroupement du style (qui définit quoi afficher à quel niveau de zoom via le picto n°XYZ) + du fichier TYP qui définit à quoi ressemble le picto XYZ (couleur, épaisseur de trait, motif...) qui sera utilisé pour cet affichage.
Ces fichiers sont intimement liés et doivent être appliqués ensemble en même temps sur les pbf d'une carte.
Pour éditer le style, ce sont des fichiers textes, par exemple "lines" s'édite dans n'importe quel éditeur de texte ou de code.
Pour éditer le TYP, utiliser TYPViewer

epix.zip (2022-07-19 22:37:30 / 64 Ko)

A titre indicatif le rapport entre les niveaux de zoom dans les fichiers de conf vs l'échelle sur la montre :
Niveau de zoomSur l'Epix
1750km 30km
1820km
1912 km 8km 5 km
203 km 2km
211.2 km
221.2 km (étrange) 800m
23500m
24300m et moins
On voit bien que l'essentiel du travail se concentre sur le rendu à niveau de zoom 24, avec quelques adaptations pour avoir un rendu cohérent quand on regarde autour de sa position (zooms 22 et 23).

Fichiers PBF de courbes

Il s'agit de cartes au format osm.pbf, AVANT application du style. Si vous voulez changer l'aspect et les niveaux d'apparition de zoom des cartes c'est ce fichier qu'il faut télécharger
Le passage des fichiers osm.gz en pbf a été effectué par une commande du style :
java -Xmx32768m -jar ../splitter/splitter.jar --polygon-file=../poly/pyrenees.poly --mapid=61230000 --max-nodes=1600000 --keep-complete=false dossier_des_osm.gz/*.osm.gz
Les paramètres sont à adapter à vos dossiers et votre machine (Xmx32768m c'est pour dire d'utiliser jusqu'à 32 Go de RAM)
Cette commande nécessite l'installation préalable d'un environnement de développement JAVA (choisissez une version 64 bits).
Splitter provient de ce site.
On se retrouve avec un paquet de .pbf + un fichier template.args (qu'on renomme courbes.arg) + d'autres fichiers inutiles à supprimer.
Nota : si vous voulez extraire une petite zone, par exemple les Pyrénées, essayez de donner à splitter juste les fichiers correspondant à la zone, donc ceux issus de K30 et K31 par exemple... et non pas les 9 fichiers, vous gagnerez beaucoup de temps de calcul !
Les mapid sont libres, il faut juste qu'ils fassent 8 digit et de préférence laisser au moins les 3 derniers à 0 + il faut un mapid supérieur pour les courbes par rapport aux cartes, sinon les courbes passeront au dessus des chemins dans le rendu final

contours_france_plus_osm_pbf.zip (2022-06-02 13:56:18 / 1,9 Go)
contours_K_L_M_30_31_32_osm_pbf.zip (2022-06-02 11:44:46 / 3,3 Go)
contours_pyrenees_osm_pbf.zip (2022-06-09 19:32:16 / 522 Mo)

Fichiers IMG des courbes

Il s'agit de cartes au format IMG, APRES application du style, servant de base pour un assemblage avec une base de carte. Si le rendu des courbes de niveau vous convient, c'est ce fichier qu'il faut télécharger.
Le passage des fichiers pbf en .img a été effectué par une commande du style :
java -Xmx32768m -jar ../mkgmap/mkgmap.jar -c ../options_courbes.args -c courbes.args
Mkgmap provient de ce site.
Le contenu du fichier "option_courbes.arg" :
max-jobs: 12
style-file=../style/rando
latin1
max-jobs: 12 c'est le nombre de coeurs (logiques) de votre processeur, 12 sur un Intel 6 coeurs + hyperthread par exemple.

contours_france_plus_img.zip (2022-06-15 22:39:09 / 512 Mo)
contours_pyrenees_img.zip (2022-06-15 22:31:57 / 148 Mo)

Et les cartes dans tout ça ?

Il faut récupérer les cartes les plus récentes sur GeoFabrik. Dans notres cas pour générer des cartes qui sont sur plusieurs pays en même temps on récupère europe-latest.osm.pbf (oui ça fait 25 Go !).
Ensuite on extrait la zone qui nous intéresse via le poly, par exemple, lancé depuis un sous-dossier dans lequel j'ai téléchargé le fichier europe-latest.osm.pbf :
java -Xmx32768m -jar ../splitter/splitter.jar --polygon-file=../poly/pyrenees.poly --mapid=51230000 --max-nodes=1000000 --keep-complete=true --route-rel-values=foot,hiking --overlap=0 europe-latest.osm.pbf

Cela génère des .pbf + un fichier template.args (qu'on va renommer carte.args) + d'autres fichiers à supprimer.
Je ne mets pas ces fichiers à disposition car ils évoluent tout le temps, il faut récupérer la carte d'Europe à la source.
Si vous voulez générer des cartes de morceaux d'un pays (Auvergne par exemple), vous pouvez ne télécharger que le fichier pbf de la France. Pour gagner du temps, essayez de partir du fichier le plus petit incluant la zone qui vous intéresse.
Sur le même principe, vous pouvez télécharger plusieurs pays ou régions puis les assembler (Merci Bombadyl pour l'info). Pour ça vous aurez besoin du logiciel OSMConvert.
Exemple d'utilisation (il faut changer le format au passage):
osmconvert andorre.osm.pbf -o=t1.o5m
osmconvert navarre.osm.pbf -o=t2.o5m
osmconvert basque.osm.pbf -o=t3.o5m
osmconvert midipy.osm.pbf -o=t4.o5m
osmconvert roussi.osm.pbf -o=t5.o5m
osmconvert aquitaine.osm.pbf -o=t6.o5m
osmconvert aragon.osm.pbf -o=t7.o5m
osmconvert catalogne.osm.pbf -o=t8.o5m
osmconvert t1.o5m t2.o5m t3.o5m t4.o5m t5.o5m t6.o5m t7.o5m t7.o5m -o=merge_for_pyrenees.o5m
osmconvert merge_for_pyrenees.o5m -o=merge_for_pyrenees.pbf
rm *.o5m
Cela produit un fichier final pbf utilisable pour la création des .img à l'étape suivante.

Fichiers IMG de la carte

Avant de procéder à un assemblage courbes + carte il faut convertir la carte en appliquant le style au passage.
Cette étape est nécessaire car on n'a pas les mêmes paramètres entre les courbes et la carte.
java -Xmx32768m -jar ../mkgmap/mkgmap.jar -c ../options_rando.args -c ./pyr/carte.args
Le contenu du fichier "options_rando.arg" :
max-jobs: 12
add-boundary-nodes-at-admin-boundaries=10 road-name-pois
add-pois-to-areas
add-pois-to-lines
remove-short-arcs
precomp-sea=../sea.zip
x-check-precomp-sea: 0
style-file=../style/rando
latin1
net
route
road-name-pois

Cela génère la carte en fichiers .img en appliquant au passage le style qui va bien
Là encore je ne mets pas ces fichiers à disposition car ils se périment vite. Il faut repartir des cartes "à jour" à chaque fois.

Assemblage final

On a donc des .img de courbes et des .img de cartes, il est temps de les regrouper :
java -Xmx32768m -jar ../mkgmap/mkgmap.jar --mapname=41230000 --family-id=4123 --description="Pyrenees" -c ../options_rando.args --gmapsupp ../style/rando.typ ../cartes/pyr_img/*.img ../contour/img_pyr/*.img
Cette étape est très rapide, normalement vous devez aboutir à un fichier gmapsupp.img transférable sur votre montre, GPS, ou affichable dans QmapShack si vous voulez vérifier le résultat avant.
Le mapname / family-id n'a pas grande importance mais doit être différent d'une carte à l'autre qui serait sur la montre.

Fichiers finaux IMG pour GPS/Montre

Il s'agit donc de ces cartes + courbes au format IMG, regroupées dans un fichier prêt à transférer sur la montre :

Pour les non techniciens/geeks, c'est probablement ça que vous êtes venus chercher !

france_plus_gmapsupp.img (2022-08-02 19:58:41 / 2,6 Go)
pyrenees_gmapsupp.img (2022-08-02 21:02:35 / 434 Mo)

Et la légende ? Pour l'instant les pictos évoluent beaucoup donc il n'y a pas de légende dédiée. Celle qui s'en approche le plus est celle de MapRando. Tout est plus gros et certains pictos ont été clarifiés. Concernant les différences sentiers/chemins/plus ou moins visibles... c'est en cours, mais vous devriez comprendre sans trop de souci. Au pire téléchargez le fichier TYP, ouvez-le dans TYPViewer pour savoir quel picto correspond à quoi.

Pour aller plus loin

Si vous voulez "compiler" régulièrement vos cartes, vu le nombre de commandes, de paramètres, de déplacements ou suppression de fichiers, il va être utile de scripter un peu tout ça.
Regardez ce qu'a fait Alexis pour MapRando ça vous donnera probablement de bonnes idées. Merci encore à lui pour les échanges ayant permis de créer cette page.