GIS dans vélovacances

Dans le site https://velovacances.jack31.org/ , voyage oblige, j’utilisais beaucoup GIS ; j’ai personnalisé un des modèles json pour mon besoin et utilisé plusieurs des astuces trouvées dans le carnet.

Dans les articles

Dans les articles j’utilisais le modèle avec les critères suivants :

<carte_gis2|objets=documents_article|id_article=72|tooltip=oui|lat = 47.87 et lon = 17.55|centrer_fichier = non| zoom=10|limit=100|scale=oui|fullscreen = oui | gpx = 588>

Puis lorsque j’ai voulu réduire le poids de la carte j’ai changé un peu de solution et j’ai appelé les cartes ainsi :

<carte_gis2|objets=documents_art|id_article=204|tooltip=oui|lat = 44.15| lon = 4.99|centrer_fichier = non| zoom=10|scale=oui|fullscreen = oui >

J’utilisais un modèle json personnalisé,

  • le premier gis_documents_articles permettait d’afficher le logo avec le titre sur la carte
  • ensuite quand j’ai utilisé le plugin GIS-Géométrie j’ai simplement collé devant ce modèle le contenu de gis_articles et je l’ai renommé en json/gis_documents_art.

GIS utiliser la couche FR

Au départ j’avais mis une couche que j’estimais générique, la carte gis en anglais... Suite à une remarque de Nicod j’ai utilisé la couche en français (OpenStreetMap FR) :

  • cette couche me semble plus détaillée que la couche de base
  • par contre seules les villes principales sont "en français", les villes moins importantes sont écrites dans la langue d’origine

Les couleurs des tracés

Sinon, l’astuce en question fonctionne sur ta page avec :
.leaflet-interactive:nth-child(0n+2) {stroke:#000 !important;}
Peut-être une erreur de saisie de la personne qui a rédigé cette astuce ?
cf https://developer.mozilla.org/fr/docs/Web/CSS/:nth-child : il faut le ’+’
mais (2) devrait marcher aussi.

Avec ou sans le "+" ça ne marchait pas bien dans mon cas (mais c’était peut-être lié au cache), ce qui marchait c’était ça :
.leaflet-interactive:nth-child(even) {stroke:#9d2046 !important;}
La couleur par défaut pour le reste me satisfaisant je n’ai pas déclaré
.leaflet-interactive:nth-child(odd)

Ensuite lorsque j’ai utilisé Géométrie cette ligne n’a plus agi puisque j’inscrivais la couleur directement dans le point.
"En utilisant GIS Geometries tu peux spécifier la couleur des tracés directement depuis l’espace privé après avoir importé tes fichiers en base. "
A noter que la documentation de cette possibilité de modifier les couleurs des tracés est dans le commit qui l’a introduite (version 4.3.3 de GIS "Les champs de styles ne sont affichés que si gis_geometries est actif et qu’on a activé l’option correspondante dans la configuration de GIS")

Une page pour lister les étapes prévues

J’ai adapté l’astuce du carnet "https://contrib.spip.net/Astuces-GIS#Appeler-un-point-geolocalise-a-partir-d-un-squelette " pour afficher les étapes prévues.

  • fait un tableau avec les pays, les villes en titre avec leurs coordonnées GPS et une colonne avec la distance du point précédent
  • les points et distance ont été chargés dans la table spip_gis via adminer
  • le lien des points avec les articles concernés également importés dans la table spip_gis_liens avec adminer
  • le tableau est appelé avec le fichier modeles/pointsgis.html

Par contre pour que les points s’affichent surla carte il fallait que l’article soit publié. Pas bien compris pourquoi ni ou il aurait fallu que je rajoute un {tout}

Les cartes avec l’ensemble des GPX

"Je souhaite mettre sur mon blog de balade à vélo une carte avec l’ensemble des tracés GPX en récupérant dynamiquement les GPX associés aux articles concernés. Cette première partie fonctionne assez correctement. Sauf que l’affichage de l’ensemble des tracés peut être très long, s’il y avait une piste pour que ça soit plus rapide ? "

La discussion sur la liste "spip-zone" https://www.mail-archive.com/spip-zone@rezo.net/msg47786.html

"Le problème ne vient pas vraiment du code mais du volume de données à transférer, ta page charge 21,80 Mo de fichiers GPX, ça n’est pas rien :-p

Dans ce genre de cas il y a plusieurs pistes d’optimisation :

  • utiliser des fichiers topojson plutôt que du GPX (obtenus après conversion des GPX)
  • plus simple, utiliser GIS Geometries et importer tes tracés en base de données, ainsi le site utiliserait du geojson pour leur affichage et tu gagnerais peut-être un peu en poids, mais jamais autant qu’avec du topjson
  • simplifier le tracé de tes GPX (ou du topojson généré), mais dans ce cas tu perdras en précision du tracé "

Transformer en topojson

"Tu peux le faire en deux temps :

Le souci c’est que ça rajoute des opérations extérieures et supplémentaires,j’ai trouvé ça trop lourd durant le trajet alors je suis resté sur la solution avec GIS-Géométrie

Au retour j’ai fait des essais et apparemment sur le site http://ogre.adc4gis.com/ il y a un souci avec mes fichiers gpx puisqu’il y a ces messages d’erreur :

  • Warning 6 : dataset /vsistdout/ does not support layer creation option RFC7946\n
  • Warning 1 : The output driver does not natively support DateTime type for field time. Misconversion can happen. -mapFieldType can be used to control field type conversion.\n
  • nERROR 1 : Layer routes not found, and CreateLayer not supported by driver.
  • ERROR 1 : Terminating translation prematurely after failed\ntranslation of layer routes (use -skipfailures to skip errors)

Mais ça fonctionne avec le fichier kml issu de la même application.

le format "topojson"

Faire l’essai sur https://mapshaper.org/ m’a permis de comprendre le dialogue de sourds que j’avais avec b_b sur ce format. J’avais utilisé une appli en ligne https://mygeodata.cloud/ qui convertit sans problème mes fichiers mais les exporte avec l’extension « topojson », qui n’est effectivement pas reconnue par SPIP… Alors que https://mapshaper.org/ convertit en topojson mais l’extension donnée au fichier est bien json… donc pas de souci avec cet outil

L’utilisation de gis_geometries

- J’ai repris tous les articles précédents pour intégrer les gpx dans geometry et ajouté un mot clé pour ne conserver que les gpx du voyage et je trouve que le résultat s’affiche assez rapidement. Il y a un peu de latence mais je trouve ça suffisamment rapide.
Super, ça va, le temps de chargement est "raisonnable" par rapport au niveau de complexité des tracé qui génère un json de 4.87Mo.

Content que la solution te convienne

En conclusion ?

D’ici mon prochain voyage je vais essayer d’améliorer tout ça... Pour les articles j’avais trouvé le rythme et je les faisais assez rapidement, mais la page générée avec l’ensemble des tracés est tout de même trop lourde.
J’ai vu sur la page https://www.weblog.eliaz.fr/article120.html que pour réduire le poids des tracés une astuce pouvait consister à réduire le nombre de décimales, c’est sur que dans mon cas le gain serait non négligeable... mais comment le faire ? L’idéal serait de pouvoir utiliser un filtre...
A plusieurs reprises j’ai copié la vue en coupe de l’altitude dans les récits. J’ai fait des essais avec cy_altern pour intégrer les points d’altitude des gpx et réaliser ce graph avec un modèle qui utiliserait le plugin chart.js. Pour l’instant c’est encore expérimental il faut trouver moyen de réduire le nombre de points (des gpx ont plus de 5000 points) en conservant l’essentiel de la courbe...
A voir/ à suivre ?...