Le format des fiches PDF de nos circuits de randonnées a été modifié récemment. L’objectif est d’ajouter des informations sans dépasser le format A4.
En effet, les statistiques de BaladesEnNormandie.fr montrent que de nombreux utilisateurs préfèrent la fiche de randonnée au format PDF à la trace GPS. C’est paradoxal pour une plateforme de partage de traces GPS, mais les faits sont là.
Pour ajouter ces informations complémentaires, j’ai créé un bandeau de logos et les nombres correspondants (longueur, durée, altitudes, dénivelé positif cumulé..)
Lors de la mise à jour du modèle des fiches PDF, j’ai simplifié le tracé en l’affinant et en supprimant les flèches de sens. Ces flèches se confondaient parfois avec le tracé et pouvaient prêter à confusion.
Pour remplacer ces flèches de sens, j’ai ajouté un logo qui précise le sens horaire ou antihoraire des boucles de randonnées.
Question pour les amateurs de programmation (ou de math) : comment déterminer si un circuit progresse dans le sens horaire ou le sens antihoraire ?
Les formules d’orientation de polygones (wikipedia) (mathworld) ne fonctionnent pas : nos tracés ne sont pas des figures fermées, pas forcément convexes, et le nombre de points est trop important.
Pour une plateforme qui héberge un millier de fichiers gpx, il faut quelque chose de simple et rapide.
Je vais faire bondir les puristes, mais voilà comment j’ai procédé :
- Je sélectionne 4 points de la trace GPX : le point le plus au nord, le plus au sud, le plus à l’est et le plus à l’ouest. C’est facile à déterminer, par simple comparaison avec le point précédent. Ma référence est le point de départ, si le point suivant a une latitude inférieure, il devient le point nord etc…
- Si la succession chronologique de ces 4 points est de type « nord est sud ouest », il s’agit d’un tracé en sens horaire. Si la succession est de type « nord ouest sud est », il s’agit d’un tracé en sens antihoraire.
J’imagine bien un circuit concave ou un circuit en 8 qui casserait l’algorithme, mais pour le moment ça semble fonctionner. N’hésitez pas à me signaler toute erreur !
Le résultat de l’algorithme est enregistré pour éviter de refaire le calcul à chaque fois. L’algorithme fonctionne lors de la consultation d’un circuit, et quand cette information n’existe pas pour ce circuit.
Pour les nouveaux circuits, un champ du formulaire permettra de donner cette information.
Salut ! Le circuit de Ouainville (76) n’affiche pas de sens ? C’est pas la galère tous ses scripts ? Merci en tout cas pour balades en normandie !
Salut Vincent. La galère, parfois, mais je me régale avec ces scripts : les imaginer, résoudre (plus ou moins) les problèmes, vaincre les méchants bugs… Mieux qu’un jeu vidéo ! Mais, comme tu le constates, j’ai mes limites !
Ce script ne trouve pas toujours le sens d’un circuit, et dans ce cas il se contente de ne pas donner cette info. Pour Ouainville, j’ai ajouté le sens antihoraire manuellement.