史蒂夫和斯凯 发表于 2016-11-22 03:01:19

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
页: [1]
查看完整版本: Introduction to PostGIS 之最优路径