Introduction to PostGIS 之最优路径

   

      这几天研究了下postgis的拓展插件pgrouting(http://www.pgrouting.org/)。

      首先到官网下载pgrouting(注意版本对应,当前支持最高版本的postgis为8.4):

     然后把下载的pgrouting下doc lib share三个文件夹里的文件拷到postgresql安装文件夹的相应目录里面。然后打开postgresql  执行pgRouting-1.03_pg-8.4.2\Share\Contrib下的3个sql文件

     安装完算法之后我们就可以开始做最优路径分析了:

    首先对已有的道路表添加source target length  分别代表 道路的起点id 终点id 和权重值。

ALTERTABLE ch10.load_merge ADDCOLUMN source integer;
ALTERTABLE ch10.load_merge ADDCOLUMN target integer;
ALTERTABLE ch10.load_merge ADDCOLUMN length doubleprecision;

   然后就可以执行assign_vertex_id()为表建立拓扑关系:

SELECT assign_vertex_id('load_merge',.001,'the_geom','gid');

在进行分析之前还要设置下权重值,一下sql语句是以道路长度为权重值:

UPDATE twin_cities SET length = ST_Length(the_geom);

最后就可以执行查询(需要注意的是:道路表的the_geom类型应为muitilinestring):

SELECT st_astext(the_geom)  FROM dijkstra_sp('load_merge',752,82);

也可以插入一个表中 可以通过QGIS查看结果:

SELECT the_geom INTO dijkstra_result FROM dijkstra_sp('load_merge',4752,82);

   在实际项目开发中使用pgrouting是相当方便的:

  地图服务:geoserver

  数据库:postgresql+postgis+pgrouting

 程序下载地址:https://github.com/shitao1988/AGS-PgRouting

原文地址:https://www.cnblogs.com/shitao/p/2177295.html