Les fichiers GPX
de tours et de points d’intérêt à télécharger librement ne répondent souvent pas à ses propres attentes. C’est surtout le cas quand on sort des sentiers battus. Et c’est encore plus crucial quand on voyage loin et dans un laps de temps restreint. S’il faut alors chercher pour chaque emplacement ou chaque point de vue dans plusieurs applications sur le portable, on n’en finit pas. Mieux vaut donc préparer ses propres fichiers avec ses propres catégories.
- Première publication janvier 2020
- Mis à jour en septembre 2020 avec les nouvelles icônes sous OSMAnd
- Mis à jour en mai 2021 avec des couleurs pour les tracés
- Mis à jour en juillet 2022 avec des couleurs pour icône sous iOS
- Mis à jour en août 2022 pour prendre en compte les changements de la console du navigateur Chrome
Bien sûr, cela prend beaucoup de temps en amont. Mais sur place, cela peut dépanner: un point X n’est pas faisable? Eh bien on prend le point suivant dans les environs, il est du même type et avec des coordonnées géographiques, on les repère aisément.
Nous passons pour finir toutes ces données sur le téléphone portable dans l’application OSMAnd. Elle a l’avantage de fonctionner hors connexion internet à condition d’avoir chargé les cartes des pays traversés avant le départ. OSMAnd est disponible sous Android et iPhone. La version libre permet de télécharger un nombre limité de cartes. Dans version payante (environ EUR20), il n’y a que la limite de la mémoire du téléphone qui est à considérer, toutes les mises à jour des données sont incluses. Il y a aussi un abonnement dont une partie est reversé aux éditeurs OSM. Hormis les données de base, on trouve aussi des couches spéciales comme l’ombrage du terrain (pour mieux voir le relief), les lignes de niveau (payantes pour EUR10), les informations Wikipédia géolocalisées etc. OSMAnd permet bien sûr aussi d’enregistrer et de suivre des traces (tracks) et d’ajouter des points d’intérêt. C’est un outil GPS complet. Il y a d’autres applications du même type qui permettent aussi d’importer des fichier GPX
édités, mais ceux-ci utilisent d’autres codages.
Ceci est une description d’une conversion conservant certaines styles comme les couleurs et les groupements lors du passage de KML
vers GPX
. Le problème: Google Maps et Google Earth n’exportent proprement que du KML et OSMAnd n’importe que du GPX
. Sans prendre des précautions, symboles et couleurs sont perdus.
Le procédé décrit est artisanal, mais il ne requiert pas de programmes payants. Beaucoup de passages peuvent être optimisés. Des conseils d’amélioration sont bien venus!
Préparation
- N’utiliser que le nom d’objet de
Marker
etPath
et pas les autres champs sous Google Earth. Sous Google Maps, il est possible d’utiliser aussi le champdescription
. - Dans les noms d’objets de
Marker
et dePath
, ne pas utiliser de souligné_
car cela génère des sous-catégories sous des anciennes versions de OSMAnd. - Utiliser des préfixes et/ou suffixes pour différencier plus tard les couleurs et catégories sous OSMAnd.
egli-stChristophe-AA
rest-laBonneMeuniere
monu-aquedutoDaAguasLivres-marAdim10-1730-AA
natu-cascadeSillans-AAA-OK
Conversion
Ce n’est pas un programme tout prêt:
- Enregistrer le dossier concerné sous KML. Tous les sous-groupements seront perdus dans les fichiers
GPX
résultants, ceux-ci ne connaissant sous OSMAnd que des catégories. On exporte donc unfichier.kml
- Le convertir en
fichier.gpx
. On peut utiliser plusieurs méthodes, par exemple en ligne sous kml2gpx.com ou de manière locale avec le logiciel libre GPSBabel. L’interface de ce dernier est visible dans la capture d’écran ci-bas. Dans le champ du bas sont affiché le succès ou les erreurs survenues lors de la conversion. La conversion s’arrête sur des erreurs en affichant la ligne concernée dufichier.kml
. Cela peut concerner des attributs<xsi>
que l’on efface simplement dans le fichier KML et on retente la conversion ensuite.

Interface GPSBabel
Logique du traitement des points (Marker, Placemark)
Pour faire ressortir les couleurs sous OSMAnd, il faudrait un bon éditeur XML scriptable, mais ils sont tous payants. On peut cependant se servir de la console du navigateur (nous utilisons Google Chrome, mais Mozilla Firefox marche aussi). L’idée est de se servir des préfixes et suffixes pour attribuer des codes de couleur et de catégories pendant que l’on transforme le fichier GPX
initial. Les points (<wpt>
) y ressemblent à ceci:
<wpt lat="38.726536000" lon="-9.166323000"> <ele>0.000000</ele> <name>monu-aquedutoDaAguasLivres-marAdim10-1730</name> <cmt>description: venir le matin</cmt> <desc>description: venir le matin</desc> </wpt>
Il ne faut pas des retours à la ligne dans les balises <desc>
!
Nous avons besoin des parties vertes pour le référencement géographique et l’information en rouge pour attribuer un type. En orange se trouvent des parties descriptives. L’intérêt d’avoir la partie majeure dans le nom est de d’avoir cette information dans la carte OSMAnd sans passer dans des sous-menus comme pour l’exemple de « venir le matin ».
À la fin il nous faut un tel <wpt>
:
<wpt lat="38.726536000" lon="-9.166323000"> <name>monu-aquedutoDaAguasLivres-marAdim10-1730</name> <desc>venir le matin</desc> <extensions> <osmand:color>#b4F5A9A9</osmand:color> <osmand:background>circle</osmand:background> <osmand:icon>special_poi_colosseum</osmand:icon> </extensions> <type>monument</type> </wpt>
En haut se trouve un grand bloc en rouge. Sous
<extensions>
se trouve toute la définition graphique de l’icône. Depuis environ 2020, OSMAnd propose en plus du point simple des icônes graphiques qui ne sont cependant documentés nulle part. Nous avons donc placé des icônes qui nous sont utiles dans OSMAnd et nous les avons par la suite identifiés dans le ficher favourites.gpx
qui se trouve dans la racine des dossiers OSMAnd sur un portable Android. On peut voir au choix disponible et aux noms, que ces icônes ne sont peut être pas définitifs. Voir le bloc code plus bas pour les retrouver.
Depuis environ 2021 existent aussi deux autres formes de symboles à côte de circle
: square
et octagon
.
Logique du traitement des lignes (Track, LineString)
Les lignes ont la forme ci-bas dans le fichier GPX
converti. Les couleurs sont comme en haut et il faut aussi enlever certaines choses et en rajouter d’autres. Le principe des extensions est semblable. Nous n’avons pas encore testé des différentes tailles de lignes ou des transparences. Les lignes « en haut » sous Google Earth sont ensuite « en bas » sous OSMAnd.
<trk> <name>tra3-mont-aiguille</name> <trkseg> <trkpt lat="43.900093684" lon="10.653219156"> <ele>0.000000</ele> </trkpt> <trkpt lat="43.900343810" lon="10.653352325"> <ele>0.000000</ele> </trkpt> <trkpt lat="43.900829381" lon="10.653623711"> <ele>0.000000</ele> </trkpt> [...] <trkseg> <trk>
Il nous faut:
<trk> <name>tra1-mont-aiguille</name> <trkseg> <trkpt lat="43.900093684" lon="10.653219156"></trkpt> <trkpt lat="43.900343810" lon="10.653352325"></trkpt> <trkpt lat="43.900829381" lon="10.653623711"></trkpt> [...] <trkseg> <extensions> <osmand:color>#b4ffff00</osmand:color> </extensions> <type>randonnees</type> <trk>
Utiliser le navigateur et sa console
On prend un fichier HTML et on y introduit à la fin le fichier GPX
sortant de GPSBabel tel quel. Le JavaScript traitera la partie GPX
et la transformera. Cette transformation est visible sous la console (Ctrl+Alt+J
ou F12
).
Le principe: on charge le fichier texte GPX
, on le lit de haut en bas et le résultat transformé est écrit directement dans la console. On ne peut pas simplement lire le fichier ligne par ligne car il y a des éléments à déplacer et d’autres sont à effacer ou à créer. Le GPX
est cependant un format XML
comme le HTML
et la base interne est le DOM (Document Object Model) hiérarchique. Un script peut travailler sur les nœuds de ce DOM
On crée un fichier HTML local comme ci-bas.
- bleu: cadre HTML
- noir: définition des types et des couleurs
- rouge: le cadre JavaScript, la boucle par les points (
wpt
) et les lignes (trk
) et d’autres aides - vert clair :mémoriser l’élément
name
pour plus tard. - orange: effacement du contenu superflu (tous les convertisseurs génèrent du contenu inutile)
- mauve clair: essayer d’extraire la description
- bleu clair: extraction des préfixes et suffixes par expressions régulières (RegEx)
- gris: transformation du DOM
- vert foncé: le
GPX
d’origine
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script> function init(){
// COULEURS NORMALES, CLAIRES (OK), FONCES (A,AA,AAA) var colors = Array(); colors["rouge"] = ["FF0000","F5A9A9","B40404"]; // monu vill muse arch colors["orange"] = ["FF8000","F5D0A9","DBA901"]; // shop rest food marc colors["jaune"] = ["ffdb3b","ffe46b","ffd000"]; // phar colors["vert"] = ["36bd2a","67d15e","0fa302"]; // natu hike colors["vertBleu"] = ["00FF80","81F7BE","04B45F"]; // vues colors["turquoise"] = ["00FFFF","A9F5F2","01DFD7"]; // toil eaup colors["turquoiseBleu"] = ["00BFFF","81DAF5","0489B1"]; // camp empl sost colors["bleu"] = ["0040FF","A9BCF5","0404B4"]; // park tran colors["violet"] = ["BF00FF","E2A9F3","8904B1"]; // chap egli colors["rose"] = ["FF00FF","F5A9F2","B404AE"]; // vill colors["gris"] = ["848484","E6E6E6","585858"]; // info // LES DIVERES INCONES DIFFERENCIES PAR COULEUR ET SYMBOLE. var items = Array(); items["monu"] = ["rouge", "monument", "special_poi_colosseum"]; items["vill"] = ["rose", "ville", "place_city"]; items["muse"] = ["rouge", "musee", "tourism_museum"]; items["phar"] = ["jaune", "phare", "man_made_lighthouse"]; items["shop"] = ["orange", "magasin", "shop_supermarket"]; items["rest"] = ["orange", "restaurant", "restaurants"]; items["food"] = ["orange", "aliments", "shop_alcohol"]; items["marc"] = ["orange", "marche", "food_shop"]; items["hike"] = ["vert", "rando", "special_trekking"]; items["natu"] = ["vert", "nature", "nature_reserve"]; items["swim"] = ["bleu", "swim", "nature_reserve"]; items["vues"] = ["vertBleu", "panorama", "tourism_viewpoint"]; items["toil"] = ["turquoise", "toilettes", "amenity_toilets"]; items["eaup"] = ["turquoise", "eau-potable", "leisure_water_park"]; items["camp"] = ["turquoiseBleu", "camping", "tourism_camp_site"]; items["empl"] = ["turquoiseBleu", "emplacement", "park"]; items["sost"] = ["turquoiseBleu", "aire-cc", "special_campervan"]; items["park"] = ["bleu", "parking", "amenity_parking"]; items["tran"] = ["bleu", "transport", "special_shuttle_bus"]; items["buss"] = ["bleu", "transport", "special_shuttle_bus"]; // VIEUX items["chap"] = ["violet", "chapelle", "building_type_church"]; // VIEUX items["egli"] = ["violet", "eglise", "special_poi_sagrada_familia"]; items["info"] = ["gris", "information", "special_information"]; items["plan"] = ["gris", "plan", "special_time_start"]; // COULEURS POUR LES LIGNES items["tra1"] = ["vert", "facile", "facile", "track"]; items["tra2"] = ["jaune", "moyen", "moyen", "track"]; items["tra3"] = ["rouge", "difficile", "difficile", "track"]; // EDITE GPX-ROOT ELEMENT. NECESSAIRE POUR OSMAND ANDROID DEPUIS 2021, ACEPTE AUSSI SOUS IOS var myroot = document.querySelectorAll('gpx'); myroot = myroot[0]; myroot.setAttribute("version", "1.1"); myroot.removeAttribute("creator"); myroot.setAttribute("xmlns", "http://www.topografix.com/GPX/1/1"); myroot.setAttribute("xmlns:osmand", "https://osmand.net"); myroot.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); myroot.setAttribute("xsi:schemaLocation", "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"); // EDITE LES WAYPOINTS var elems = document.querySelectorAll('trk,wpt'); for (var i=0; i<elems.length; i++){ var nameHere = elems[i].getElementsByTagName("name")[0].innerHTML; if(elems[i].getElementsByTagName("extensions")[0]){ // EFFACER LES BALISES INUTILES elems[i].removeChild(elems[i].getElementsByTagName("extensions")[0]); } if(elems[i].tagName == "TRK"){ // ENLEVER LA BALISE ELEVATION AUX TRACK POINTS var trkpt = elems[i].querySelectorAll('trkpt'); for (var j = 0;j < trkpt.length; j++){ if(trkpt[j].firstElementChild && trkpt[j].firstElementChild.tagName == "ELE"){ trkpt[j].removeChild(trkpt[j].firstElementChild); } } } else { // ENLEVER LA BALISE ELEVATION AUX WAYPOINTS if(elems[i].getElementsByTagName("ele")[0]){ elems[i].removeChild(elems[i].getElementsByTagName("ele")[0]); } } // AUTRES BALISES if(elems[i].getElementsByTagName("type")[0]){ elems[i].removeChild(elems[i].getElementsByTagName("type")[0]); } if(elems[i].getElementsByTagName("cmt")[0]){ elems[i].removeChild(elems[i].getElementsByTagName("cmt")[0]); } // TRAITER LA DESCRIPTION SI DIPONIBLE POUR EVITER DES RETOURS À LA LIGNE if(elems[i].getElementsByTagName("desc")[0]){ var myContent = elems[i].getElementsByTagName("desc")[0].textContent; if(myContent.match(/description: \<br/)){ // VIDE elems[i].removeChild(elems[i].getElementsByTagName("desc")[0]); } else { // AVEC DU CONTENU myContent = myContent.replace(/description: /i, ""); myContent = myContent.split("<br"); elems[i].getElementsByTagName("desc")[0].textContent = myContent[0]; } } // TRANSFORMATION var typeHere = nameHere.split("-"); if(!(items[typeHere[0]])){ // MESSAGE ERREUR ET ARRET SI TYPE PAS CONNU alert("error type: " + typeHere[0]); } var newElem = document.createElement("extensions"); // LA BALISE EXTENSIONS var newSubElem = document.createElement("color"); // LA BALISE COULEUR SOUS EXTENSIONS var newSubElemCont; var cat = ""; if(nameHere.match(/-OK$/)){ newSubElemCont = document.createTextNode("#"+colors[items[typeHere[0]][0]][1]); // DEJA FAIT cat = items[typeHere[0]][1] + "-D"; } else if(nameHere.match(/-A+$/)){ newSubElemCont = document.createTextNode(#"+colors[items[typeHere[0]][0]][2]); // ETOILES (A,AA,AAA) cat = items[typeHere[0]][1] + "-A"; } else { newSubElemCont = document.createTextNode("#"+colors[items[typeHere[0]][0]][0]); // NORMAL cat = items[typeHere[0]][1]; } newSubElem.appendChild(newSubElemCont); newElem.appendChild(newSubElem); // AJOUTER BALISE COULEUR A EXTENSIONS if(items[typeHere[0]][3] != "track"){ // SEULEMENT ICONES var newSubElemC = document.createElement("osmand:background"); // LA BALISE BACKGROUND SOUS EXTENSIONS newSubElemC.appendChild(document.createTextNode("circle")); newElem.appendChild(newSubElemC); // AJOUTER BALISE BACKGROUND A EXTENSIONS var newSubElemI = document.createElement("osmand:icon"); // LA BALISE ICON SOUS EXTENSIONS newSubElemI.appendChild(document.createTextNode(items[typeHere[0]][5])); newElem.appendChild(newSubElemI); // AJOUTER BALISE BACKGROUND A EXTENSIONS } // TOUT ASSEMBLER elems[i].appendChild(newElem); // AJOUTER BALISE EXTENSIONS var newElem = document.createElement("type"); // AJOUTER BALISE TYPE var newElemCont = document.createTextNode(cat); newElem.appendChild(newElemCont); elems[i].appendChild(newElem); } // FIN DE LA BOUCLE SUR LES POINTS wpt alert(elems.length); // NOMBRE D'ELEMENTS TRAITES ET CONFIRMATION DE CONFORMITE } FIN DE LA FONCTION init() function printDOM() { var a = document.getElementsByTagName('body')[0].innerHTML; // LE DOM SOUS FORME DE TEXTE a = a.replace('<button onclick="printDOM()">Print DOM</button>',''); // EFFACE LIGNES INUTILES a = a.replace('<h1 id="hhh">GPX</h1>',''); // SUITE EFFACEMENT a = a.replace('<!--?xml version="1.0" encoding="UTF-8"?-->',"<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>"); // REECRIRE L'ENTETE XML a = a.replace('</bounds>',''); // REECRIRE LA BALISE bounds QUI EST FAUSSEMENT ETENDUE JUSQU'A LA FIN PAR LA TRANSFORMATION DU DOM a = a.replace(/(maxlon\=\"\d*\.\d+)\"/,'$1"/'); // FERMER LA BALISE a = a.replace(/(^[ \t]*\n)/gm, ""); // EFFACER LIGNES VIDES console.log(a); // AFFICHER LE CONTENU MODIFIE DANS LA CONSOLE } </script> </head> <body onload="init()"> <h1 id="hhh">GPX</h1> <button onclick="printDOM()">Print DOM</button><hr/> <!-- ICI VIENT LE FICHIER GPX ENTIER --> <?xml version="1.0" encoding="UTF-8"?> <gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0"> <time>2018-03-23T17:08:07.415Z</time> <bounds minlat="36.963316000" minlon="-9.509387000" maxlat="48.885960000" maxlon="4.134580000"/> <wpt lat="46.890513000" lon="-2.161012000"> <ele>0.000000</ele> <name>phar-tourelleBoisVinet-ruine-vueDeW</name> <cmt>description: <br>categorie: phar</cmt> <desc>description: <br>categorie: phar</desc> </wpt> <!-- ETC. --> </gpx> </body> <!-- FIN DU FICHIER HTML --> </html>
On ouvre alors le fichier HTML localement pour voir ce genre de résultat, pour traiter près de 2000 points il faut quelques secondes.

fichier.HTML ouvert dans le navigateur
On confirme le message et on ouvre la console avec Ctrl+Alt+J
ou F12
. La console s’ouvre soit dans une nouvelle fenêtre, soit en bas de page.
Ensuite, on clique sur Print DOM
dans le navigateur et la console se remplit de code XML. Il s’agit de notre fichier GPX
final pour OSMAnd, mais il faut encore l’extraire.

Console après génération du contenu GPX
Cliquer d’abord sur Show ... more
ou directement sur Copy
. Le presse-papier contient le fichier GPX
final. Attention: avec des Tracks longs et quand le fichier GPX
initial dépasse 1Mo, il faut patienter pour que la console finisse d’afficher le résultat.

Fichier points.gpx final. Photo © André M. Winter
Avant de continuer: vérifier la fin du fichier, il doit se terminer proprement sans signes spéciaux comme « ÿ </圠Ҵ ». C’est souvent un signe d’une mauvaise conversion de KML
à GPX
, mais le problème peut aussi de trouver en amont. La fin doit aussi avoir cette forme:
<wpt lat="68.265249817" lon="15.970976227"> <name>empl-bord-mer-p4n-AA</name> <desc>empl-bord-mer-p4n-AA</desc> <extensions><osmand:color>#0489B1</osmand:color><osmand:background>circle</osmand:background><osmand:icon>park</osmand:icon></extensions><type>emplacement-A</type></wpt> <wpt lat="68.111862797" lon="15.840658688"> <name>empl-foret-mer-p4n-A</name> <desc>empl-foret-mer-p4n-A</desc> <extensions><osmand:color>#0489B1</osmand:color><osmand:background>circle</osmand:background><osmand:icon>park</osmand:icon></extensions><type>emplacement-A</type></wpt> </bounds></gpx>
et non pas cette forme avec deux balises <extension> à la fin. Cela indique une erreur quelque par au milieu du fichier de base ou de celui exporté.
<wpt lat="68.265249817" lon="15.970976227"> <name>empl-bord-mer-p4n-AA</name> <desc>empl-bord-mer-p4n-AA</desc> <extensions><osmand:color>#0489B1</osmand:color><osmand:background>circle</osmand:background><osmand:icon>park</osmand:icon></extensions><type>emplacement-A</type></wpt> <wpt lat="68.111862797" lon="15.840658688"> <name>empl-foret-mer-p4n-A</name> <desc>empl-foret-mer-p4n-A</desc> <extensions><osmand:color>#0489B1</osmand:color><osmand:background>circle</osmand:background><osmand:icon>park</osmand:icon></extensions><type>emplacement-A</type></wpt> <extensions><osmand:color>#0040FF</osmand:color><osmand:background>circle</osmand:background><osmand:icon>amenity_parking</osmand:icon></extensions><type>parking</type></wpt> </bounds></gpx>
plus haut, on reconnaît ces erreurs par une longue ligne manquante dans la zone rouge.
<wpt lat="61.966794798" lon="7.250634211"> <name>park-empl-route-p4n</name> <desc>park-empl-route-p4n</desc> <extensions><osmand:color>#0040FF</osmand:color><osmand:background>circle</osmand:background><osmand:icon>amenity_parking</osmand:icon></extensions><type>parking</type></wpt> <wpt lat="63.428670307" lon="10.418236193"> <name>park-3h-max-nok90-avec-app</name> <desc>park-3h-max-nok90-avec-app</desc> <wpt lat="62.107828320" lon="7.180594661"> <name>camp-solhaug-petit-nok550-p4n</name> <desc>camp-solhaug-petit-nok550-p4n</desc> <extensions><osmand:color>#00BFFF</osmand:color><osmand:background>circle</osmand:background><osmand:icon>tourism_camp_site</osmand:icon></extensions><type>camping</type></wpt> <wpt lat="63.414991077" lon="10.267075644"> <name>empl-park-foret-divers-le-long-route</name> <desc>empl-park-foret-divers-le-long-route</desc> <extensions><osmand:color>#00BFFF</osmand:color><osmand:background>circle</osmand:background><osmand:icon>park</osmand:icon></extensions><type>emplacement</type></wpt>
Importer le fichier.gpx dans OSMAnd
Sous Android
Transférer le fichier sur le portable. Nous partons ici d’un fichier mixte, contenant donc des points et des lignes. Un fichier GPX peut être ajouté sous « favoris » et « tracés ».
Sous favoris
Cela se passe sous les trois tirets en bas à gauche, puis on va sur « mes lieux favoris » et ajouter. Dans ce cas uniquement les points sont ajoutés et ils sont triés par dossiers issus de la baise <type>
. Les points peuvent être sélectionnés sous « mes lieux favoris » et dans la carte.
On efface des points favoris uniquement sous « mes lieux favoris ».
Sous traces
Cela se passe sur l’icône en haut à gauche, en général c’est une terre bleue, puis on va sur « traces » et « autre GPX … ». Quand la liste des tracés et longue, ce dernier point peut disparaitre en bas et il faut le tirer vers le haut. Le fichier est affiché en bloc. Les points ne sont pas listes sous « mes lieux favoris », mais ils sont interactifs sur la carte. Les tracés ne sont passifs, même si des icones de début et de la fin apparaissent. Les couleurs définis aux lignes sont transposés sous OSMAnd, mais il semble y avoir un bug: dès que l’on ajoute un autre tracé GPX, les couleurs assignés disparaissent et le rouge standard est appliqué aux lignes.
Ces tracés, qu’ils soient uniques ou en bloc, s’effacent uniquement dans le système Android sous « fichiers » sous /osmand/tracks/
. Attention, le dossier sous /osmand/tracks/rec/
contient les fichiers activement enregistrés avec l’application OSMAnd.
Sous iOS
Sous iPhone, il est plus simple d’envoyer le ficher GPX par email et de l’ouvrir de là, il est importé comme trace.
On peut aussi passer par iCloud et copier sur le portable le fichier de là vers le dossiers exposé Sur mon iPhone
> OsmAnd Maps
> GPX
( > Import
). Le dossier rec
contient les traces enregistrés avec le portable.
Séparer les lignes une à une
Les lignes importés dans OSMAnd sont statiques, si on en a plusieurs dans un fichier GPX
, il est impossible de les différencier ou de ne pas afficher d’autres. Dans le cas de plusieurs tracés de randonnée partant du même points ou se recoupant, on ne dissocie plus rien.
Le seul moyen d’y remédier que nous avons trouvé est de sauvegarder les lignes une par une ce qui est fastidieux. Nous les laissons donc ensemble dans un fichier GPX
et on les traite par un fichier Perl. Cela marche aussi avec d’autres types de scripts, mais nous avions un bout de code sous la main. Le fichier ressemble à ceci:
$infile = "./paths.gpx"; open(INFILE, "<",$infile) or die "Can't open input $infile: $!\n"; $header = ""; $track = ""; $name = ""; while (<INFILE>) { # PARCOURIR TOUT LE FICHIER $line = $_; # COPIER L'ENTÊTE DE FICHIER GPX POUR LE RÉUTILISER DANS TOUS LES FICHIERS INDIVIDUELS if ($line =~ m/xml / || $line =~ m/^\<gpx/ || $line =~ m/^\s+\<time/ || $line =~ m/^\s+\<time/ || $line =~ m/^\s+\<bounds/){ $header .= $line; } # COPIER UN PATH (TRKSEG) LIGNE PAR LIGNE if ($line =~ m/^\s+\<trk\>/ || $line =~ m/^\s+\<name\>/ || $line =~ m/^\s+\<trkseg\>/ || $line =~ m/^\s+\<trkpt/ || $line =~ m/^\s+\<ele\>/ || $line =~ m/^\s+\<\/trk\>/ || $line =~ m/^\s+\<\/trkpt\>/ || $line =~ m/^\s+\<\/trkseg\>/ ){ $track .= $line; } # IDENTIFIER ET UTILISER LE NOM (NAME), OUVRIR LE FICHIER SOUS CE NOM ET Y ECRIRE L'ENTÊTE if ($line =~ m/^\s+\<name/){ $line =~ /\<name\>(.+)\<\/name\>$/; $name = $1.".gpx"; open(TRKFILE,">",$name) or die "Can't open output trkfile: $!\n"; print TRKFILE $header; } # ECRIRE LE PATH DANS LE FICHIER DESTINATAIRE ET LE FERMER if ($line =~ m/^\s+\<\/trk>/){ print TRKFILE $track; print TRKFILE "</gpx>"; # FERMER LE FICHIER $track = ""; close(TRKFILE); } } close(INFILE);
Les fichiers GPX
ainsi générés se placent sur le portable sous /osmand/tracks/
pour Android et Sur mon iPhone
> OsmAnd Maps
> GPX
( > Import
) pour iOS. Ils peuvent ensuite être sélectionnés un à un et être affichés comme des tracés enregistrés directement sur le portable. Il faut éventuellement redémarrer OSMAnd pour que les nouveaux tracés apparaissent dans la liste.
No Comments