GIS网络分析功能的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GIS网络分析功能的实现

摘要: 网络分析作为GIS的重要功能,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用。随着GIS系统集成应用的不断深入,为了满足用户的应用需求,我们通过二次开发的手段,为一些GIS平台定制了网络分析功能。利用经典的Dijkstra算法,结合GIS数据和平台特点,通过简单的程序设计可以实现复杂的网络分析功能。

关键词: 网络分析; Dijkstra算法;网络拓扑关系

网络分析作为GIS应用最主要的功能之一,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用。随着计算机及测绘技术的不断发展,地理信息产业得以蓬勃发展,近几年来我中心面向社会的GIS应用开发不断增多,逐渐形成以MapObject和 MapGuide 为主流的GIS应用开发体系。MapGuide是Autodesk公司的商业webgis产品,该产品合理的分配了客户机和服务器的运算,实现了矢量数据的直接访问,优良的性能、可扩展性强,是webgis应用的首选产品之一。MapObject是美国ESRI生产的控件式GIS系统,它性能稳定,价格适中,是目前非常流行的GIS 系统开发平台。但这两个系统都没有现成的网络分析功能,为了满足用户的应用需求,我们通过二次开发为MapGuide和MapObject分别定制了网络分析功能。

网络分析中最基本最关键的问题是最短路径问题。最短路径不仅仅指一般地理意义上的距离最短,还可以引申到其他的度量,如时间、费用、线路容量等。相应地,最短路径问题就成为最快路径问题、最低费用问题等。其实,无论是距离最短、时间最快还是费用最低,它们的核心算法都是最短路径算法。

最短路径的求解,必须把现实生活中的道路、管线等各种网络抽象成一种数学结构,这种抽象出来的数学结构被称为网络拓扑结构。于是各种网络分析技术实现的关键在于网络拓扑结构的建立和高效能最短路径算法。下面我们就这两个问题进行深入探讨。

1 最短路径算法

最短路径算法,关键是将一个物理网络结构抽象为一个数学网络结构,再利用数学方法进行求解。

1.1 算法选择

在数学和计算机领域网络被抽象为图,再利用图论的方法计算最短路径。目前提出的基于图论的最短路径的算法大约有17种。经专家测试,其中有3种效果比较好,它们分别是:TQQ、DKA以及DKD。其中TQQ算法的基础是图增长理论;后两种算法则是基于Dijkstra的算法。Dijkstra算法是经典的最短路径算法,目前多数系统解决最短路径问题采用了Dijkstra算法为理论基础,只是不同系统对Dijkstra算法采用了不同的实现方法。

1.2 经典Dijkstra算法的主要思想Dijkstra算法的基本思路是:将顶点分成两个集合S和T,已求出最短路的点置于S中,其它点置于T中。开始时S 中仅含起点vs,其它点全在T中,随着求最短路迭代工作的进行,S中的点逐渐增多,当终点vt也被纳入S中时,迭代结束。为了便于计算和区分各顶点是否已进入集合S,给已求出到起点最短路的点vk赋以标号。这个标号由两部分组成,记为(d(vs,vk),i)其中i为vk到起点最短路上的前点,d(vs,vk为从起点vs到vk的最短路长。因每个标号含有两部分,故称为双标号法。最短路径算法的基本过程如下:

(1)给始点vs赋以标号(0,s),并置vs于置,其它顶点于集合T中。

(2)对图G里起点在S中终点在T中的边ei,计算:

d(vs,vk)=mim{d(vs,vi)+minj[Wij]|vi∈s,vj∈T}并将vk置于S中,同时赋给它标号(d(vs vk),i)。

(3)重复步骤(2),当vt∈S时计算结束vt的第一个标号给出vs→vt的最短路长;利用第

二个标号反向追踪,可得最短路径。

2 网络拓扑关系的获取与高效访问

要想用计算机程序实现Dijkstra算法,关键技术是用什么样的方式抽象出网络拓扑结构,及节点与节点的连通关系,并对网络拓扑结构进行高效能访问。

2.1 拓扑关系的获取

GIS中的数据(如道路、管网、水系等)要进行最短路径的计算,就必须首先将其按结点和边的关系抽象为图的结构,这在GIS中称为构建网络的拓扑关系。只有建立了拓扑关系,我们才能进行网络路径分析。GIS数据通常是图形数据和属性数据的有机集合。在ARC/INFO下利用命令CLEAN对道路网数据构建网络拓扑,我们可以看到属性表,其属性数据中包括_Fnode (起点)和_Tnode(终点)两个属性项。该属性表中包含了一个完备的网络拓扑关系,即记录了该图拥有多少个节点,又记录了节点与节点的连通关系,不同的_Fnode、_Tnode标号代表不同的节点,及一条线的起始节点和终止节点,拥有相同节点的线相连,从该表大家应该很清楚的看出道路网的拓扑结构。构建网络拓扑是一个复杂的过程,在搭建用户应用系统时,一般使用ARC/IN FO等专业软件事先构件好网络拓扑关系,使用时只需访问GIS数据的属性表即可。

2.2 网络拓扑关系的高效访问

利用上面的属性表我们可以有效的解读出一个网络拓扑关系,在按标记法实现Dijkstra算法的过程中,核心步骤就是从未标记的点中选择一个权值最小的弧段,即上面所述算法的2)~3)步。这是一个循环比较的过程,如果不采用任何技巧,要选择一个权值最小的弧段就必须对属性表进行多次扫描,在大数据量的情况下,这无疑是一个制约计算速度的瓶颈。下面主要就如何从含拓扑关系的属性表中解析一个简洁高效的网络拓扑存储结构进行讨论。在数学和计算机领域中网络拓扑被抽象为图,所以其基础是图的存储表示。一般而言,无向图可以用邻接矩阵和邻接多重表来表示,而有向图则可以用邻接表和十字链表表示,其优缺点的比较见表2。

综合以上4种存储结构的优缺点,我们采用了两个数组来存储网络图,一个用来存储和弧段相关的数据(Net-ArcList),另一个则存储和顶点相关的数据(Net-NodeIndex)。Net-ArcList用一个数组维护并且以弧段起点的点号来顺序排列,同一起点的弧段按权值排序。这个数组类似于邻接矩阵的压缩存储方式,其内容则具有邻接多重表的特点,即一条边以两顶点表示。Net-NodeIndex 则相当于一个记录了顶点出度的索引表,通过它可以很容易地得到此顶点的

相关文档
最新文档