Abonnement à ma liste de contacts

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 
Si j'ai été absent pendant plusieurs semaines quant à la publication d'articles sur mon site personnel, c'est simplement car je mettais tout en œuvre de mon côté pour travailler sur un projet personnel qui devrait à terme déboucher sur un projet plus associatif dans les mois à venir, le développement d'un petit outil PHP qui permet de parser un fichier GPX, vous savez les fichiers qui enregistrent des parcours de marche, afin de pouvoir, une fois mon fichier GPX récupérer sur ma machine, afficher directement d'une part la carte avec le tracé du contenu du fichier, mais aussi toute une panoplie d'informations qui sont très souvent stockées dans ce même fichier. Pour celles et ceux que ca interesse et qui veulent aller plus loin,, je ,ne peux que vous conseiller la lecture (en anglais) de la page de description du format à l'adresse https://www.topografix.com/gpx/1/1/

Quoi récupérer ?

À partir de ce fichier, je récupère plusieurs informations. Notons que dans le projet que je vous propose ici, je qualifie le fichier GPX de complet. (complet dans le sens où j'ai toutes les infos qui m'interesse).
En effet, un fichier au format GPX peut contenir des informations facultatives, comme par exemple les instructions de navigation, des méta-données et peut être même d'autres informations que je n'ai pas vu. Les premières informations très importantes de ce fichier sont en effet les informations contenant l'ensemble des données GPS du tracé. On appelle en effet tracé, la trace, c'est-à-dire l'ensemble des points sur lesquels un usager est généralement passé. Effectivement, ce terme peut-être galvaudé dans la mesure où le dessin effectué peut ne pas avoir été généré par une trace, mais plus par un outil logiciel.

La classe 

Pour mener, à bien mon projet, j'ai utilisé une classe gpx4 (oui, il m'a fallu 4 essais pour arriver à mon but) , que j'ai écrite.
Non allez je vais aller un peu plus loin, vous savez très bien que j'ai une sainte horreur de la programmation objet,  j'ai utilisé pour une fois une (en fait deux) intelligences artificielles de génération de code ! Et oui, ce projet a été en partie générée par deux intelligences artificielles. D'une part chatgpt,  un outil qui certes vous ce qui vaut, pas génial à mon goût pour de la programmation, mais qui retourne quand même quelques petits éléments intéressants. Il ne faut pas avoir peur de corriger le code qui retourne, mais cela peut-être une bonne base de départ.
À côté de cela, j'utilise l'autre intelligence artificielle, Madame "Claude". En effet, cette intelligence artificielle est plus spécialisée dans le développement et la production de code à partir d'une phrase de description d'un projet. De plus, elle retourne pas mal de choses intéressantes, le mix des deux est plutôt un projet intéressant. Toutefois, dans les deux cas, mes demandes explicites de commenter le code ne sont pas brillantes !

Un unique point de départ

Pour concevoir cette synthèse, je suis parti d’un élément de base particulièrement simple : un fichier au format GPX (GPS Exchange Format). Ce fichier, généré lors d’une activité de marche ou d’un enregistrement GPS, contient uniquement les données brutes du parcours — coordonnées géographiques, altitudes, points de passage, et horodatages.
À partir de ce seul fichier, j’ai demandé a chatgpt de mettre en place un traitement automatique permettant d’extraire, calculer et présenter toutes les informations visibles sur la capture d’écran : distance totale parcourue, durée de l’itinéraire, vitesse moyenne, dénivelé cumulé, profils altimétriques, ainsi que les différentes étapes du trajet. Autrement dit, toute la richesse de cette synthèse repose sur l’exploitation intelligente de ce fichier unique.
firefox IzB67yQjXd

Mon besoin

 Comme beaucoup d'informaticiens, vous me savez donc très fainéant. Mon idée était de pouvoir donner en pâture un fichier GPX afin qu'il me ressorte automatiquement l'ensemble des informations que, jusqu'à présent, je recopiais à partir d'outils de cartographie très connu sur le web, afin de formaliser un article Joomla.
Je voulais bien entendu que ces articles jumia deviennent de plus en plus automatisés.
Le projet n'est pas d'attaquer les API de Joomla afin d'insérer un article automatiquement, mais de me proposer un brouillon que je puisse copier-coller, afin de pouvoir éventuellement apporter ma touche personnelle, avant de publier mon article.

Que fait alors mon projet ?

Dans ce paragraphe, je ne vais pas détailler l'ensemble du code des classes fournies par le projet. Leur nom et largement explicite afin de comprendre ce qu'elles font. Cependant, mon projet utilise la classe présentée, et après avoir instancier cette classe, je parse le fichier GPX au moyen de la méthode parseGPX().
Lorsque le fichier a subi ce traitement, le code me retourne un objet issu de l'instanciation de la classe permettant de traitement du fichier, et me retourne un objet $gpx.
Cet objet contient une méthode, renderLeafletMap(), donc le but est d'afficher la carte au moyen de l'outil OpenStreetMap, du tracé effectué au travers du fichier GPX.
A la suite de cette opération, une méthode getstatistics() permet de me retourner sous la forme de statistiques, toute une série de métadonnées issues du fichier GPX.
J'enchaîne la récupération des données au travers de la méthode generateInstructions() dont le but est de lire dans le contenu du fichier, l'ensemble des instructions d'actions à effectuer afin de suivre le tracé GPX. En l'occurrence, nous retrouvons les instructions pour tourner à gauche tourner à droite allez tout droit arrivée à destination etc...
La classe GPX fournie par le générateur de code Claude a aussi généré une deuxième classe sur le même principe que la précédente, mais dont le but est essentiellement dans un affichage des instructions sur une page web. Ainsi, j'appelle cette deuxième classe afin de pouvoir afficher ses instructions avec l'ensemble des balises <div> et <span> permettant d'appliquer une feuille de style.
 
À la suite de ces instructions, j'ai aussi demandé à Claude de me générer une méthode qui me permette d'extraire l'ensemble des métadonnées qui sont stockés dans le fichier au format GPX. Ainsi, j'appelle aussi cette méthode qui va m'afficher ces informations. Vous remarquerez que cette méthode a le suffixe HTML, pour la même raison, elle me retourne un code html propre sur lequel je vais pouvoir appliquer une feuille de style là aussi.
La dernière méthode Closestpoint permet de trouver le point le plus proche afin de pouvoir à partir de ce dernier calculer des distances. Encore une fois, je n'ai pas regardé en détail le code généré par Claude.

Nul en math

L'utilisation de Claude est en lien très étroit avec ma nullité mathématique (et oui, on peut être titulaire d'un BTS Informatique réseau avec 02 en math !). En effet, il est possible de calculer l'ensemble d'un parcours, en terme de distance, avec une suite de points GPS.
Cependant, après avoir regardé la formule mathématique, cette dernière fait appel a des conversions de degrés en radian, afin de pouvoir appliquer des sinus et des cosinus, des tangentes, des racines carrées. Même si je sais ce qu'est tout ça, j'ai vu ça au collège quand même, je suis bien incapable de sortir ses calculs maintenant thématique pour calculer ce genre de distance. Utilisation d'une intelligence artificielle dans ce cas est quand même fort pratique, ça évite d'aller embêter et copains ingénieurs.

Formatage

La dernière étape que j'ai effectué, qui même si elle n'est pas très compliquée pose quelques soucis quand nous n'avons aucune formation infographiste, a été à mise en page du résultat. En effet, même si Claude retourne du CSS joli et propre, il est loin d'être optimal et agréable. J'ai donc passé comme dernière étape la reprise du CSS qui a été généré, j'ai rajouté quelques classes et id ici et là afin d'appliquer un style propre et correct à mon résultat.
Parmi les éléments de mise en page, vous voyez que j'ai mis côte à côte l'ensemble de trois blocs, il y a
  • la carte
  • les informations GPX
  • ainsi que les instructions de navigation, ce qui peut largement être discutable.

Notamment, lorsque vous souhaitez appliquer comme je l'ai fait il y a la possibilité d'imprimer le résultat au format PDF, au travers d'une bibliothèque JavaScript (jsPdf). Et l'application du style et de la mise en place des divisions est vraiment très importante.

Je reconnais, c'est une des rares limites du code générer par Claude, cela dit, comme je n'avais pas pensé à l'impression au moment où j'ai commencé mon projet, je n'ai rien dit à Claude sur ses possibilités d'impression en PDF. Cela dit, je ne suis pas trop mécontent du résultat final.

 
La classe : 

Vous retrouverez ici tous mes articles explicatifs de mes concepts, mes résultats d'analyses techniques m'ayant permi d'aboutir à un fonctionnement de mes applicatifs très fonctionnel

Rapport sondage marche

Voici le rapport statistique du sondage (auquel vous pouvez toujours répondre) que j'ai lancé sur le sujet