Makina Blog

Le blog Makina-corpus

Ré-ordonner des lignes dans PostGIS avec une requête récursive


Comment ordonner des lignes les unes à la suite des autres dans PostGIS ?

Dans un réseau routier existant, provenant d'OpenStreetMap par exemple, les différentes lignes représentant un itinéraire ne sont pas ordonnées les unes à la suite des autres. Voici par exemple les différentes lignes composant la RN 20, colorées par osm_id, l'identifiant unique OpenStreetMap.

Pour obtenir une liste de ces différentes lignes classées les unes après les autres, on peut utiliser une requête récursive PostgreSQL :

WITH RECURSIVE t(id,g,explored_paths) AS (
    SELECT osm_id, way, ARRAY[osm_id]
    FROM planet_osm_line
    WHERE osm_id=93378070
  UNION ALL
    SELECT osm_id, way, explored_paths || osm_id
    FROM planet_osm_line, t
    WHERE ST_Intersects(way, t.g)
    AND NOT (osm_id = ANY(explored_paths))
    AND ref='N 20'
)
SELECT *, row_number() over () FROM t LIMIT 30;

La première partie de la requête récursive consiste à l'initialiser avec la première ligne, ici l'objet ayant osm_id=93378070. Une union de ces données initiales est réalisée récursivement avec la ligne qui touche les lignes précédemment sélectionnées, mais qui ne fait pas encore partie des lignes sélectionnées (explored_paths). Cette requête s'arrête lorsque plus aucune ligne touchant les lignes précédentes n'est trouvée.

Voici un extrait des résultats de cette requête :

idexplored_pathsrow_number |
93378070"{93378070}"1 |
93378068"{93378070,93378068}"2 |
93378071"{93378070,93378068,93378071}"3 |
93378069"{93378070,93378068,93378071,93378069}"4 |
127721449"{93378070,93378068,93378071,93378069,127721449}"5 |

Les lignes peuvent maintenant être affichées en les classant par row_number, c'est à dire par leur ordre de sortie de la requête récursive.

Formations associées

Formations SIG / Cartographie

Formation PostGIS

Toulouse Du 6 au 8 octobre 2026

Voir la Formation PostGIS

Formations SIG / Cartographie

Formation QGIS

Aucune session de formation n'est prévue pour le moment.

Pour plus d'informations, n'hésitez pas à nous contacter.

Voir la Formation QGIS

Formations Outils et bases de données

Formation PostgreSQL

Nantes Du 8 au 10 septembre 2026

Voir la Formation PostgreSQL

Actualités en lien

Geotrek 2025–2026 : nouvelles fonc­tion­na­li­tés et grands chan­tiers à venir

27/05/2026

Les années 2025 et 2026 ont été parti­cu­liè­re­ment riches en évolu­tions pour l’éco­sys­tème Geotrek. De nombreuses fonc­tion­na­li­tés ont été déve­lop­pées afin d’amé­lio­rer les perfor­mances, faci­li­ter l’ad­mi­nis­tra­tion des données et enri­chir les usages carto­gra­phiques. Cet article propose un tour d’ho­ri­zon des prin­ci­pales évolu­tions déployées ces deux dernières années sur Geotrek-admin, Geotrek-mobile et Geotrek-widget, avant d’ou­vrir sur plusieurs grands chan­tiers actuel­le­ment en prépa­ra­tion pour les prochaines versions de Geotrek.
Voir l'article
Image
Geotrek-admin

Geotrek et OpenS­treet­Map : Mise en place d’une passe­relle pour une connais­sance du terri­toire enri­chie

08/09/2025

Dans l’uni­vers des logi­ciels open-source, les plus belles inno­va­tions naissent souvent de la rencontre entre des commu­nau­tés qui partagent les mêmes valeurs. Aujour­d’hui, nous célé­brons une avan­cée majeure pour Geotrek : la créa­tion d’une passe­relle avec OpenS­treet­Map (OSM), la plus grande base de données carto­gra­phique colla­bo­ra­tive au monde. Plus qu’une simple fonc­tion­na­lité, ce projet est le fruit d’un travail d’in­gé­nie­rie et de recherche appro­fondi.
Voir l'article
Image
Logo d'illustration pour la passerelle entre OSM et Geotrek

Instal­ler Geotrek : avec ou sans segmen­ta­tion dyna­mique ?

08/09/2025

Geotrek-admin propose deux modes de fonc­tion­ne­ment pour gérer les objets liés aux tronçons : avec ou sans segmen­ta­tion dyna­mique. Ce choix a un impact impor­tant sur la manière dont sont stockées et gérées les données, et sur les possi­bi­li­tés d’édi­tion, de cohé­rence topo­lo­gique et d’in­ter­opé­ra­bi­lité avec d’autres systèmes. Dans cet article, on vous explique ce qu’est la segmen­ta­tion dyna­mique ainsi que le réfé­ren­ce­ment linéaire, ses avan­tages, ses limites, et dans quels cas il est perti­nent (ou non) de les utili­ser.
Voir l'article
Image
Réseau de tronçons dans Geotrek

Inscription à la newsletter

Nous vous avons convaincus