路径规划PgRouting

本文介绍了如何利用postgresql中的postgis和pgRouting扩展进行路径规划。通过安装pgRouting,准备规划数据,包括创建换乘节点、构建拓扑关系并设置线段权重。接着,详细讲述了使用Dijkstra和A*算法计算最短路径的方法。最后,展示了如何发布WMS路径查询服务,并在OpenLayers中使用最短路径功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

路径规划PgRouting

sf2gis@163.com

2015年7月1日

 

1  目标:根据矢量路线图,进行路线规划计算。

输入起止点,生成路线规划的最短路径。

2 方法:pgRouting。

目标:使用已有的成熟算法,利用postgresql中的postgis图层和postgis算法,进行路线规划。

原理:Dijkstra,A*(A Star)。

Dijkstra:从起点开始计算到各点的最短路径,逐个取出。找到最短路径。

参考:

http://baike.baidu.com/view/1712262.htm?fromtitle=Dijkstra%E7%AE%97%E6%B3%95&fromid=215612&type=syn

A*:与Dijkstra类似,从起点开始计算与各点的最短路径和终点的估计最短路径之和,逐个取出。找到最短路径。效率较高。

参考:http://blog.youkuaiyun.com/crayondeng/article/details/12342989

2.1 方法:安装

参考:http://www.xuebuyuan.com/1655300.html

2.1.1下载源程序

下载pgRouting,解压后复制到postgres的目录中,与原程序合并。

如果安装的postgis中已经包含pgRouting则不用再手动安装。

2.1.2添加postgis和pgRouting扩展

Create Extension Postgis;

Create Extension pgRouting;

参见:..\postgis\Postgis.docx中扩展安装方法

2.2 方法:准备规划数据

规则数据要求各个线路之间具有相互独立,在换乘站具有节点。

2.2.1创建换乘节点:在线路相交的位置生成节点。

2.2.1.1  使用Qgis生成一副简单的线路矢量图。

2.2.1.2  使用OpenJump进行交点分割。

参见:..\QGIS\编译过程\qgis应用\qgis应用-矢量操作.docx中OpenJump部分。

2.2.1.3  将数据导入postgis。

参见:..\postgis\Postgis.docx

2.2.2构建拓扑关系:pgr_createTopology()。

拓扑关系:所有线段节点之间的相互关系。包括每一条线段的节点与其它节点之间的连接线起点、终点,且每条线段只使用一次。目的是路径的可达性基础数据。

起点:source。

终点:target。

2.2.2.1  添加起止点:

2.2.2.2  构建拓扑数据索引:默认创建source和target的btree索引。

如果没有创建,可以使用create index IndexName on TableName(“colName”);创建索引。

2.2.3添加每条线段的权重:cost

可以使用qgis或者直接在postgis中添加cost的字段(integer)并设置一些值。

2.3 方法:Dijkstra计算最短路径,pgr_dijkstra()。

dijstra算法需要提供每个元素的id,source,target,cost;路径起点,终点。

结果为id,起点,经过的边,cost数组。

将结果保存为新的表供使用。

示例:将结果保存为数据表

select seq,id1 asnode,id2 as edge,cost into dijkstra from pgr_dijkstra(

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值