利用VC_开发基于MAPGIS的道路信息系统.pdf
收稿日期2003201210 作者简介张文君1970 , 男,陕西咸阳人,西南科技大学副教授,硕士 文章编号1001238572003 Sup.20162205 利用VC 开发基于 MAPGIS的道路信息系统 张文君, 王卫红 西南科技大学城建学院,四川 绵阳, 621002 摘 要结合VC 开发地理信息系统的优点,着重讨论了在GIS平台MAPGIS下 建立道路信息系统的数据处理方法及如何用API函数和MFC类库实现该系统的过 程. 关键词地理信息系统;二次开发;道路信息系统 中图分类号 TP392 文献标识码 A MAPGIS是中地公司研制开发的较成熟的地理信息系统软件平台. MAPGIS用面向对象 的思想把一些API功能进行封装,形成多个派生于MFC中Cview类的可重用基类,开发者只 需利用基于MFC的MAPGIS类库,就可构建符合面向对象软件工程的MAPGIS应用系统, 从而使开发变得简单、 可靠、 便利. VC 支持结构化软件工程、 面向对象工程、 组件软件工程开发模式,与Windows系统 有很好的兼容性,已成为开发Windows应用程序的最流行的C 开发工具.利用VC 开 发GIS时,系统的所有流程和数据都在设计者的控制之下,可以根据系统的需求来实现GIS 的相关功能,设计的系统短小精悍,软硬件要求低,运行速度快,可靠性好. 本文以西南科技大学校区道路网为例,在MAPGIS5. 4环境下,用基于MFC的MAPGIS 类库和VC 5. 0开发了简单、 实用的道路信息系统. 1 数据的处理与准备 首先对用数字化成图软件南方CASS4. 0生成的西南科技大学SWUST. DXF文件格式进 行转换,形成MAPGIS环境下的标准格式SWUST. WT ,SWUST. WL ,SWUST. WP;然后对 三种文件格式的图形进行编辑.图形编辑的目的在于消除数据输入过程中的错误或误差,包括 空间点位的不正确和变形;空间点位或线段的丢失和重复;线段的过长或过短;面域的不闭合 等.通过编辑能够修改、 更新图形的内容,丰富图形的表现力,实现图形综合. 1. 1 图层处理 为了方便图形处理与编辑,首先对转入的图形文件进行图层管理,一般讲同类图元或相关 图元调整在相同的层中,并将多余的图层删除. 第31卷 专 辑陕西师范大学学报自然科学版Vol. 31 Sup. 2003年4月Journal of Shaanxi Normal University Natural Science EditionApr. 2003 1. 2 点、 线、 面编辑 为了保证图形的准确和完美需要对图元进行添加、 删除、 修改等编辑.对欲构造面域的线 元进行弧段提取,利用拓扑查错功能进行查错,保证弧段闭合,而且不相交,然后拓扑重建,对 闭合弧段进行构区. 1. 3 属性管理 在GIS中点、 线、 面都有其相应的属性,属性数据同样也是GIS分析的重要依据.可在 MAPGIS属性管理子系统中,首先编辑属性结构,再给每个图元赋属性;也可在图形编辑子系 统中选中图元对其属性进行逐个编辑. 1. 4 网络输入 道路信息系统中,很重要的一部分是输入网线和结点,构造网络,然后输入结点和网线的 属性.输入网线时,可以先在图形编辑子系统中建立线文件,然后将线文件转换成网文件,也可 在网络输入子系统中直接输入网线.本系统建立的道路网络文件为Swust. wn. 2 系统的主要功能及其实现 西南科技大学道路信息系统的主要功能有打开底图库、 打开网络图、 浏览属性、 地址查询、 最短路径分析、 最佳路径分析等.下面结合MAPGIS下的二次开发类库CGisView及它的可重 用子类库CgisEditView ,介绍道路信息系统主要功能实现的技术方法. 2. 1 浏览属性 选择网络图Swust. WN的结点属性进行浏览图1 ,同时浏览到的相应图元闪烁显示. VC 代码为 void CExmgisView OnViewAtt / /浏览属性 { -ViewAtt m-hWnd ,m-ahInst ,WS-CAPTION | WS- THICKFRAME ; } 2. 2 地址查询 通过地址查询功能,使查询到的地址在底图和网络图上闪烁显示,菜单功能如图2所示. VC 代码如下 图1 浏览属性示意图2 地址查询示意 专 辑张文君 等利用VC 开发基于MAPGIS的道路信息系统163 void CExmgisView OnLook/ /查询 { char szStr[20] ; ATT-STRU3stru NULL ; szStr[0] 0 ; char3att ; -nStringszStr ,” 输入感兴趣的查询地址名” ; F-DOT xy; short wjwh ; long rd; - GetAttStruNetai ,NOD , wjwh - GetFldNostru ,” 名称” ; rd -SearchAtt Netai ,NOD ,fldi ,szStr , if rd 0 { - GetNodPosNetai ,rd , CGisView - GotoWindowFxyxy. x ,xy. y ; -StartFlashNetai , } else MessageBox” 你的查询地址不存在”,” 查询” ; } 2. 3 最佳路径分析、 最短路径分析 路径分析是道路信息系统最基本的功能之一,其核心是对最短路径、 最佳路径的求解.最 短路径分析是通过对话框选择要经过的结点,系统将分析出一条经过这些结点的最短路径,最 短路径不考虑障碍.最佳路径分析与最短路径分析相似,系统根据网线权值和结点转角权值, 并且绕过障碍,分析出一条经过一系列结点的最佳路径. 为了进行网络路径分析,需要将网络路径转换成有向图.无论是计算最短路径还是最佳路 径,其算法都是一致的,不同之处在于有向图中每条弧的权值设置.如果需要计算最短路径,则 权值设置为两个节点的实际距离;而要计算最佳路径,则可以将权值设置为从起点到终点的时 间或费用. 例如从地址 “101” 经结点 “教工俱乐部” 到 “31幢” 最佳路径结果见图3 ;从地址 “101” 经结 点 “友谊楼” 到 “30幢” 最短路径结果如图4所示.运行结果与实际情况相符合,证明了所采用 的数模设计真实、 可靠. 最短路径分析VC 代码如下 void CExmgisView OnShortPath/ /最短路径分析 ⋯⋯ { 164 陕西师范大学学报自然科学版第31卷 图3 最佳路径分析结果图4 最短路径分析结果 short m-returnVal -nShortPathNetai ,inNod ,inNodNum , fori 0 ;i xy. x xmin xy. x ; if ymin xy. y ymin xy. y; if xmax xy. x xmax xy. x ; if ymax xy. y ymax xy. y; } -OpenWindowFxyxmin ,ymin ,xmax ,ymax ; fori 0 ;i outNodNum;i { -nDispLinWithArrowmdc ,Netai ,outLin[i] ; - GetNodAtt Netai ,outNod[i] , - GetFieldatt ,stru ,” 名称”,fldBuf ,256 , dd. Insert strLen ,fldBuf ; strLen dd. GetLength ; if i ” ; strLen strLen 2 ; } } -StartFlashNetai ,outLin , outNodNum , LIN ; MessageBoxdd ; } 专 辑张文君 等利用VC 开发基于MAPGIS的道路信息系统165 3 系统的路径分析设计 路径分析是道路信息系统最基本的功能之一,其核心是对最短路径、 最佳路径的求解.最 短路径分析是通过对话框选择要经过的结点,系统将分析出一条经过这些结点的最短路径,最 短路径不考虑障碍;最佳路径分析与最短路径分析相似,系统根据网线权值和结点转角权值, 并且绕过障碍,分析出一条经过一系列结点的最佳路径. 从网络模型的角度看,路径网络分析是运筹学模型中的一个基本模型,它的根本目的是研 究、 筹划网络工程如何安排,并使其运行效果最好.为了进行网络路径分析,需要将网络路径转 换成有向图.无论是计算最短路径还是最佳路径,其算法都是一致的,不同之外在于有向图中 每条弧的权值设置.如果需要计算最短路径,则权值设置为两个节点的实际距离;而要计算最 佳路径,则可以将权值设置为从起点到终点的时间或费用. 4 结 论 虽然该道路信息系统是以西南科技大学道路网为例开发的,但其思路、 方法同样适合于城 市交通、 旅游等系统中相关功能的开发.系统的运行结果表明MAPGIS的二次开发类库 CGisView及它的可重用子类库CGisEditView方便实用,用VC 对MAPGIS进行二次开 发切实可行.通过西南科技大学道路信息系统的设计、 开发,作者认为一个地理信息系统的创 建需要开发者具有较高的知识水平和专业素质,他必须掌握地理信息系统开发平台的相关功 能且具有计算机编程的实际经验.具体到道路信息的管理,还应该注意对数据采集应考虑其灵 活性和多样性,并保证数据转换自动化程度高,需要解决其图形数据及属性数据的完整再现. 参考文献 [1]陈建春. Visual C 开发GIS系统[M].北京电子工业出版社,2000. [2]邬伦,等.地理信息系统 原理、 方法和应用[M].北京科学出版社,2001. 〔 责任编辑 李乃英〕 Developing a road ination system in MAPGIS using VC ZHANG Wen2jun , WANG Wei2hong Mianyang City , Southwest University of Science and Technology , Mianyang , 621002 , Sichuan , China Abstract This article deals with how to develop a GIS using VC , and the emphases are placed on the data process to construct a road ination system , and the developing procedure using API functions and MFC class library in MAPGIS environment. Key words GIS;re2develop ; road ination system 166 陕西师范大学学报自然科学版第31卷