Cet article fait partie d’une série consacrée au site public rezopouce.fr. Après avoir présenté l’architecture générale de l’écosystème, ce volet constitue l’architcture principale du système Rezo Pouce.

Un modèle à trois niveaux

La géographie est au cœur de Rezo Pouce. Le service s’organise autour de territoires — communautés de communes, agglomérations — qui adhèrent au réseau. Chaque territoire regroupe un ensemble de communes, et chaque commune dispose de points d’arrêt (les emplacements physiques où un autostoppeur peut attendre un conducteur) et de points relais (les lieux où l’on peut s’inscrire au service en personne).

Cette hiérarchie à trois niveaux — territoire, commune, point — structure l’intégralité du site public. Les pages, les cartes, les contrôles d’accès, les URLs : tout repose sur ce modèle.

Les URLs reflètent cette arborescence de manière naturelle : /territoire/{slug} pour un territoire, /territoire/{slug}/commune/{slug} pour une commune, et /territoire/{slug}/commune/{slug}/point_arret/{nom} pour un point d’arrêt. Ce schéma lisible est aussi favorable au référencement.

Les pages du site

La page territoire

Chaque territoire dispose de sa propre page sur le site. Elle affiche le nom commercial du territoire, une carte interactive centrée sur la zone avec les marqueurs des communes, un widget de recherche de commune avec autocomplétion, les fiches mobilité des communes, les lieux d’inscription, et un slider de témoignages d’utilisateurs.

Certains territoires bénéficient de bannières personnalisées — un bandeau co-brandé avec le partenaire local, comme le PNR du Vercors ou le département du Tarn-et-Garonne. Ces cas particuliers sont gérés par un template dédié qui conditionne l’affichage en fonction de l’identifiant du territoire.

La page commune

En descendant d’un niveau, la page d’une commune reprend la même structure : carte interactive centrée cette fois sur la commune avec les marqueurs de ses points d’arrêt, coordonnées du référent territorial, lien vers la fiche mobilité, informations sur les transports disponibles, et lieux d’inscription (les points relais de la commune complétés par le point d’inscription principal du territoire).

La page point d’arrêt

C’est la maille la plus fine. La page d’un point d’arrêt affiche sa localisation sur une carte, sa photo (ou une image par défaut), son adresse complète, ses coordonnées GPS, les directions de circulation desservies (jusqu’à trois), et les aménagements disponibles : abribus, banc, cheminement piéton, éclairage, encoche de trottoir, parc à vélos, traversée piétonne. La limitation de vitesse et des repères de localisation complètent la fiche.

Affichage d’une boite de dialogue au clic sur un point d’arrêt sur la carte

Les villes du réseau

Une page transversale, Villes du réseau, liste l’ensemble des communes du réseau, organisées en accordéons par région puis par département. Elle est accompagnée d’une carte nationale présentant tous les territoires. C’est également la page de repli vers laquelle le site redirige lorsqu’un territoire n’est plus accessible.

Le cycle de vie des territoires

Un territoire n’est pas figé : il peut être actif, se désabonner du réseau, ou se trouver dans un état intermédiaire. Cette réalité métier — les collectivités changent, les mandats évoluent, les budgets sont réalloués — a un impact direct sur le comportement du site.

Trois statuts gèrent ce cycle :

  • Actif : accès normal à toutes les pages, affichage des contacts, des lieux d’inscription et des fiches mobilité.
  • Désabonné : les pages du territoire ne sont plus accessibles au public. Les utilisateurs sont redirigés vers la page « Villes du réseau ». Seuls les gestionnaires de territoire conservent l’accès, pour des raisons d’administration.
  • Maintenu temporairement : le territoire s’est désabonné, mais les panneaux physiques n’ont pas encore été retirés. Les pages restent consultables, mais une modale d’avertissement informe les visiteurs de la situation. Les contacts du territoire sont masqués et remplacés par ceux du support Rezo Pouce, les lieux d’inscription et les fiches mobilité disparaissent. La modale n’est affichée qu’une fois par mois par visiteur, grâce à un marqueur en localStorage.

Ce dernier statut est un bon exemple de cas où le métier dicte un comportement technique précis : tant que des panneaux sont physiquement visibles au bord des routes, les pages doivent rester en ligne — mais avec un message clair que le service n’est plus actif localement.

La cartographie

Leaflet et les plugins maison

Toutes les cartes du site reposent sur Leaflet, une bibliothèque JavaScript de cartographie interactive. Plutôt que d’utiliser Leaflet directement dans chaque page, un plugin jQuery maison — rzp-cartographie — encapsule les interactions courantes : initialiser une carte, charger et afficher un territoire, centrer la vue sur une commune, placer les marqueurs des points d’arrêt.

Ce plugin est partagé entre le site public et l’API (qui sert également des cartes dans certains contextes). Le versionner à chaque modification — y compris le nom du répertoire et toutes les références dans le code — fait partie du processus de mise à jour, un peu artisanal mais fiable.

Un second plugin, rzp-city-search, fournit le widget de recherche de commune avec autocomplétion, présent sur les pages territoire et commune.

Les couches GeoJSON

L’empreinte géographique de chaque territoire — le contour qui s’affiche sur la carte — est un fichier GeoJSON généré manuellement à l’aide de QGIS. Le processus part de la base de données (les communes rattachées au territoire), réalise une jointure spatiale avec la couche officielle des communes de France, regroupe les géométries, puis exporte le résultat en GeoJSON au format WGS 84.

Ce fichier est ensuite déposé à la fois dans l’API et dans le site public, avec un versionnement manuel des répertoires. C’est un processus qui pourrait être automatisé, mais qui dans la pratique ne s’exécute qu’à la création d’un nouveau territoire ou lors de l’ajout/retrait de communes — des événements assez rares.

Les cartes embarquables en iframe

Les collectivités partenaires ont souvent besoin d’intégrer la carte de leur territoire sur leur propre site web. Pour répondre à ce besoin, un bundle Symfony dédié — l’IframeBundle — expose des cartes Leaflet embarquables via une simple balise iframe. Par exemple https://rezopouce.fr/iframe/territory/58.

Exemple d’Iframe

La carte embarquée affiche un volet cartographique occupant les trois quarts de la largeur et un volet latéral avec les détails, le logo Rezo Pouce et un lien vers le site. Le contrôleur de ce bundle interroge directement Doctrine pour construire les données JSON, sans passer par l’API — un raccourci technique pragmatique, les données cartographiques étant stockées dans la base locale du site public.

Le plugin de cartographie pour les iframes (mapping) est distinct du plugin principal et supporte plusieurs types de carte (territoire, commune, points d’arrêt) ainsi que différentes couches de tuiles : OpenStreetMap, Teritorio, et imagerie aérienne.

L’interopérabilité avec les données publiques

Les points d’arrêt Rezo Pouce alimentent la Base Nationale des Lieux de Covoiturage (BNLC), un jeu de données ouvert publié sur data.gouv.fr. Une requête SQL dédiée extrait les points actifs dans le format attendu par la BNLC — identifiant, nom, coordonnées, éclairage — pour mise à jour périodique.

Les points d’arrêt sont également exportés vers la plateforme Mobicoop pour synchronisation avec l’application mobile. Chaque modification d’un point d’arrêt via l’API déclenche un événement de synchronisation.

Ce que ce domaine illustre

La gestion des territoires est un bon exemple de domaine où le modèle métier, aussi simple qu’il paraisse (trois niveaux hiérarchiques), génère une complexité réelle dès qu’on prend en compte le cycle de vie des entités, les cas limites (commune sans point d’arrêt, territoire en cours de désabonnement), et les besoins d’intégration avec des systèmes tiers.

C’est aussi un domaine où la cartographie, souvent perçue comme un sujet purement visuel, devient un enjeu technique à part entière : gestion des couches GeoJSON, plugins maison, cartes embarquables, synchronisation des données géographiques entre plusieurs applications.

Une question ou un projet ?

Je suis disponible pour en discuter.

Me contacter