Driving Distance calculation

Important

Only valid for pgRouting v1.x. For pgRouting v2.0 or higher see http://docs.pgrouting.org

Function:

The driving_distance function has the following signature:

CREATE OR REPLACE FUNCTION driving_distance(
                        sql text,
                        source_id integer,
                        distance float8,
                        directed boolean,
                        has_reverse_cost boolean)
        RETURNS SETOF path_result

Arguments:

sql: a SQL query, which should return a set of rows with the following columns:

  • id: an int4 identifier of the edge
  • source: an int4 identifier of the source vertex
  • target: an int4 identifier of the target vertex
  • cost: an float8 value, of the edge traversal cost. (a negative cost will prevent the edge from being inserted in the graph).

source_id: int4 id of the start point distance: float8 value of distance in degrees

distance: float8 value in edge cost units (not in projection units - they might be different).

directed: true if the graph is directed

has_reverse_cost: if true, the reverse_cost column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.

Output:

The function returns a set of rows. There is one row for each crossed edge, and an additional one containing the terminal vertex. The columns of each row are:

  • vertex_id: the identifier of source vertex of each edge. There is one more row after the last edge, which contains the vertex identifier of the target path.
  • edge_id: the identifier of the edge crossed
  • cost: The cost associated to the current edge. It is 0 for the row after the last edge. Thus, the path total cost can be computated using a sum of all rows in the cost column.

Examples:

SELECT * FROM driving_distance('SELECT gid AS id,source,target,
             length::double precision AS cost FROM dourol',10549,0.01,false,false);
 vertex_id | edge_id |     cost
-----------+---------+---------------
          6190 |  120220 | 0.00967666852
          6205 |  118671 | 0.00961557335
          6225 |  119384 | 0.00965668162
          6320 |  119378 | 0.00959826176
          ...
          ...
          ...
         15144 |  122612 | 0.00973386526
         15285 |  120471 | 0.00912965866
         15349 |  122085 | 0.00944814966
         15417 |  120471 | 0.00942316736
         15483 |  121629 | 0.00972957546
(293 rows)