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
- 怎样生成一个用于我们项目使用的数据库
- 如何加载数据
- 怎样构建拓扑
家下来我们要对我们的数据构建一个拓扑结构。
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 - 如何检查图形错误
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