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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 28 December 2011 18:54

guibsou
Participant occasionnel
Date d'inscription: 1 Aug 2006
Messages: 28

pgrouting - fonction driving_distance et limitation de vitesse

Bonjour,

j'aurais une question au sujet de la fonction driving_distance de pgrouting :

la fonction driving_distance va ressortir tout les troncons routier du graphe à partir d'un point donné et d'une distance.
Si l'on veut attribuer le resultat en fonction d'un marcheur où sa vitesse sera constante, cela convient parfaitement.

Maintenant, j'aimerais executer cette fonction en fonction d'un temps donné (et plus d'une distance) afin qu'elle prenne en compte les limitations de vitesses des rues et voies routieres.
Je precise que je me base sur les données d'OSM où l'information est bien entendu présente.

Est-ce possible, ou  faut-il employer une autre fonction (dans ce cas là, laquelle dois-je utiliser ?)

merci pour vos eclaircicement.

Guibsou

Hors ligne

 

#2 Thu 29 December 2011 11:49

guibsou
Participant occasionnel
Date d'inscription: 1 Aug 2006
Messages: 28

Re: pgrouting - fonction driving_distance et limitation de vitesse

Il semblerait que j'ai trouvé une solution et les resultats se rapprochent fortement des estimations de google. Ils sont legerement plus haut car google doit surement prendre en compte les arrets aux stop, les feux tricolores, les peages, etc.
En appliquant un coefficient abaissant legerement la vitesse, les resultats deviennent similaires.

voici comment j'ai procédé si ça peut aider quelqu'un :

je me suis basé sur la table osm_2po_4pgr extraite par osm2po car osm2pgsql avait un bug (fichier de plus de 2Go ne passait pas , meme en forçant le noyau de ma distrib (openvz debian ) avec un noyau bigmem simulant le 64Bits.
cette table à comme attribut le kilometrage du tronçon et sa vitesse (km et kmh)

j'ai rajouté deux champs à cette table :

cost_min double precision
reverse_cost_min double precision DEFAULT 1000000 (cette valeur correspond à la valeur attribuée à reverse_cost pour les sens unique)

j'ai ensuite executé les requetes suivantes :

Code:

update osm_2po_4pgr set cost_min = km * 60 / kmh
update osm_2po_4pgr set reverse_cost_min = km * 60 / kmh where reverse_cost <> 1000000

et maintenant j'utilise la fonction driving_distance de cette maniere pour afficher les isochrones à 10 min de temps de trajet de voiture pour le tronçon ayant l'ID 55755:

Code:

SELECT  b.id FROM (SELECT * FROM driving_distance('
                 SELECT id AS id, source, target,
                 cost_min as cost, reverse_cost_min as reverse_cost FROM osm_2po_4pgr',
                 55755, 10, false,true))
                AS a, osm_2po_4pgr AS b
                WHERE b.source = a.vertex_id

Je me suis peut-etre compliqué la tache et il existe peut-etre une solution beaucoup plus simple ou une fonction toute faite pour ça. si c'est le cas je suis preneur.

Guibsou

Hors ligne

 

Pied de page des forums

Powered by FluxBB