Pgrouting运用基础

             网上关于Pgrouting的使用介绍太简单了,这里想详细的总结一下Pgrouting的使用,其实主要参照官方文档:http://workshop.pgrouting.org/

第一步:配置环境

             关于PostgreSQL 、postgis以及pgrouting可以去官网下载,这里使用Pgrouting2.0

            

           PostgreSQL与postgis安装可以参照网上教程

           pgRouting的安装很简单,以Windows为例,下载包以后解压缩,将lib目录下文件复制到PostgreSQL的lib目录下,再在PostgreSQL数据库中执行share/extension目录下的sql脚本,这样就完成了整个环境的配置

第二步:导入数据

           这里先介绍一个Pgrouting的函数:pgr_createTopology,这个函数就是将我们的路网(线型)数据形成拓扑导航网络的数据,为下一步的导航路径算法提供支持,详见

http://docs.pgrouting.org/2.0/en/src/common/doc/functions/create_topology.html#pgr-create-topology

这里source和target就是我们数据表中必须的两个字段

source: text Source column name of the network table. Default value is
source.
target: text Target column name of the network table. Default value is
target.

         理解这个以后我们将导入我们的数据:

原始数据格式shap:

这里我是利用算法生成了室内路网TransitionOpenDoor(红线)

将TransitionOpenDoor导入Postgresql中表中数据:

length:作为成本cost

数据准备完毕后

第三步:执行算法

          首先执行pgr_createTopology得到导航网络

SELECT pgr_createTopology(‘transitioncloseddoor’,0.001,source:=’source’,id:=’gid’,target:=’target’,the_geom:=’geom’)

         然后执行

SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra(‘
                SELECT  gid AS id,
                         source::integer,
                         target::integer,
                         length::double precision AS cost
                        FROM transitioncloseddoordijsktrav1′,
                1, 9, false, false);

 查询从1号点到9号点的最短路径

关于 pgr_dijkstra()使用可以参加官网说明

结果将是

其中node代表路径的节点、edge代表边、cost就是length字段的成本

从1号点到9号点的最短路径可视化结果:可见图中与查询结果一致,1-4-6-20-7-21-22-13-9

完毕

转载自:https://mtr-1.oss-cn-beijing.aliyuncs.com/qyblog/2019/04/19808889.jpg

You may also like...