#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
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 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! mais si c'est un truc qui peut coller à une condition where simple ça serait cool
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
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