Représentation d'un réseau de bus#
Date de publication initiale : 07 Avril 2021
Mots-clés : QGIS | PostGIS | PostgreSQL | Bus
Pré-requis :
- Maîtriser PostgreSQL et PostGIS
- Définir un style QGIS
Intro#
Fin 2020, une demande a émergé du service transport de ma collectivité qui souhaitait visualiser toutes les lignes de bus du territoire sur une même carte. De prime abord, cela ne me paraissait pas spécialement compliqué mais j'avais omis que plusieurs lignes pouvaient passer par des tronçons identiques et qu'il allait falloir gérer ces superpositions.
Après avoir parcouru internet, je suis tombé sur une solution apportée par un utilisateur sur le forum gis.stackexchange.com et je vous propose de revenir sur la mise en oeuvre de cette solution pour nos 5 lignes de bus.
Constitution du réseau de bus#
Tout d'abord, créer une table dans PostgreSQL pour dessiner le réseau de bus :
1 2 3 4 5 6 7 8 |
|
Ensuite, dessiner le réseau de bus en veillant à :
- bien superposer les tronçons des lignes de bus qui passent au même endroit
- ce que les tronçons qui se superposent soient numérisés dans le même sens
Après la saisie, je vous conseille de faire des filtres sur le numéro de chaque ligne pour contrôler qu'il ne manque pas un tronçon et que lorsqu'il y a des superpositions vos tronçons vont dans le même sens.
Créer des points de rencontre entre les lignes#
Maintenant que les tronçons des lignes de bus ont été dessinés proprement (avec des superpositions), on va chercher à distinguer tous les points qui marquent :
- le début ou la fin d'un tronçon
- le début ou la fin d'une superposition
Pour ce faire, vous devez utiliser cette requête :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Découper les lignes de bus en tronçons#
A partir des points qu'on a déterminé, on peut découper les lignes de bus en tronçons et en fonction du nombre de superpositions attribuer une valeur de décalage.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
|
Compter le nombre de lignes qui se chevauchent#
La dernière étape consiste à compter le nombre de chevauchements pour chacun des tronçons.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
Le rendu QGIS#
Pour terminer, vous pouvez ajouter la dernière table créée dans QGIS pour travailler sur le rendu :
- Faire un style catégorisé sur le numéro de ligne et attribuer une couleur différente par ligne
-
Définir l'épaisseur des tronçons pour chacune des lignes
1 2 3 4 5
CASE WHEN "count" = 2 THEN 1.2 WHEN "count" > 2 THEN 0.8 ELSE 1.6 END
-
Définir le décalage pour chacune des lignes
1 2 3 4 5
CASE WHEN "count" = 2 THEN (("offset_nr"-1)*1.2)-((("count"-1)/2)*1.2) WHEN "count" > 2 THEN (("offset_nr"-1)*0.8)-((("count"-1)/2)*0.8) ELSE 0 END
Attention si les tronçons qui se superposent ne vont pas dans le même sens, le décalage des lignes ne se fera pas correctement.
Conclusion#
La solution proposée permet :
- de gérer et de représenter sans trop de difficultés la superposition de plusieurs lignes de bus
- de relancer facilement les scripts si le réseau venait à évoluer
Toutefois, l’automatisation a ses limites et en l’état ce rendu ne pourrait être communiqué au grand public sans un travail graphique complémentaire.
A noter, que j'envisage de suivre la même démarche pour représenter nos itinéraires de randonnées alors si vous avez des remarques n'hésitez pas à laisser un commentaire.
Auteur#
Florian Boret#
Géomaticien/cartographe, je suis arrivé dans le monde de la géomatique en suivant un cursus « professionnalisant » (BTS Géomètre-Topographe, Licence pro GGAT, Master SIGAT). J’ai ensuite travaillé dans un bureau d’études spécialisé dans la production de données d’occupation du sol et puis pour des raisons personnelles je me suis expatrié quelques années au Sénégal où je me suis lancé comme géomaticien indépendant (DATA\WAX).
Depuis mon retour en France, je suis en charge du SIG de la communauté de communes du Pays de Lunel.
En dehors de ces expériences, j'ai aussi régulièrement initié de petits projets personnels iGeo-Topo, GIS-Blog.fr, osm2igeo, osm2igeotopo. Aujourd'hui, c’est avec plaisir que j’interviens également comme contributeur de GeoTribu.
Commentaires
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.Propulsé par Isso.