Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

pgRouting-路径导航



pgRouting是一个postgresql和postgis空间数据库的扩展,然后增加了路径分析和其他网络分析的功能。pgrouting的前身叫pgDijkstra,由来自Camptocamp公司的Sylvain Pasche所写,最近由Orkney 扩展病命名为PGRouting。
pgRouting is an OSGeo Labs project of the OSGeo Foundation and included on OSGeo Live.

这是一个简单的指导用于逐步开始pgRouting的使用:
怎样生成一个用于我们项目使用的数据库
如何加载数据
如何构建拓扑
如何检查图形错误
如何计算一个路径
如何用工具看你的图形和路径
如何生成一个web app

  1. 怎样生成一个用于我们项目使用的数据库
  2. 如何加载数据
  3. 怎样构建拓扑
    家下来我们要对我们的数据构建一个拓扑结构。
    pgr_createTopology是使用地理信息构建拓扑
    selectpgr_createTopology(‘myroads’,0.000001);
    varchar pgr_createTopology(text edge_table, double precision tolerance,
    text the_geom:=‘the_geom’, text id:=‘id’,
    text source:=‘source’,text target:=‘target’,
    text rows_where:=‘true’, boolean clean:=false)
    参数:
    text edge_table 拓扑表名称
    tolerance 数据精度
    the_geom 拓扑表中地理信息的字段,默认的是the_geom
    id 拓扑表的主键
    source 拓扑表中的原来列的名字
    target 拓扑表中现在的名字
    rows_where 选择一个子集或一个子行的条件
    clear
  4. 如何检查图形错误
    select pgr_analyzegraph(‘myroads’,0.000001);selectpgr_analyzeoneway(‘myroads’,s_in_rules,s_out_rules,t_in_rules,t_out_rulesdirection)
    5.怎样计算一个路径
    select pgr_(,start,end,)

下面是一些相关函数
pgr_dijkstra 返回最短路径pgr_drivingDistance 返回从某一开始节点的驾驶距离。用Dijkstra 的算法,抽取出小于或等于某一distance的所有节点。pgr_dijkstraVia 用Dijkstra算法,返回路径经过的一系列顶点。pgr_dijkstraCost 用Dijkstra算法,仅仅提取一些短的路径中的花费(例如时间,金钱等),顶点的集合也给返回使用例子 SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra( ‘SELECT id, source, target, st_length(geom) as cost,geom FROM public.sampledata’, 1, 300, false, false ) SELECT seq, id1 AS node, id2 AS edge, cost, geom FROM pgr_dijkstra( ‘SELECT id, source, target, st_length(geom) as cost FROM public.sampledata’, 8, 300, false, false ) as di JOIN sampledata pt ON di.id2 = pt.id ; SELECT seq, id1 AS node, id2 AS edge, cost,geom FROM pgr_ksp( ‘SELECT id, source, target, st_length(geom) as cost,st_length(geom) as reverse_cost,geom FROM public.sampledata’, 8, 500, 1,true ) as di JOIN sampledata pt ON di.id2 = pt.id ;

pgr_dijkstra 返回最短路径
pgr_drivingDistance 返回从某一开始节点的驾驶距离。用Dijkstra 的算法,抽取出小于或等于某一distance的所有节点。
pgr_dijkstraVia 用Dijkstra算法,返回路径经过的一系列顶点。
pgr_dijkstraCost 用Dijkstra算法,仅仅提取一些短的路径中的花费(例如时间,金钱等),顶点的集合也给返回

使用例子
SELECT seq, id1 AS node, id2 AS edge, cost
FROM pgr_dijkstra(
‘SELECT id, source, target, st_length(geom) as cost,geom FROM public.sampledata’,
1, 300, false, false
)

SELECT seq, id1 AS node, id2 AS edge, cost, geom
FROM pgr_dijkstra(
‘SELECT id, source, target, st_length(geom) as cost FROM public.sampledata’,
8, 300, false, false
) as di
JOIN sampledata pt
ON di.id2 = pt.id ;

SELECT seq, id1 AS node, id2 AS edge, cost,geom
FROM pgr_ksp(
‘SELECT id, source, target, st_length(geom) as cost,st_length(geom) as reverse_cost,geom FROM public.sampledata’,
8, 500, 1,true
) as di
JOIN sampledata pt
ON di.id2 = pt.id ;

转载自:https://blog.csdn.net/qq_14980415/article/details/83351481