Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 11 March 2015 11:06

Emy.C
Participant occasionnel
Date d'inscription: 9 Oct 2014
Messages: 21

PGRouting - résultat pgr_apspJohnson incomplet.

Bonjour,

je suis confrontée à un problème avec Pgrouting auquel je ne trouve pas de solution. Je cherche pour un ensemble de points défini de mon réseau à connaître les plus courts chemins vers tous autres points du réseau. A priori, la fonction pgr_apspJohnson répond à ce besoin. j'ai donc récupérer un réseau a priori 'propre' (utilisée pour de la modélisation réseau dans PTV). J'ai opéré les étapes suivante :


ALTER TABLE pgrouting_test.sample_test_2 ADD COLUMN source integer; 
ALTER TABLE pgrouting_test.sample_test_2 ADD COLUMN target integer;

SELECT pgr_createTopology('pgrouting_test.sample_test_2', 0.000001, 'geom', 'gid');

CREATE TABLE pgrouting_test.result_pgrjohn AS
(SELECT seq, pgr.id1 AS from, pgr.id2 AS to, pgr.cost
    FROM pgr_apspJohnson
    ('SELECT source, target, st_length(geom) as cost FROM pgrouting_test.sample_test_2') as pgr
     );

Je m'attendais à obtenir comme résultat une table avec pour chaque point du réseau 345 lignes (nombres de points du réseau) avec pour chaque enregistrement l'id du point de départ, l'id du point d'arrivée et le coût du chemin. Or le résultat est beaucoup plus alléatoire, puisque pour certain point je n'ai qu'une ligne avec comme destination l'id du point lui-même et un coût à 0. Pour d'autres points, je dispose de plusieurs lignes mais on est loin du compte attendu.

Le problème vient probablement de la qualité du réseau en entrée. J'ai essayé de faire une analyse dans Pgrouting avec pgr_analyzeGraph qui a échouée.

Donc,
Quelqu'un a -t-il déjà rencontré ce genre de difficulté avec cet algorithme de PGRouting?
Où puis-je trouver le log qui expliquerais l'échec de l'analyse du réseau de pgranalyzegraph ?
Quelqu'un a -t-il une idée de la manière dont je pourrais analyser les problèmes du réseau par un autre biais?

Merci d'avance pour vos réponses.

EmyC

Hors ligne

 

#2 Wed 11 March 2015 12:47

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1538

Re: PGRouting - résultat pgr_apspJohnson incomplet.

Bonjour,

Je n'ai jamais utilisé cette fonction de pgRouting.

Concernant le log de la fonction, vous pouvez regarder les logs de PG (probablement dans le répetoire data/pg_log de l'installation de postgresql (ou sinon, regarder dans le fichier postgresql.conf où est défini le répertoire de log, et le niveau de log (Le niveau NOTICE est nécessaire)).

Concernant votre réseau:
• avez-vous regardé si les identifiants source/target générés par pgRouting sont bons, pour les trajets en erreur ?
• Les sommets du réseau sont-ils bien connectés (st_touches renvoie vrai pour les lignes).

Question: qu'est-ce que PTV ?

Nicolas

Hors ligne

 

#3 Wed 11 March 2015 15:03

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1538

Re: PGRouting - résultat pgr_apspJohnson incomplet.

Bonjour,

Concernant les logs des fonctions pgrouting, elles emettent des messages de niveau NOTICE:
si vous executez les requetes avec PgAdmin, il faut regarder l'onglet "Messages" en bas de la fenetre SQL
Sinon, exécuter les commandes SQL depuis un terminal psql:

Code:

--nicolas=# select pgr_analyzeGraph('route', 0.000001, 'geom', 'gid', 'source', 'target');
-- NOTICE:  PROCESSING:
-- NOTICE:  pgr_analyzeGraph('route',1e-06,'geom','gid','source','target','true')
-- NOTICE:  Performing checks, pelase wait...
-- NOTICE:  Analyzing for dead ends. Please wait...
-- NOTICE:  Analyzing for gaps. Please wait...
-- NOTICE:  Analyzing for isolated edges. Please wait...
-- NOTICE:  Analyzing for ring geometries. Please wait...
-- NOTICE:  Analyzing for intersections. Please wait...
-- NOTICE:              ANALYSIS RESULTS FOR SELECTED EDGES:
-- NOTICE:                    Isolated segments: 3
-- NOTICE:                            Dead ends: 435
-- NOTICE:  Potential gaps found near dead ends: 0
-- NOTICE:               Intersections detected: 8
-- NOTICE:                      Ring geometries: 14
--  pgr_analyzegraph
-- ------------------
--  OK
-- (1 ligne)

Cette fonction a besoin d'une table "vertices" (sommets du réseau) qui peut etre construite avec:

Code:

SELECT pgr_createVerticesTable('route', 'geom', 'source', 'target');

Quand vous dites que la fonction ne marche pas, elle renvoie quoi comme message ?

De ce que je vois sur un test, la fonction tient compte de l'orientation du réseau et ne "remonte" pas les rues orientées dans le sens contraire de la rue de départ: (img1: les fléches indiquent le sens de numérisation des rues)

La fonction pgr_apspWarshall () semble prendre en compte un coût inverse pour les trajets. (tests avec différentes valeurs pour la prise en compte du coût inverse, mais j'obtiens tjs le même résultat)

Nicolas


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Wed 11 March 2015 15:53

Emy.C
Participant occasionnel
Date d'inscription: 9 Oct 2014
Messages: 21

Re: PGRouting - résultat pgr_apspJohnson incomplet.

Bonjour,

merci beaucoup pour ces réponses,

PTV est un logiciel de modélisation transport.

Les identifiants 'sources' et 'target' générés par PGRouting sont bons.

Concernant la fonction pgr_analyzegraph. Elle renvoie un 'fail' lorsque je souhaite tester mon réseau. Ce qui d'après la doc de pgrouting indique qu'il y a eu une erreur lors de l'exécution de la fonction. Mais j'ai effectivement consulté l'onglet message dans PgAdmin et trouvé la source du problème.
L'analyse de mon réseau renvoie Ok, ce qui indiquerait qu'il ne détecte pas de souci dans le réseau.

Je vais explorer la question de la direction des arc.

--EDIT---

Le problème vient effectivement du fait que l'algorithme ne permet pas de prendre en compte des chemins qui seraient contraires au sens de numérisation. J'avoue que je bloque sur le problème. La documentation trouvée ici : http://docs.pgrouting.org/2.0/fr/doc/index.html n'apportent aucune précision qui permettrait de résoudre le problème. Je poursuis mes recherches mais je suis preneuse de quelques idées lumineuses...

Merci par avance.

Emilie.

Dernière modification par Emy.C (Fri 13 March 2015 11:29)

Hors ligne

 

Pied de page des forums

Powered by FluxBB