Passer des données de Google Earth à OSMAnd

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 et Path et pas les autres champs sous Google Earth. Sous Google Maps, il est possible d’utiliser aussi le champ description.
  • Dans les noms d’objets de Marker et de Path, 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 un fichier.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 du fichier.kml. Cela peut concerner des attributs <xsi> que l’on efface simplement dans le fichier KML et on retente la conversion ensuite.
Interface GPSBabel

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>

Icônes graphiques sous OSMAndEn 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: &lt;br&gt;categorie: phar</cmt>
    <desc>description: &lt;br&gt;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.

icher points.HTML ouvert dans le navigateur

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

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

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

Leave a Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.