GIS网络分析功能的实现

  • 格式:pdf
  • 大小:40.06 KB
  • 文档页数:1

2007.9(下旬刊)
网络分析作为GIS应用最主要的功能之一,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用。

随着计算机及测绘技术的不断发展,地理信息产业得以蓬勃发展,近几年来我中心面向社会的GIS应用开发不断增多,逐渐形成以MapGuide为主流的GIS应用开发体系。

MapGuide是Autodesk公司的商业Webgis产品,该产品合理的分配了客户机和服务器的运算,实现了矢量数据的直接访问,优良的性能、可扩展性强,是webgis应用的首选产品之一。

MapObject是美国ESRI生产的控件式GIS系统,它性能稳定,价格适中,是目前非常流行的GIS系统开发平台。

但这两个系统都没有现成的网络分析功能,为了满足用户的应用需求,我们通过二次开发为MapGuide和MapObject分别定制了网络分析功能。

网络分析中最基本最关键的问题是最短路径问题。

最短路径不仅仅是指一般地理意义上的距离最短,还可以引申到其他的度量,如时间、费用、线路容量等。

其实,无论是距离最短、时间最快还是费用最低,它们的核心算法都是最短路径算法。

最短路径的求解,必须把现实生活中的道路、管线等各种网络抽象成一种数学结构,这种抽象出来的数学结构被称为网络拓扑结构。

于是各种网络分析技术实现的关键在于网络拓扑结构的建立和高效能最短路径算法。

下面我们就这两个问题进行深入探讨。

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

1.1算法选择
在数学和计算机领域网络被抽象为图,再利用图论的方法计算最短路径。

目前提出的基于图论的最短路径的算法大约有17种.经专家测试,其中有3种效果比较好,它们分别是:TQQ、DKA以及DKD。

其中TQQ算法的基础是图增长理论;后两种算法则是基于Dijkstra的算法。

Dijkstra算法为理论基础,只是不同系统对Dijkstra算法采用了不同的实现方法。

1.2经典Dijkstra算法的主要思想
将顶点分成两个集合S和T,已求出最短路的点置于S中,其它点置于T中。

开始时S中仅含起点vs,其中点全在T中,随着求最短路迭代工作的进行,S中的点逐渐增多,当终点vt也被纳入S中时,迭代结束。

为了便于计算和区分各顶点组成,记为(d(vs,vk),i)其中i为vk到起点最短路上的前点,d(vs,vk为从起点vs到vk的最短路长.因每个标号含有两部分,故称为双标号法.最短路径算法的基本过程如下:(1)给始点vs赋以标号(0,s),并置vs于置,其它顶点于集合T中(2)对图G里起点在S中终点在T中的ei计算:
D(vs,sk)={d(vs,vi)+minj[Wij]—vi∈T}并将vk置于s中,同时赋给它标号(d(vssk),i)。

(3)重复步骤(2),当vt∈S时计算结束vt的第一个标号给出vs→vt的最短路长;利用第二个标号反向追踪,可得最短路径。

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

2.1拓补关系的获取
GIS中的数据(如道路、管网、水系等)要进行最短路径的计算,就必须首先将其按节点和边的关系抽象为图的结构,这在GIS中称为构建网络的拓补关系。

只有建立了拓补关系,我们才能进行网络路径分析。

GIS数据通常是图形数据的属性数据的有机结合,在ARC/INFO下利用命令CLEAN对道路网络数据构建网络拓补,我们可以看到属性表,其属性结构中包括_Fnode(起点)和_Tn-ode(终点)两个属性项。

该属性表中包含了一个完备的网络拓补关系的,即记录了该图拥有多少个节点,又记录了节点与节点的连通关系,不同的_Fnode、_Tnode标号代表不同的节点,及一条线的起始节点和终止节点,拥有相同节点的线相连,从该表大家应该很清楚的看出道路网的拓补结构。

构建网络拓补是一个复杂的过程,在搭建用户应用系统时,一般使用ARC/INFO等专业软件好网络拓补关系,使用时只需访问GIS数据的数学表即可。

2.2网络拓补关系的高效访问
利用上面的属性表我们可以又效的解读出一个网络拓补关系,在按标记法实现Dijkstra算法的过程中,核心步骤就是从未标记的点中选择一个权值最小的弧段,即上面所术算法的2)~3)步。

下面主要就如何从含拓扑关系的属性表中解析一个简洁高效的网络拓扑存储结构进行讨论。

在数学和计算机领域中网络拓扑被抽象为图,所以其基础是图的存储表示。

一般而言,无向图可以用邻接表和十字链表表示。

综合以上4种存储结构的优缺点,我们采用了两个数组来存储网络图,一个用来存储和弧段相关的数据(Net-Arclist),另一个则存储和顶点相关的数据(NET-Nodelndex)。

Net-Arclist用一个数组维护并且以弧段起点的点号来顺序排列,同一起点的弧段按权值排序。

这个数组类似于邻接矩阵的压缩存储方式,其内容则具有邻接多重表的特点,即一条边以两顶点表示。

Net-NodeIndex则当于一个记录了顶点出度的索引表,通过它可以很容易地得到此顶点的出度和与它相连的第一条弧段在弧段数组中的位置。

这样就可以以最快速度搜索出与任意节点相连的边在顶点已编号的情况下,建立Net-ArcList和Net-NodeIndex两个表以及对Net-ArcList的排序其时间复杂度共为O(2n+lgn),否则为O(m+2n+lgn)。

这个结构所需的空间也是必要条件下最小的,记录了m个顶点有及n条边的相关信息,与邻接多重表是相同的。

参考文献:
[1]李德仁.当前国际GIS的研究和应用现状.1995.
[2]李斌.我国GIS软件工业面临的机遇和挑战.1999.
GIS网络分析功能的实现
□胡明光张亮
(固始县房地产管理所河南・固始465200)
摘要网络分析作为GIS的重要功能在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用。

随着GIS系统集成应用的不断深入,为了满足用户的应用需求,我们通过二次开发的手段,为一些GIS平台定制了网络分析功能。

利用经典的Dijkstra算法,结合GIS数据和平台特点,通过简单的程序设计可实现复杂的网络分析功能。

关键词网络分析Dijkstra算法网络拓朴关系
中图分类号:N99文献标识码:A文章编号:1672-7894(2007)09-216-01
理工科研
216。