Journal Cartes, marqueurs et automatisation

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
21
16
oct.
2022

Coucou à tous !

Petite matinée hack ce matin (et hack du matin, chagrin), que je partage : c'est du rapide et du sale, mais j'ai découvert plusieurs outils intéressants, donc je pose ça là si ça peut inspirer quelqu'un. Je ne met pas de code parce que c'est hyper spécifique (en fait non, j'ai juste honte), mais ça ne devrait poser aucun problème à recréer avec mes explications.

L'école de Mademoiselle Fille organise une distribution de douceurs aux personnes âgées du quartier : la classe sera divisée en 10 groupes, et chaque groupe, accompagné d'un adulte, ira sonner aux portes et offrir une boite à chaussures décorée et contenant chocolats, thé et autres.

Mon rôle, c'est, à partir du listing des-dites 50 personnes âgées identifiées par la mairie / paroisse / assoce locale, de créer 10 cartes avec 5 marqueurs, plus les noms, adresses, et notes additionnelles (ceux chez qui il faut frapper fort et longtemps, ceux à qui il faut se signaler à la fenêtre…).

Les années précédentes, ça a été fait manuellement, avec dans le meilleur des cas un fond de carte Google et des notes rajoutées au stylo. Mais je n'allais pas laisser passer l'occasion d'automatiser un peu la chose et d'utiliser du libre.

J'ai pas mal cherché et j'ai fini par trouver une combinaison qui marche bien. Accrochez vos ceintures.

Étape 1: les coordonnées pour chaque adresse
- Je charge les noms et adresses dans une base Postgres
- J'écris un petit script Bash qui tire chaque adresse de la base de données, va me chercher les coordonnés via un appel à nominatim, que j'extrais avec jq, pour le réinjecter dans la base

Étape 2: Faire les groupes
- Re-petit script bash qui tire chaque coordonnée, cette fois ci, et génère un bout de Javascript qui créé un marqueur au format Leaflet, que je réinjecte dans une page HTML locale pour les afficher sur le fond de carte du quartier
- Je ne me sentais pas de sortir les algos de sous-graphes et du voyageur de commerce, donc j'ai imprimé la carte, et avec mes petits doigts fébriles j'ai fait des cercles pour grouper à la rache, réinjecté mes groupes dans la base

Étape 3: Faire les cartes
- Je créé un template HTML où il ne manque que les marqueurs et la liste des adresses
- Je créé un script bash qui, pour chaque groupe, me génère les blocs HTML et JS correspondant aux adresses et aux marqueurs du groupe, un petit envsubst plus tard et j'ai 10 pages HTML
- J'affiche chaque page HTML dans mon panda roux, je recadre, j'imprime vers un PDF
- Et enfin, un peu de pdftk pour combiner le tout. Prêt à imprimer et à distribuer !

Alors ça reste assez manuel. Je connais très mal le Javascript, mais j'imagine que c'était clairement la solution pour complètement automatiser la chose, avec du JS qui tape directement dans la base, fait sa requête à nominatim, et affiche les 10 sections à imprimer ensuite.

J'espère qu'on ne perdra personne !

  • # Géocodage avec la BAN

    Posté par  . Évalué à 9.

    Deux propositions pour montrer la richesse de l'écosystème OpenStreetMap :

    Du coup j'espère que tu as rentré les adresses des personnes en question dans OSM :-)

  • # et la nimage ?

    Posté par  . Évalué à 10. Dernière modification le 17 octobre 2022 à 06:07.

    Difficile pour moi d'acheter la solution sans capture d'écran du rendu. Il nous faut une nimage.

    • [^] # Re: et la nimage ?

      Posté par  (site web personnel) . Évalué à 2.

      Vi, mais là on a une nimage avec les noms et adresses de personnages âgées vulnérables, et j'ai vraiment la flemme de flouter ce qui doit être flouté…

  • # Affichage électoral

    Posté par  (site web personnel) . Évalué à 5.

    J'avoue que j'aurais bien aimer avoir ce genre d'information pour des panneaux électoraux. une boite avait fait le boulot mais les panneaux ont changé de place depuis.

    "La première sécurité est la liberté"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.