Changeset 73
- Timestamp:
- 01/04/2012 23:17:54 (13 years ago)
- Location:
- trunk/workshop-routing-foss4g/chapters
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-routing-foss4g/chapters/php_server.rst
r63 r73 1 1 ============================================================================================================== 2 S erver side script with PHP2 Script PHP coté serveur 3 3 ============================================================================================================== 4 4 5 We will use a PHP script to make the routing query and send the result back to the web client.5 Nous utiliserons un script PHP pour exécuter les requêtes de routafe et renverons le résultat au client web. 6 6 7 The following steps are necessary:7 Les étapes suivantes sont nécessaires : 8 8 9 * Retr ieve the start and end point coordinates.10 * Find the closest edge to start/end point.11 * Take either the start or end vertex of this edge (for Dijkstra/ A-Star) or the complete edge (Shooting-Star) as start of the route and end respectively.12 * Make the Shortest Path database query.13 * Transform the query result to XML or better GeoJSON and send it back to the web client.9 * Retrouver les coordonnées du point de départ et de celui d'arrivée. 10 * Trouver l'arrête la plus proche d'un point de départ ou d'arrivée. 11 * Prendre soit le noeud de début ou de fin de l'arrête (for Dijkstra/ A-Star) ou l'arrête elle-même (Shooting-Star) comme début ou fin du parcours. 12 * Exécuter les requête de recherche de plus court chemin. 13 * Retourner le résultat de la requête en XML ou mieux encore en GeoJSON au client web. 14 14 15 15 .. note:: 16 16 17 To keep this example as simple as possible with focus on routing queries, this PHP script doesn't validate request parameters nore does it deal with PHP security issues.17 Pour conserver cet exemple aussi simple que possiblle et de mettre en évidence les requête de routafe, ce script PHP ne valide pas les paramÚtres des requêtes et ne prend pas en compte les problÚmes de sécurités de PHP. 18 18 19 Let's start with some PHP template and then place this file in a directory, which is accessible by Apache:19 Commençons avec quelque modÚles PHP et plaçon ces fichiers dans un répertoire accessible par le serveur Apache : 20 20 21 21 .. literalinclude:: ../../web/php/pgrouting.php … … 25 25 26 26 ------------------------------------------------------------------------------------------------------------- 27 Closest edge27 L'arrête la plus proche 28 28 ------------------------------------------------------------------------------------------------------------- 29 29 30 Usually the start and end point, which we retrieved from the client, is not the start or end vertex of an edge. It is more convenient to look for the closest edge than for the closest vertex, because Shooting Star algorithm is âedge-basedâ. For âvertex-basedâ algorithms (Dijkstra, A-Star) we can choose arbitrary start or end of the selected edge.30 Habituellement les points de départ et d'arrivée, qui sont récupérer depuis le client, n'est pas le point de départ ou d'arrivée d'un tronçon. Il est plus simple de retrouver l'arrête la plus proche que le sommet le plus proche, parce que l'algorithme "Shooting-Star" est basé sur les arrêtes. Pour les algorithmes basés sur les sommets (Dijkstra, A-Ãtoile) nous pouvons choisir le opint de départ ou d'arrivée de l'arrête sélectionnée. 31 31 32 32 .. literalinclude:: ../../web/php/pgrouting.php … … 36 36 37 37 ------------------------------------------------------------------------------------------------------------- 38 R outing query38 Requête de routage 39 39 ------------------------------------------------------------------------------------------------------------- 40 40 … … 45 45 46 46 ------------------------------------------------------------------------------------------------------------- 47 GeoJSON output 47 Sortie au format GeoJSON 48 48 ------------------------------------------------------------------------------------------------------------- 49 49 50 OpenLayers allows to draw lines directly using GeoJSON format, so our script returns a GeoJSON FeatureCollection object:50 OpenLayers permet l'affichage de lignes en utilisant directement des données au format GeoJSON, donc notre script retourne un objet FeatureCollection au format GeoJSON : 51 51 52 52 .. literalinclude:: ../../web/php/pgrouting.php -
trunk/workshop-routing-foss4g/chapters/shortest_path.rst
r63 r73 1 1 ============================================================================================================== 2 Shortest Path Search 2 Plus courts chemins 3 3 ============================================================================================================== 4 4 5 pgRouting was first called *pgDijkstra*, because it implemented only shortest path search with *Dijkstra* algorithm. Later other functions were added and the library was renamed.5 pgRouting été initialement appelé *pgDijkstra*, puisque il implémentait seulement la recherche de plus court chemin à l'aide de l'agorithme de *Dijkstra*. Plus tard, d'uatres fonctions se sont ajoutées et la bibliotÚque fut renommée. 6 6 7 7 .. image:: images/route.png … … 9 9 :align: center 10 10 11 This chapter will explain the three different shortest path algorithms and which attributes are required. 12 13 14 .. note:: 15 16 If you run :doc:`osm2pgrouting <osm2pgrouting>` tool to import *OpenStreetMap* data, the ``ways`` table contains all attributes already to run all shortest path functions. The ``ways`` table of the ``pgrouting-workshop`` database of the :doc:`previous chapter <topology>` is missing several attributes instead, which are listed as **Prerequisites** in this chapter.11 Ce chapitre explique les trois différents algorithmes et les attributs nécessaires. 12 13 14 .. note:: 15 16 Si vous lancez l'outils :doc:`osm2pgrouting <osm2pgrouting>` pour importer des données *OpenStreetMap*, la table des chemins (``ways``) contient déjà tout les attributs nécessaires pour utiliser les fonctions de recherche de plus court chemins. Au contraire, la table ``ways`` de la base de données ``pgrouting-workshop`` du :doc:`chapitre précédent <topology>` manque d'un certain nombre d'attributs, qui sont présentés dans ce chapitre dans les **Prérequis**. 17 17 18 18 … … 21 21 ------------------------------------------------------------------------------------------------------------- 22 22 23 Dijkstra algorithm was the first algorithm implemented in pgRouting. It doesn't require other attributes than ``source`` and ``target`` ID, ``id`` attribute and ``cost``. It can distinguish between directed and undirected graphs. You can specify if your network has ``reverse cost`` or not.24 25 .. rubric:: Pr erequisites26 27 To be able to use ``reverse cost`` you need to add an additional cost column. We can set reverse cost as length.23 L'algorithme de Dijkstraa été la premiÚre implémentation disponible dans pgRouting. Il ne nécessite pas d'autre attributs que les champs ``source`` et ``target``, les attributs ``id`` et ``cost``. Il peut être utilisé sur des graphes orientés ou non. Vous pouvez spécifier que votre réseau à un coût de ``parcours inverse`` (``reverse cost``) ou non. 24 25 .. rubric:: Prérequis 26 27 Pour être en mesure d'utiliser un coût de parcuors invers, vous devez ajouter une colonne de coût. Nous pouvons affecter la longuer au coût de parcours inverse. 28 28 29 29 .. code-block:: sql … … 32 32 UPDATE ways SET reverse_cost = length; 33 33 34 .. rubric:: F unction with parameters34 .. rubric:: Fonction avec paramÚtres 35 35 36 36 .. code-block:: sql … … 44 44 .. note:: 45 45 46 * Source and target IDs are vertex IDs.47 * Undirected graphs ("directed false") ignore "has_reverse_cost" setting48 49 50 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 51 Core 52 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 53 54 Each algorithm has its *core* function , which is the base for its wrapper functions.46 * Les identifiant pour source et target sont les identifiant des noeuds. 47 * Graphes non-orientés ("directed=false") implique que le paramÚtre "has_reverse_cost" est ignoré 48 49 50 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 51 Bases 52 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 53 54 Chaque algorithme a une fonction de *base*. 55 55 56 56 .. code-block:: sql
Note: See TracChangeset
for help on using the changeset viewer.