柳春生,王科
(1.广州市城市规划勘测设计研究院,广东 广州 510060; 2.武汉大学遥感信息工程学院,湖北 武汉 430079)
随着我国油气工业的快速发展,油气管道的建设速度日益加快。天然气管道运输企业主营业务是天然气的管道运输,输气、联运的成本一直是天然气输送业务的最关键成本[1]。因此合理确定配送路线并制定最优管网路径,能节约建设成本、运输时间、减少运输费用,提高天然气运输效率。
目前,GIS技术应用于最优路径分析成为近几年来研究的热点和发展趋势。某些管理部门以C#为开发语言,基于ArcEngine技术平台,结合Dijkstra算法开发专用的最优路径选取分析软件。最短路径算法主要分静态最短路径算法和动态最短路径算法。静态最短路径主要有Dijkstra算法、Floyd算法[2]。动态最短路径典型的算法有D*算法。荷兰计算机专家E.W.Dijkstra在1959年提出了具有深远影响的Dijkstra最短路径算法,继Dijkstra之后涌现出一大批求解最短路径问题的方法[3,4]。Cherxassky,Goldberg和Razik在1996年对Dijkstra算法、Incremental Graph算法等17种最短路径算法进行了对比评估,通过基于不同性质的随机网络的分析评估之后,发现并没有万能的算法,在不同的网络特性中,相应地有不同的优势算法[5]。
本文主要研究的是在地下天然气管线铺建时最短路径选取问题,是属于对静态最短路径算法的研究范畴,因此本文运用经典Dijkstra算法,以ArcGIS为开发平台,开发了油气管网最优路径的选取系统。
(1)组件对象模型(COM)
组件对象模型(COM)是一个关于怎么建立组件,怎样以组件为基础开发应用程序的规范说明,可动态交替更新组件。开发人员在COM构架下可以按照需求开发出功能不一的组件,并组合起来构成复杂的应用系统。因此不仅可以在多个应用程序下重复利用一个组件也可以随时根据系统需求对某个或多个组件进行定制更新和升级。
(2)组件式技术开发平台
组件式GIS开发平台主要由基础组件、高级通用组件和行业性组件三级结构组成:基础组件提供基础交互,用于空间数据管理以及数据库连接;高级通用组件由基础组件组成,如显示和编辑等,主要用于通用功能的实现。行业性组件则把地理信息行业应用中的特定算法抽象固化到固定的组件中,更针对性地开发行业性应用系统,加速开发过程[6]。
ArcGIS Engine是一个简单的、独立于应用程序的Arc Objects编程环境,开发人员用于建立自定义应用程序的嵌入式GIS组件的一个完整类库。Arc Engine由一个软件开发包和一个可以重新分发的为ArcGIS应用程序提供平台的运行时(runtime)组成。
ArcEngine功能层次由以下5个部分组成:基本服务;数据存取;地图表达;开发组件;运行时选项。
依据设计思路,并结合系统拟实现的功能,将分为三层构架,分别为基础应用层、数据管理层以及应用分析层。基础应用层包括一些基本的底层数据,包含居民地、绿地、学校等点线面数据;数据管理层则主要为底图数据和分析网络,用来实现算法;分析应用层则为最短路径选取以及查询功能等,具体如图1所示。
图1 系统总体构架
本系统开发和运行的环境如表1所示。
系统开发运行环境 表1
根据需求分析,本系统功能将分为以下几大功能:①文件功能;②编辑功能;③最短路径分析功能;④视图功能;⑤辅助功能。如图2所示。
图2 系统功能划分
(1)编辑功能模块
该功能包含基本的剪切、复制、粘贴、查找、全选等功能。
查找功能:可分别对各个图层的地物进行搜索查询,并可漫游到查询的地物,方便用户快捷、精确地查询到目标地物。
(2)查询功能模块
为方便用户快速查询相关地物,本系统将实现目标地物的快速定位并漫游到目标地物。
同时,配备相应的属性查询,用户可以清楚地查询到相关地物的属性信息,例如:地址、电话等相关信息。
(3)最短路径分析功能模块
该功能为本系统核心功能,可对任意两点天然气运输站进行最短路径分析,并在地图上进行可视化标记,同时显示最短路径的具体路程等基本信息。
障碍点分析:若某运输站出现技术故障,暂时不能正常工作,系统在分析时将自动绕过有障碍的运输站。
导出图片:可将已算出的最短路径进行出图保存,方便日后记录查看。
(4)视图功能模块
本功能主要包括全景视图、前一视图、后一视图、图层标注、标注清除等功能。全景视图、前一视图、后一视图功能的设置目的是方便用户浏览地图。
图层标注:该功能可对目标图层进行标注,可选择要标注的字段,并能对标注进行字体、字号、颜色、比例尺等设置。最终在地图上显示标注信息。
标注清除:对已经标注的图层,进行标注清除。
属性查询:该功能可对目标地物进行属性查询,例如超市地址、联系电话、优惠信息等。选择目标地物所属图层,选取目标地物,则可在图框中查看目标地图的所有属性信息。
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#包括了与Java几乎同样的语法和编译成中间代码再运行的过程,例如单一继承、接口等。本系统用到了窗体类、自定义功能集类、BaseCommand类、BaseTool类等。从类的角度重新考虑程序的全部功能,提取耦合度较高的过程单独封装成类,使功能更加细化,有利于具体的代码实现。图3举例表示了所使用类之间的关系[7]。
图3 类之间关系
本系统中要素属性查询类和打开地图文件类,继承于BaseTool和BaseCommand类,这些类往往执行一个相对独立的任务,它们通常位于工具栏中和右键菜单中。主要方法一般为与用户进行交互事件相关的操作地图的方法,如地图属相查询时的Flash,Zoom to,Pan to等。
天然气管线路径分析系统的数据主要为各地物类的属性。本设计涵盖空间数据中基本的要素类型及数据格式,包括分析网络的点、线以及各地物(超市、花园、居民地等)属性信息,方便查阅。
ArcCatalog是地理数据的资源管理器、是ArcGIS Desktop中较为常用应用程序之一。用户通过ArcCatalog来组织、管理和创建GIS数据。Geodatabase数据模型主要是用来实现矢量数据和栅格数据的一体化存储,目前主要有两种格式,一种是基于Access文件的格式(称之为Personal Geodatabase),另外一种是基于Oracle或SQL Server等RDBMS关系型数据库管理系统的数据模型,本设计中,将采用Access文件存储格式[8]。
(1)数据库结构
结合本系统的功能,数据库设计如图4所示。
图4 数据库结构
(2)数据库字段
数据的字段类型涵盖双精度浮点型、文本型、长整形和日期型等。具体如表2与表3所示:
①分析网络
配送站表结构 表2
②底层数据
超市表结构 表3
本系统主界面设计如图5、图6所示。
图5 主界面窗体设计1
图6 主界面窗体设计2
主界面由标题栏、菜单栏、工具栏、ToolbarControl、TOCControl、MapControl、状态栏等组成。为了迎合市场商业化,加入DotNetbar控件,使系统界面更加接近Windows系统,方便使用。
设G=(V,E)是一个带有权的有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径,就将其加入集合S中,直到全部顶点都加入S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中顶点的距离就是从v到此顶点的最短路径长度,U中顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度[9,10]。
Dijkstra算法步骤如下:
(1)初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则正常有权值,若u不是v的出边邻接点,则权值为∞。
(2)从U中选取一个距离v最小的顶点k,把k加入S中(该选定的距离就是v到k的最短路径长度)。
(3)以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后距离值的顶点k的距离加上边上的权。
(4)重复步骤(2)和(3)直到所有顶点都包含在S中[11]。
(1)数据读取
系统读取用于分析的分析网络以及地形底图,显示效果如图7所示。
图7 数据读取
(2)图层选择
选取相应的图层,然后进行相应的操作。路径分析应在线图层(psline)进行操作,如图8所示。
(3)选取起始点
图层设定完成后,选取起止点。选择空间区域需要执行的操作有:点击选择空间区域,激活主窗体,在MapControl控件中用鼠标依次选择起点和终点。此时选择起始点完毕,并点击最短路径分析,即可得到结果。结果显示分别有两个界面,其中一个为MapControl显示窗口,直接用彩色标注最短路径结果;另一个为Textbox显示窗口,用文字记录最短路径。显示效果如图9、图10所示。
图8 图层选择
图9 Textbox显示窗口
图10 MapControl显示窗口
(4)设置障碍点功能
考虑系统的容错性与综合性,若某油气配送站出现故障,暂时无法工作时,对该点进行标记,系统将自行避开故障配送站,进行最短路径选取。最终效果如图11所示。
图11 障碍点插入显示效果
本文在ArcGIS Engine平台上利用C#语言实现了拓扑结构生成和最短路径分析,通过简单的点击操作,确定起始点便可得到最短路径,并在电子地图上予以显示,方便直观。同时也可以在线路选择时进行障碍设置,得到有一定条件约束时的最短路径选择结果。本系统对管网管理的贡献如下:最短路径选取,支持障碍点插入分析,辅助科学规划路线;地物查询,为用户快速查询地物以及地物相关属性提供帮助;图层标注,为用户提供方便的标注手段,方便地图的查阅;系统的建立为科学高效地规划地下路线提供了技术工具。本系统的建立,使路线规划人员更加容易地规划与选择最短路径,能够为管理者提供辅助性决策依据,在一定程度上节省了人力物力。由于时间和能力等诸方面的原因,系统在许多方面还有提升空间,比如算法效率提高问题。