Introduction to PostGIS 之使用Shortest Path Shooting Star 对有向道路的路径计算
2011-11-20 17:59
916 查看
闲暇之余了解了下pgrouting对有向图的路径计算
,
正好官网有篇介绍处理“one—way”情况下的路径计算:http://www.pgrouting.org/docs/howto/oneway.html
下面我就一份无锡地图来做下相关学习:
对软件的安装这就不做介绍了,使用的软件版本和Introduction to PostGIS 之最优路径 是一样的。
我手上的地图数据是tab格式的为了保证导入数据库数据的完整性,我把tab转shp后在导入数据库。(tab转shp:mapinfo软件自带一个转换工具如下图)
把转换后的shp数据加载到ArcMap中入下图:
因为要在数据库中对道路建立拓扑关系,为了简单处理,这里我把主要道路、次要道路和立交桥合为一个图层(国道暂不考虑)。使用toolbox中的Merge工具合并这几个图层:
合并图层后进行拓扑处理:
这个处理只是泛泛的处理,里面还有一些要根据实际情况再做处理如:
数据处理好后我们就可以导入数据库了,这里我使用QGIS来导入:
导入数据库后我重命名为roads_polyline_merge表,接下来的步骤就比较重要了。
向表中添加字段:
下面对这个字段赋值 为source和target赋值:
为其余字段赋值:
执行一下路径查询并存入一个表中以便Qgis中显示:
,
正好官网有篇介绍处理“one—way”情况下的路径计算:http://www.pgrouting.org/docs/howto/oneway.html
下面我就一份无锡地图来做下相关学习:
对软件的安装这就不做介绍了,使用的软件版本和Introduction to PostGIS 之最优路径 是一样的。
我手上的地图数据是tab格式的为了保证导入数据库数据的完整性,我把tab转shp后在导入数据库。(tab转shp:mapinfo软件自带一个转换工具如下图)
把转换后的shp数据加载到ArcMap中入下图:
因为要在数据库中对道路建立拓扑关系,为了简单处理,这里我把主要道路、次要道路和立交桥合为一个图层(国道暂不考虑)。使用toolbox中的Merge工具合并这几个图层:
合并图层后进行拓扑处理:
这个处理只是泛泛的处理,里面还有一些要根据实际情况再做处理如:
数据处理好后我们就可以导入数据库了,这里我使用QGIS来导入:
导入数据库后我重命名为roads_polyline_merge表,接下来的步骤就比较重要了。
向表中添加字段:
ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN source integer; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN target integer; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN cost double precision; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN reverse_cost double precision; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN x1 double precision; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN y1 double precision; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN x2 double precision; ALTER TABLE wuxirouting.roads_polyline_merge ADD COLUMN y2 double precision;
下面对这个字段赋值 为source和target赋值:
set search_path = public,wuxirouting; SELECT assign_vertex_id('roads_polyline_merge',.00001,'the_geom','gid');
为其余字段赋值:
UPDATE wuxirouting.roads_polyline_merge SET cost = st_length(the_geom)*10000; UPDATE wuxirouting.roads_polyline_merge SET reverse_cost = 1000000; UPDATE wuxirouting.roads_polyline_merge SET x1 = st_x(st_startpoint(the_geom)); UPDATE wuxirouting.roads_polyline_merge SET y1 = st_y(st_startpoint(the_geom)); UPDATE wuxirouting.roads_polyline_merge SET x2 = st_x(st_endpoint(the_geom)); UPDATE wuxirouting.roads_polyline_merge SET y2 = st_y(st_endpoint(the_geom));
执行一下路径查询并存入一个表中以便Qgis中显示:
SELECT gid,the_geom,edge_id into wuxirouting.routing FROM shortest_path_astar('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM wuxirouting.roads_polyline_merge',149,158, true,true)as r,wuxirouting.roads_polyline_merge as w where r.edge_id=w.gid
相关文章推荐
- Dijkstra's Shortest Path Algorithm(最短路径算法)
- OSPF(Open Shortest Path First开放式最短路径优先 -链路状态路由协议
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- 【收集】系统文件夹路径的系统宏定义及意义,使用SHGetFolderPath API获得路径示例
- php中的路径问题与set_include_path使用介绍
- 蘑菇阵 使用路径数计算,想了好久没想出来,看答案才知道使用DP做的
- spingMvc REST的风格 和@PathVariable路径变量参数的使用
- 在Linux下获取当前运行程序可执行文件全路径(不使用real_path()函数)
- LINUX下多路径(multi-path)介绍及使用
- 多路径(multi-path)介绍及使用 (hp刀片机适用)
- LINUX下多路径(multi-path)介绍及使用
- xcode路径引起的问题,使用xcode-select -print-path 显示后再使用Xcode-select -switch更改
- ZOJ 2760--How Many Shortest Path【dinic最大流 && 最短路构图 && 求最短路径的条数】
- LINUX下多路径(multi-path)介绍及使用
- iOS 数组使用 valueForKeyPath:计算求和、平均值、最大、最小
- 在 WPF 中使用 Path 路径
- 11.5 如何使用路径帮助类(PathHelper)?
- 使用GraphFrame 的shortestPaths API 求最短路径
- LINUX下多路径(multi-path)介绍及使用
- LINUX下多路径(multi-path)介绍及使用