基于ArcGIS网络模型的最优路径算法分析与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ArcGIS网络模型的最优路径算法分析与实现
刘建川,杨 军,甘 泉
(四川省基础地理信息中心,成都 610041)
摘要: 根据ArcGIS网络模型和城市道路交通网络的特点,设计了能够描述城市交通禁则(禁止直行、禁止左转、禁止调头等)的道路交通网络模型。
利用该模型对传统的Dijkstra算法进行了改进,提出了能解决城市交通禁则问题的最优路径算法。
通过城市路网对比试验,结果表明,所提出的算法能够根据城市交通禁则规划出实用的最优路径。
关键词:Dijkstra算法;ArcGIS;最优路径;网络模型
Algorithmic Analysis and Implementation Of Optimal Route
Based On ArcGIS Network Model
LIU Jianchuan, YANG Jun, GAN Quan
(Sichuan Geomatics Center, Chengdu 610041, China)
Abstract: Considering the characteristics of urban traffic network, the new traffic network model was designed to describe urban traffic confine rule (such as prohibiting running straightly, prohibiting turning left, prohibiting turning around etc.). Using the new model, the traditional Dijkstra algorithm was improved and the algorithm of optimal route guidance was designed on the conditions of urban traffic confine rule. Contrastive experimental results based on an urban road network show that this algorithm could make out effective route according to urban traffic confine rule.
Keywords: Dijkstra algorithm, ArcGIS, optimal route, network model
在复杂的城市交通网络中,为缓解紧张的交通状况,设置了许多交通禁则,如禁止左转、禁止直行、单行道等,加之众多城市立交桥、下穿隧道等交通设施,因此,该网络用简单的网络模型是无法描述的,须建立带交通约束的网络模型。
这种模型加大了对最优路径搜索的难度,由于交通禁则的限制,往往需要对边进行重复搜索。
在一般的道路模型中,包含重复边的路径不是最优的,但在城市交通禁则下,只有在必要的情况下包含重复边(但不是同一行驶方向),才能正确引导出行者到达目的地。
基于此,本文在分析带交通禁则的城市交通模型的基础上,对传统的Dijkstra算法进行改进,设计了一种用于在城市交通禁则下的最优路径算法,并与传统的算法相比较,验证了其有效性。
作者简介:刘建川,男,硕士,主要从事地理信息系统开发、3S技术及应用研究工作,E-mail:mymailofljc@。
1在交通禁则下的城市交通模型
包含交通禁则的道路网络模型使用受限路网模型描述[ 5 ] , 用有向带权图R w (N , R , T ) 表示。
其中,N = {c1, c2, ⋯, c n}为道路节点集合;R = {r1,r2, ⋯, r m }为路段集合;r i= {<c i1, c i2>,w i,d i}, c i1、c i2分别是起点和终点, w i> 0 为路段权值, d i为单行标记; T = {t c1, t c2, ⋯,t cn}为基于节点的交通约束集合, t c k= {<r k1, r k2>, ……, <r kw- 1, r kw >},c k是其中所有路段的公共端点,路段二元有序对〈r k1, r k2〉表示c k点存在一个从r k1到r k2的交通约束。
在实际的最优路径分析中,用户所选择的起点和终点距离道路网络模型有一定的距离,为此,首先应根据距离最短的原则将用户点投影到路网中,然后利用投影点和用户点构造临时节点和路段并添加到路网中,最后,在根据用户点的位置和车辆的行驶方向构造道路约束关系。
如图1所示,a、b为路网中的两个节点,在<a,b>线上是禁止掉头,s点为起点,m为s在路网中的投影点,将路段<s,m>和s,m节点分别加入到N和R中,则
N’=N∪{s,m},
R’=R∪{<a,m>,<s,m>,<m,b>}.
这样就建立起了s与路网的临时拓扑关系。
由于<a,b>线上是禁止掉头的,按照交通规则,由s到m时只能向a方向行驶,在b方向存在约束{<s,m>,<m,b>},将此约束加入到T中则构成了新的交通约束模型。
同理,当s`作为起点时,则只能向b方向行驶,在a方向存在约束。
图1 用户选择点与路网的关系图2 带交通禁则的交叉路口
对于带交通禁则的交叉口,如图2所示,<A,B>为一高架桥,在C处禁止左转,同样可构建约束条件{<D,C>,<C,A>}和{<E,C>,<C,B>},在实际的行驶路线中,D经C到B掉头再到A,同理E经C到A掉头再到B,所以怎样方便简捷地描述诸如此类复杂的交通问题,成为下面将要讨论的问题。
2基于ArcGIS的道路网络数据模型
2.1 ArcGIS的网络模型
在ArcGIS中,对线性网络系统的表达有两种模型:几何网络模型(Geometric Network)和逻辑网络模型(Logical Network)。
几何网络模型是要素的集合,是由边线和交汇点相连组成的系统。
一条边线有两个交汇点,而一个交汇点可以与任何数量的边线相连,描述边线和交汇点的要素被称为网络要素(Network Features)。
逻辑网络也是由一系列的点和弧段连接组成,与几何网络不同的是逻辑网络不包含坐标值,其主要目的是用特定的属性表存储网络的连通性信息。
由于逻辑网络中的边线和交汇点没有几何
属性,所以它们不是要素,而被称为元素(Elements)。
在逻辑网络(Logical Network)中点和边的拓扑关系用三个属性表来描述:边元素表、点元素表和连通性表。
几何网络的网络要素和逻辑网络的元素间有一对一和一对多的关联关系(如图1所示)。
一个几何网络总是关联到一个逻辑网络,当编辑几何网络对象时,逻辑网络中的要素将自动更新。
图3 几何网络与逻辑网络的关系
2.2 基于ArcGIS的道路网络数据模型
根据ArcGIS的网络结构,所设计的交通模型应满足以下条件:
(1)能较好地表达交通流的方向性和各种交通禁则(如禁止左转、禁止直行、禁止调头等);
(2)能充分利用ArcGIS网络数据结构的优点,自动实现数据的更新和维护。
为了描述如图2所示的交叉口,通常的做法是在C处建立交叉口转向表,来描述交通禁则,此方法给地理数据更新、最优路径搜索算法复杂度等都带来了问题。
为此,本文将交叉口进行分解,如图4所示,建立交叉口虚拟边,作为一个要素类存放在数据库中,并设置相应的字段来存放道路权重,数据更新可利用ArcGIS网络结构的优点,实现自动更新;道路交通禁则用相应边的属性字段来表示,在图4中,在<D,A>和<E,B>方向有交通禁则,则将其虚拟边在该方向的权重设置为无穷大。
对于可掉头点,作为一个要素类存放在数据库中,当最优路径搜索到可掉头节点时,便可进行回头重复搜索,解决了传统最优路径算法中的不可重复搜索的问题,使问题更加简化。
图4 复杂的交叉路口分解
道路模型具体设计如下:
(1)网络中的边元素。
城市道路可分为主干道路和分支道路,主干道路通常比较长,交叉口多,因此主干道路在网络模型中用复杂边要素来表示;而分支道路比较短,交叉口少,所以分支道路用简单边要
素来表示。
道路边元素中有一系列权重,如正向权(FromToWeight)、反向权(ToFromWeight)、道路分类、道路路面条件、道路车道数等。
(2)网络中的交叉口元素。
对于复杂的交叉路口,如主干道交叉路口、立交桥、下穿隧道等,用交叉口虚拟边来表示其交通状态和交通禁则(禁止左转、禁止直行等),虚拟边也包括正向权重(FromToWeight)和反向权重(ToFromWeight)等权值。
(3)边上的可调头策略。
在主干道路和分支道路上设置有“是否禁止全线可调头”属性值,对于禁止全线可调头的边,则应在其可调头的地点(如交叉口、人行道口、立交桥下等)设置可调头的要素点,以简单点要素的形式加入网络中,并设置平均等待时间为权值。
(4)其他要素。
其他零散点要素以其出入口点为关键要素,在网络中用简单点要素来表示。
对于边元素的端点,则不单独数字化要素,用网络自动建立的孤立点要素来表示。
3 最优路径诱导优化算法
3.1 优化算法设计
Dijkstra算法是由Dijkstra于1959年提出来的,是所有最优路径算法中理论最完善、使用最广的一种。
其实质是一种标记算法,在分析中将网络节点分为三部分:标记节点、临时节点和永久标记节点。
网络中所有节点首先初始化为标记节点,在搜索过程中与最短路径节点相连通的节点为临时标记节点,每次循环都是从临时标记节点中搜索距源点路径长度最短的节点作为永久标记节点,直至找到目标节点或者所有的节点都成为永久标记节点时结束算法。
经典的Dijkstra算法存在以下不足:
y算法中网络结构采用邻接矩阵方式储存,造成许多存储空间的浪费。
y算法所采用的网络结构相对简单,只有简单的节点,而没有考虑边的信息,不能处理复杂的交通网络信息(如交通禁则、可调头点等)。
基于此,本文结合ArcGIS道路网络模型,对经典的Dijkstra算法进行优化,设计了适合于动态路径诱导系统的最优路径诱导算法。
优化后的最优路径诱导算法具体描述如下:
(1)确定起点边和起点交叉节点(pFromEdgeEID和pFromJunctEID)和终点边和终点交叉节点(pToEdgeEID和pToJunctEID)。
经典的Dijkstra算法中没有考虑到边的方向性,所以只要求起点和终点的信息就足够了,但在交通网络中,对行车的最优路径选择是有方向性的(即车辆始终是在道路的右边行驶),所以必须增加方向性信息(即起点边和终点边)。
(2)设置代价数组CostArray,并初始化。
在经典的Dijkstra算法中,代价数组是用节点为关键字的方式来储存的,主要存放起点到该点的代价值和所经过的路径,但在交通网络中,由于要考虑方向性,应增加一个值存放该点的当前搜索边(pFromEdgeEID)。
(3)设置当前节点Node=pFromJunctEID和边CurrentEdge=pFromEdgeEID。
(4)判断当前节点Node是否到达终点pToJunctEID,且当前边CurrentEdge是否为pToEdgeEID;若条件都满足则提取当前节点所存储的起点到终点的路径和代价值,转向第7步;若条件不满足则继续第5步。
(5)取出当前节点Node相连接的所有边集合Edges,并对每一条边k做:
a)判断当前节点是否为可调头要素;若条件满足则继续第(b)步;否则判断当前边CurrentEdge
是否等于边k,若不满足条件则继续第(b)步,否则取下一条边;(说明:此判断条件很好地
解决了在交通禁则的情况下,如何处理调头问题)
b)判断当前边CurrentEdge是否为交叉口虚拟边;若条件不满足则继续第(c)步,否则判断边
k是否为道路要素边,若条件满足则继续第(c)步,否则取下一条边;(说明:此判断条件很好地解决了在交叉路口处,由虚拟边转向虚拟边的不符合实际逻辑的情况,确保最优路径在某个交叉口处只经过一条虚拟的交叉口边,即左转、右转、直行中只能一种,不能先右转后再直行)
c)取出k边上与行车方向相同的权Weight,和取出k边的另一个点P,查找CostArray中P点
的值,将Weight加入P点的代价值中,将k边加入P点的路径中;(由于交通流量的方向性,即在正反方向上的交通权重是完全不一样的,所以在道路和交叉口边上分别设置了两个道路权重:ToFromWeightID和FromToWeightID,它们分别与边的数字化方向一致,取权重时,若行车方向与数字化方向相同则取FromToWeightID的值,反之则取ToFromWeightID的值)。
d)取下一条边。
(6)选择代价数组CostArray中代价值最小的点P,设置当前节点Node=P,当前边CurrentEdge为P 点的当前边,将P点设置为已标记并从代价数组中删除,并转到第4步。
(7)如果找到终点,则将起点到终点的最优路径上的边首尾相连,并向右平移一定距离生成行车路线图。
3.2 优化算法与经典算法的比较试验
通过对优化算法与经典算法分别在复杂的城市网络中进行比较试验,试验结果(如图5所示)得出优化算法的如下特点:
y充分利用ArcGIS网络模型的优点(如以逻辑网络的形式存放道路网络的拓扑关系、方便的网络操作函数接口、数据的自动更新等)。
y能够根据最优路径起点到终点的方向进行解算,较好地解决了道路在不同方向上的权取值问题(From-To或To-From)。
y解决了在城市交通网络中,最优路径分析对交通禁则的处理(如处理禁止左转、禁止直行或禁止调头等)。
y考虑到行车的方向性问题和行车靠右的原则,使所求的行车最优路径始终在起点到终点方向的右边,并且符合交通规则。
图5 优化算法与经典的Dijkstra算法相比较
4结论
(1) 本文结合城市道路网络和ArcGIS网络数据结构的特点,设计了基于ArcGIS的道路网络模型。
该模型一方面能较好地表达交通流的方向性和各种交通禁则(如禁止左转、禁止直行、禁止调头等);另一方面充分利用了ArcGIS网络数据结构的优点,不仅能自动实现数据的更新和维护,而且还可使用ArcGIS 所提供的各种接口函数,为最优路径分析的实现创造了条件。
(2) 本文结合基于ArcGIS的道路网络模型和经典的Dijkstra算法,设计了一种优化的最优路径算法。
该算法能够处理复杂的城市交通禁则,最大限度地满足用户的需求。
参考文献
[1]殷人昆,陶永雷,等.数据结构(用面向对象方法与C++描述)[M].北京:清华大学出版社,1999,7.
[2]杨兆升.城市交通流诱导系统[M].北京:中国铁道出版社,2004,11.
[3]ESRI. ArcGIS® Desktop Developer Guide(ArcGIS® 9.0).
[4]ESRI. ArcGIS® Engine Developer Guide(ArcGIS® 9.0).
[5]丁捷,杨殿阁,颜波,等.汽车导航用电子地图的高效路网模型[J ].汽车工程,2003,25 (6):232 – 235.
[6]ESRI. ArcGIS® Server Administrator and Developer Guide(ArcGIS® 9.0).
[7]夏松,韩用顺.GIS中最短路径算法的改进实现[J].测绘通报,2004,4.
[8]吴必军,李利新,雷小平,等.基于城市道路数据库的最短路径搜索[J].西南交通大学学报,2003,2.。