PgRouting——driving_distance函数

函数:

CREATE OR REPLACE FUNCTION driving_distance(

                        sql text,

                        source_id integer,

                        distance float8,

                        directed boolean,

                        has_reverse_cost boolean)

        RETURNS SETOF path_result

参数:

sql: 查询出哪些数据行需要计算

  • id:线id(一般取gid)
  • source: 起始源点(顶点)
  • target: 目标源点(顶点)
  • cost: 边的遍历权值 (防止负权边被插入到路径中).

source_id:起点id

distance: 加权值 (不是工程单位 – 他们是不一样的).

directed: true if the graph is directed如果路径有向,设置为true

has_reverse_cost: 如果为true, 反向权值(reverse_cost)列的SQL生成的行设置将用于遍历的权值的优势最优边在相反的方向.

输出:

这个函数返回一组数据。有一行是每个交叉边和一个额外的包括含终端顶点。每行的列如下:

  • vertex_id:从起始顶点,依次为每个交叉的顶点,最后一个为路径的目标顶点。
  • edge_id:交叉的边id(一般为gid)
  • cost: 边的距离,总路径为距离为所有值的和。

示例:

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)
posted @ 2013-04-21 23:03  清灵阁主  阅读(485)  评论(0编辑  收藏  举报