Mardi 17 juin, j'avais une formation sur MapServer/PostGIS à donner à la maison de la télédétection de Montpellier. Je me suis dis que j'allais tester la version 1.02 de PgRouting pour voir si je pouvais trouver le meilleur chemin (bien que je connaisse un chemin pour m'y rendre.

Il faut commencer par trouver mon point de départ. Moi c'est la rue Aristide Briand sur Castelnau-Le-Lez

Point de départ

On allume Google Earth, on localise un point sur la carte pour identifier le tronçon adéquate. J'ai donc choisi le point ;POINT(3.896206 43.631734)

testgis=# select id,nom,distance(transform(setsrid(the_geom,27572),4326),'SRID=4326;POINT(3.896206 43.631734)'::geometry) from 
routing_cll order by 3 asc limit 1;
  id  |          nom           |      distance       
------+------------------------+---------------------
 9568 | AVENUE ARISTIDE BRIAND | 1.2514044022887e-05
donc id=9568

Point d'arrivée

La Maison de la télédétection étant situé dans la rue Jean-François Breton, toujours sur Google Earth, j'ai cette fois-ci pris le point POINT(3.876753 43.646214)
testgis=# select id,nom,distance(transform(setsrid(the_geom,27572),4326),'SRID=4326;POINT(3.876753 43.646214)'::geometry) from 
routing_cll order by 3 asc limit 1;
  id  |           nom            |       distance       
------+--------------------------+----------------------
 1137 | RUE JEAN-FRANÇOIS BRETON | 5.92607633717804e-06
(1 ligne)

Création d'une table temporaire et export en KML avec ogr2ogr

On se crée une petite table temporaire aller qui contiendra le trajet. Pour celà, on utilise la fonction shortest_path_shooting_star()
psql -d testgis -c "begin;\
drop table aller;\
create table aller(gid int4) with oids;\
SELECT AddGeometryColumn( 'aller', 'the_geom', 4326, 'MULTILINESTRING', 2 );\
insert into aller(the_geom) select transform(setsrid(the_geom,27572),4326) from (select * from routing_cll where id in\
 (SELECT edge_id FROM shortest_path_shooting_star('SELECT id, source, target, cost,reverse_cost, x1, y1, x2, y2, rule, to_cost\
 FROM routing_cll',9568,1137,true, true))) as foo;end;"
On exporte le tout en KML
ogr2ogr -f KML detection.kml PG:'host=localhost dbname=testgis user=postgres password=***' -sql "select * from aller"
On affiche le tout dans Google Maps

Chemin pour aller de chez moi à la maison de la télédétection
En plus celà m'a permis de trouver un raccourci que je ne connaissais pas !