资源描述:
《gis网络分析功能及实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、GIS网络分析功能的实现摘 要: 网络分析作为GIS的重要功能,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用。随着GIS系统集成应用的不断深入,为了满足用户的应用需求,我们通过二次开发的手段,为一些GIS平台定制了网络分析功能。利用经典的Dijkstra算法,结合GIS数据和平台特点,通过简单的程序设计可以实现复杂的网络分析功能。 关 键 词: 网络分析; Dijkstra算法;网络拓扑关系 网络分析作为GIS应用最主要的功能之一,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了
2、重要的作用。随着计算机及测绘技术的不断发展,地理信息产业得以蓬勃发展,近几年来我中心面向社会的GIS应用开发不断增多,逐渐形成以MapObject和MapGuide为主流的GIS应用开发体系。MapGuide是Autodesk公司的商业webgis产品,该产品合理的分配了客户机和服务器的运算,实现了矢量数据的直接访问,优良的性能、可扩展性强,是webgis应用的首选产品之一。MapObject是美国ESRI生产的控件式GIS系统,它性能稳定,价格适中,是目前非常流行的GIS系统开发平台。但这两个系统都没有现成的网络分析功能,为了满足用户的应用需求,我们通过二次开发为MapGui
3、de和MapObject分别定制了网络分析功能。 网络分析中最基本最关键的问题是最短路径问题。最短路径不仅仅指一般地理意义上的距离最短,还可以引申到其他的度量,如时间、费用、线路容量等。相应地,最短路径问题就成为最快路径问题、最低费用问题等。其实,无论是距离最短、时间最快还是费用最低,它们的核心算法都是最短路径算法。最短路径的求解,必须把现实生活中的道路、管线等各种网络抽象成一种数学结构,这种抽象出来的数学结构被称为网络拓扑结构。于是各种网络分析技术实现的关键在于网络拓扑结构的建立和高效能最短路径算法。下面我们就这两个问题进行深入探讨。1 最短路径算法最短路径算
4、法,关键是将一个物理网络结构抽象为一个数学网络结构,再利用数学方法进行求解。1.1 算法选择在数学和计算机领域网络被抽象为图,再利用图论的方法计算最短路径。目前提出的基于图论的最短路径的算法大约有17种。经专家测试,其中有3种效果比较好,它们分别是:TQQ、DKA以及DKD。其中TQQ算法的基础是图增长理论;后两种算法则是基于Dijkstra的算法。Dijkstra算法是经典的最短路径算法,目前多数系统解决最短路径问题采用了Dijkstra算法为理论基础,只是不同系统对Dijkstra算法采用了不同的实现方法。1.2 经典Dijkstra算法的主要思想Dijkstra算法的基本
5、思路是:将顶点分成两个集合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中的边e
6、i,计算: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中的数据(如道路、管网、水系等)要进行最短路径的计算,就必须首先将其按结点和边的关系抽象为图的结构,这在GI
7、S中称为构建网络的拓扑关系。只有建立了拓扑关系,我们才能进行网络路径分析。GIS数据通常是图形数据和属性数据的有机集合。在ARC/INFO下利用命令CLEAN对道路网数据构建网络拓扑,我们可以看到属性表,其属性数据中包括_Fnode (起点)和_Tnode(终点)两个属性项。该属性表中包含了一个完备的网络拓扑关系,即记录了该图拥有多少个节点,又记录了节点与节点的连通关系,不同的_Fnode、_Tnode标号代表不同的节点,及一条线的起始节点和终止节点,拥有相同节点的线相连,从该表大家应该很清