Prise en main¶
Ceci est un guide simplifié pour vous guider pas à pas à démarrer avec pgRouting. Dans ce guide nous détaillerons :
- Comment créer une base de données pour notre projet
- Comment charger des données
- Comment construire une topologie
- Comment vérifier les erreurs de votre graphe
- Comment calculer une route
- Comment utiliser d’autres outils pour votre graphe et votre route
- Comment créer une application web
Comment créer une base de données pour notre projet¶
La première chose que nous avons besoin de faire est de créer une base de données et charger pgrouting dans la base de données. Typiquement vous allez créer une base de données pour chaque projet. Une fois que vous avez une base de données sur laquelle travailler, vous pouvez charger vos données et construire votre application à partir de cette base de données. Cela facilite les choses si vous voulez plus tard migrer le projet sur un serveur de production.
Pour Postgresql 9.1 et les versions ultérieures
createdb mydatabase
psql mydatabase -c "create extension postgis"
psql mydatabase -c "create extension pgrouting"
Pour les versions précédentes de postgresql
createdb -T template1 template_postgis
psql template_postgis -c "create language plpgsql"
psql template_postgis -f /usr/share/postgresql/9.0/contrib/postgis-1.5/postgis.sql
psql template_postgis -f /usr/share/postgresql/9.0/contrib/postgis-1.5/spatial_ref_sys.sql
psql template_postgis -f /usr/share/postgresql/9.0/contrib/postgis_comments.sql
createdb -T template_postgis template_pgrouting
psql template_pgrouting -f /usr/share/postgresql/9.0/contrib/pgrouting-2.0/pgrouting.sql
createdb -T template_pgrouting mydatabase
Comment charger des données¶
La façon dont vous chargez vos données dépend du format des données. Il existe des outils OpenSource variés qui peuvent vous aider, comme :
shp2pgsql: |
|
---|---|
ogr2ogr: |
|
osm2pgsql: |
|
Ces outils et probablement d’autres vont donc vous permettre de lire des données vectorielles et peuvent charger ces données dans votre base de données comme une table d’un certain type. A ce point vous avez besoin de connaître un peu votre structure de données et son contenu. Un moyen facile d’explorer vos tables de données est d’utiliser pgAdmin3 ou phpPgAdmin.
Comment construire une topologie¶
Ensuite nous avons besoin de construire une topologie de nos données routières. Cela signifie que pour toute arête dans vos données routieres, les terminaisons de cette arête vont être connectées en un unique noeud et aux autres arêtes qui sont aussi connectées à ce meme noeud. Une fois que les arêtes sont connectées aux noeuds nous avons un graphe qui peut etre utilisé pour le routage avec pgrouting. Nous proposons un outil qui aide pour cela :
select pgr_createTopology('myroads', 0.000001);
Voir pgr_createTopology pour plus d’informations.
Comment vérifier les erreurs de votre graphe¶
Il y a beaucoup de sources d’erreurs possibles dans un graphe. Les données avec lesquelles vous avez commencé peuvent ne pas avoir été conçues avec l’idée de routage. Un graphe a des conditions très spécifiques. L’une est qu’il est NODED, cela signifie que mis à part des cas d’utilisation très spécifiques, chaque segment de route commence et finit comme un nœud et en général ne croise pas d’autre segment de route avec lequel il devrait être connecté.
Il peut y avoir d’autres erreurs comme la direction d’une route à sens unique étant entrée dans la mauvaise direction. Nous n’avons pas les outils pour chercher toutes les erreurs possibles mais nous avons les outils qui peuvent aider.
select pgr_analyzegraph('myroads', 0.000001);
select pgr_analyzeoneway('myroads', s_in_rules, s_out_rules,
t_in_rules, t_out_rules
direction)
Voir Analytiques de graphe pour plus d’informations.
Si vos données ont besoin d’être NODED, nous avons un outil qui peut aider pour cela aussi.
Voir pgr_nodeNetwork pour plus d’informations.
Comment calculer une route¶
Une fois que vous avez tout le travail préparatoire de-dessus fini, calculer une route est assez facile. Nous avons beaucoup d’algorithmes différents mais ils peuvent fonctionner avec votre réseau de routes préparé. La forme générale d’une route est :
select pgr_<algorithm>(<SQL for edges>, start, end, <additonal options>)
As you can see this is fairly straight forward and you can look and the specific algorithms for the details on how to use them. What you get as a result from these queries will be a set of record of type pgr_costResult[] or pgr_geomResult[]. These results have information like edge id and/or the node id along with the cost or geometry for the step in the path from start to end. Using the ids you can join these result back to your edge table to get more information about each step in the path.
- Voir aussi pgr_costResult[] et pgr_geomResult[].
Comment utiliser d’autres outils pour votre graphe et votre route¶
À déterminer
Comment créer une application web¶
À déterminer