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

GEODATA DAYS 2024

#1 Thu 10 June 2010 11:09

Syphys
Participant occasionnel
Date d'inscription: 10 May 2010
Messages: 15

France osm pgrouting

Bonjour,

Je veux calculer la distance en passant par les routes entre 2 villes j'avais fait une première application qui marchait mais qui était pas très précises.
Pensant comprendre comment ça marchait, j'ai mis en place une procédure pour adapter la base  à la fonction dijkstra_sp,  c'est à dire l'implémentation par pgrouting de l'algorythme de dijkstra, d'une façon que je pensais plus propre...
Mais ça ne marche pas : quand j'utilise dijkstra_sp ça ne me donne pas de résultat :'(
Je sais que mon erreur est limité aux tables routes et vertices_tmp (crée par la fonction  assign_vertex_id() ) j'ai conscience que  c'est une piètre circonscription du problème...
Je vous fais part des successions de transformations que j'ai fait j'espère que vous y verrez plus clair que moi...

voici comment j'importe le fichier france.osm (trouvé ici : http://download.geofabrik.de/osm/europe/) :

Code:

E:\bddSpaciale\osm2pgsql\osm2pgsql.exe -d France -U postgres --slim -S "E:\bddSpaciale\osm2pgsql\default.style" -P 5432 "E:\bddSpaciale\données\geofabrique\france.osm"

voici les transformations qui "nous intéressent"

Code:

UPDATE planet_osm_roads SET way = ST_Transform(ST_SetSRID(way,900913), 4326);
update geometry_columns set srid = 4326 where f_table_name = 'planet_osm_roads' ;

create table routes as (select postal_code, name, place, way as the_geom from planet_osm_roads);


alter table routes add column gid serial;

ALTER TABLE routes ADD COLUMN source integer;

ALTER TABLE routes ADD COLUMN target integer;

ALTER TABLE routes ADD COLUMN length double precision;

insert into geometry_columns values ('', 'public', 'routes', 'the_geom', 2, 4326, 'LINESTRING');


SELECT assign_vertex_id('routes', 0.001, 'the_geom', 'gid');
UPDATE routes SET length = length(the_geom);


CREATE INDEX source_idx ON routes(source);
CREATE INDEX target_idx ON routes(target);
CREATE INDEX geom_idx ON routes USING GIST(the_geom GIST_GEOMETRY_OPS);



UPDATE routes SET the_geom= ST_Transform(ST_SetSRID(the_geom,4326), 2154);
alter table vertices_tmp drop constraint enforce_srid_the_geom;
UPDATE vertices_tmp SET the_geom = ST_Transform(ST_SetSRID(the_geom,4326), 2154);


update geometry_columns set srid = 2154;

Voilà le problème, si je prend 2 noeuds 8898 et 55665 respéctiement des noeuds proches de Rennes et de Strasbourg tel que :

Code:

SELECT sum(length(the_geom)) 
    FROM dijkstra_sp('routes', (8898) , 
                (55665) );

ça me met une réponse vide :'(
Si je prend des nœuds très proches (~1km) j'ai une réponse mais j'ai pas vérifié si elle collait à la vérité...

Je vous remercie d'avance d'essayer ou même simplement me dire d'où peut venir le problème juste pour me donner une piste je suis en train de refaire la base pour vérifier mais ça met beaucoup de temps et j'en ai pas :s

Dernière modification par Syphys (Thu 10 June 2010 11:52)

Hors ligne

 

#2 Thu 10 June 2010 11:56

vincentp
Participant actif
Lieu: Drôme
Date d'inscription: 18 Jul 2006
Messages: 128
Site web

Re: France osm pgrouting

Bonjour,
Peut etre que ce serait plus simple d'utiliser osm2pgrouting, qui sert justement a transformer les données OSM pour les utiliser avec pgrouting :

http://pgrouting.postlbs.org/wiki/tools/osm2pgrouting

Bon courage,
Vincent

Hors ligne

 

#3 Thu 10 June 2010 12:56

Syphys
Participant occasionnel
Date d'inscription: 10 May 2010
Messages: 15

Re: France osm pgrouting

Merci Vincent

En effet, je pense que ça aurait été mieux j'y avais pensé mais j'ai pas réussi à l'utiliser sad si quelqu'un à une version fonctionnelle compilé pour windows seven d'osm2pgrouting je suis preneur!

Hors ligne

 

#4 Thu 10 June 2010 13:36

Syphys
Participant occasionnel
Date d'inscription: 10 May 2010
Messages: 15

Re: France osm pgrouting

Bien en faite ça marche pour pas mal de trucs ça doit être quelque noeud qui ne "marchent" pas... Vous savez s'il faut une condition particuière sur les noeuds?? (Genre pas un noeud à la fin d'une route ou... je sais pas) puisque j'associe les noeuds au villes  je peux pas tester dijkstra pour toutes les villes pour savoir si elle sont accroché à un bon noeuds! yikes mais si c'est un truc qui peut coller à une condition where simple ça serait cool smile

Hors ligne

 

#5 Fri 02 September 2011 11:27

icadedt
Participant assidu
Lieu: ici et là
Date d'inscription: 21 Jul 2006
Messages: 478

Re: France osm pgrouting

vincentp a écrit:

Bonjour,
Peut etre que ce serait plus simple d'utiliser osm2pgrouting, qui sert justement a transformer les données OSM pour les utiliser avec pgrouting :

http://pgrouting.postlbs.org/wiki/tools/osm2pgrouting

Bon courage,
Vincent


existe til un plug in de osm2pgrouting à installer sur pgadmin sur Windows?

Hors ligne

 

Pied de page des forums

Powered by FluxBB