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 les Epix ou Epix Pro qui disposent d'un écran AMOLED beaucoup plus défini que les Fenix 5/6/7 et Forerunner 945/955/965
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 (notamment sur certaines couleurs pour prendre en compte l'arrivée de l'ombrage du relief sur les Epix Pro/Fenix 7 Pro et en beta sur les Epix/Fenix précédentes), 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, moi 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.

Préambule compilation

Ci-dessous je présente les opérations sous Windows, mais (dans l'ensemble) on trouve les programmes en version linux également, ce qui peut être pratique pour faire tourner automatiquement sur un serveur et non pas votre ordinateur local
n'hésitez pas également à mettre les commandes dans des scripts au fur et à mesure de votre avancée afin de pouvoir par la suite mettre à jour une carte en une seule commande.

Conversion des courbes au format OSM

Il s'agit de la conversion des fichiers HGT "1 arc seconde" issues de viewfinderpanoramas.org en mai 2022. Ce sont les 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, ... J'ai rajouté L et M 33 pour les Alpes complètes (jusqu'à Vienne/Bratislava)

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 !

Sous linux vous pouvez utiliser un autre programme, pyhgtmap :
pyhgtmap --step=10 --no-zero-contour --simplifyContoursEpsilon=0 --jobs=16 --gzip=1 *.hgt
Ces fichiers n'évoluent quasiment pas dans le temps (les montagnes ne poussent pas de 10 mètres tous les quelques années :), 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)
L33_osm.zip (2022-11-03 18:23:57 / 1.3 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)
M33_osm.zip (2022-11-03 18:49:03 / 398 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.
Si vous souhaitez récupérer le polygone d'une région ou un pays spécifique, utilisez le lien '.poly file' de cette zone sur geofabrik
alpes.gpx (2022-11-03 18:24:28 / 2 Ko)
alpes.poly (2022-11-03 18:24:29 / 565 o)
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 / Alpes.

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 (2024-09-07 12:48:28 / 32 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 des courbes de la zone choisie, au format osm.pbf, AVANT application du style. Si vous voulez changer l'aspect et les niveaux de zoom d'apparition des courbes 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_alpes_osm_pbf.zip (2022-11-04 08:16:58 / 2 Go)
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 courbes au format IMG Garmin, 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.
On peut également en profiter pour ajouter des informations d'ombrage du relief (hill shading) en ajoutant les paramètres ci-dessous :
--dem="../contour/hgt/K30,../contour/hgt/K31,../contour/hgt/L30,../contour/hgt/L31" --dem-poly="./poly/pyrenees.poly" --dem-dists=3312,13248,26512,53024 --overview-dem-dist=200000
Les paramètres pour le hill-shading, c'est de fournir une liste de dossiers dans lesquels sont de fichiers HGT d'altitude (vous vous souvenez au début), zippés ou non + un poly de découpe (le même que pour les autres commandes) + des précisions sur quel niveau de zoom entraine quel niveau de précision d'ombrage. Je n'ai pas encore tout compris malgré la documentation de mkgmap.
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_alpes_img.zip (2022-11-04 08:06:52 / 549 Mo)
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 plus de 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. L'avantage est qu'on télécharge et travaille sur des fichiers plus petits, c'est donc plus rapide que de partir de l'Europe entière par exemple. Sur ma carte des Pyrénées par exemple, prendre France + Andorre + Espagne plutôt que l'Europe entière m'a permis de passer de 88 minutes à seulement 42 minutes (14 minutes 30 de génération du fichier merge + 27 minutes 30 de création de la carte). On a divisé le temps de génération par 2 !

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 !

alpes_gmapsupp.img (2024-11-01 05:09:09 / 2.6 Go)
france_plus_gmapsupp.img (2024-11-01 05:04:37 / 3.6 Go)
polynesie_gmapsupp.img (2024-11-01 05:09:14 / 30 Mo)
pyrenees_gmapsupp.img (2024-11-01 05:00:18 / 569 Mo)
reunion_gmapsupp.img (2024-11-01 05:09:12 / 15 Mo)

Pour voir les zones couvertes par les cartes 'plus' et des massifs montagneux : France plus / Pyrénées / Alpes.

Et la légende ? Le plus simple c'est de regarder cette capture d'écran du TYP.

Vous voulez une autre zone et ne souhaitez pas le faire par vous-même ? Mes ressources et mon temps sont limités. Vous pouvez me contacter pour que nous en discutions, sachez que si vous pouvez aider financièrement cet espace cela sera apprécié.

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.

Pour disctuer de ces cartes rendez-vous sur Randonner-Leger

Si vous voulez me contacter pour en savoir plus, c'est par ici

Si vous voulez soutenir mon travail, vous pouvez faire un don ici