资源描述:
基于 MapGIS 组件技术实现地理信息系统的鹰眼功能 刘英才 1, 王宏生2, 李景春1 (1. 沈阳地质矿产研究所, 辽宁 沈阳 110034; 2. 沈阳工业大学信息学院, 辽宁 沈阳 110178 ) 摘要 MapGIS 是地质行业通用的地理信息系统软件. 空间数据是地学信息的基础,现在地学信息已广泛应用于社会各行 各业, 这使得利用 MapGIS 进行二次开发工作越来越重要. 应用 MapGIS 组件技术进行二次开发, 研究使用 MapGIS 进行组 件开发的方法, 并在软件开发工具 Visual BASIC 环境下利用 EditView 控件实现了鹰眼功能. 关键词 地理信息系统; 组件; MapGIS; 二次开发; 鹰眼功能 MapGIS 是由中国地质大学在 Windows 平台上用 C 语言自主开发的大型地理信息系统平台,是一个 集当代最先进的图形、 图像、 地质、 地理、 遥感、 测绘、 人 工智能、计算机科学等于一体的大型智能软件系统髴. 目前, 它是地质行业通用的地理信息系统软件, 它使地 质同行业各个部门之间保持数据形式一致,有利于信 息的传播和应用. 在国土资源大调查工作中, 区域地质 调查、 矿产勘查、 水文地质、 工程地质、 环境地质调查、 物探、 化探、 遥感等各个专业都在应用 MapGIS软件, 提 交的成果数据都是 MapGIS的点、 线、 面等数据格式. 为 了能够有效、 充分地利用好这些宝贵的地质信息, 发挥 人们的主观能动性, 使用 MapGIS进行应用信息系统的 二次开发工作,将数据采集和数据应用更好地结合起 来, 对于我们今后的地质工作有着十分重要的意义. 从上世纪 90 年代开始国际上许多大型 GIS 软件 商已经开展组件式 GIS 软件的开发,比较著名的有 ESRI 的 MapObjects, MapInfo 的 MapX 等. 像很多这样 的大型 GIS 工具一样,国产的 MapGIS 不仅具有完善 的可供用户使用的二次开发功能,而且在实际工作中 MapGIS软件和国外 GIS软件对比,它的价格低廉, 汉 化界面, 操作符合国内用户习惯, 技术支持方便, 有明 显的优势. 因此,在国产 GIS软件中名列前茅. 本文将 通过一个鹰眼功能的实现来介绍 MapGIS 组件开发技 术的应用. 1组件技术介绍 ComGIS 是面向对象技术和组件式软件技术在 GIS 软件开发中的应用. 随着组件软件技术和 GIS 技 术的不断发展,组件软件技术在 GIS 软件开发中的应 用也越来越广泛,成为目前 GIS 技术发展的一个新方 向[1]. ComGIS 的基本思想是把 GIS 的各个功能模块划 分为若干个组件, 每个组件完成不同的功能. 各个组件 之间可以方便地通过可视化的软件开发工具集成起 来, 它们之间再通过接口的属性、 方法和事件等进行相 互通信, 形成最终的 GIS应用系统. ComGIS 为系统开发商提供有效的系统维护方法, 为 GIS 最终用户提供了方便的二次开发手段,它是 GIS与组件技术相结合的新一代地理信息系统. 2基于 MapGIS 组件的二次开发 2.1MapGIS 的二次开发方式 目前, MapGIS 二次开发库主要以 API 函数、 MFC (Microsoft Foundation Class ) 类库、 COM 组件、 ActiveX 控件 4 种方式提供. 开发库被封装在若干动态链接库 (DLL ) 中. 在这里主要描述后 2 种开发方式. MapGIS COM组件开发 这是 MapGIS 新一代体系 结构的表现, 功能更加强大, 使用更加便利[2], 具有二 次开发方便、 易于集成、 无限扩展等特点, 支持多种开 发软件, 包括 Visual C、 Visual BASIC、 Delphi、 Script、 InterDev、 Power Builder 等. 开发者可以多层次地访问 MapGIS组件的数据层、 功能层和界面层. ActiveX 控件开发这是一种更高层次和更加通 用的应用接口, 是 MapGIS 完成组件化改造的成果之 收稿日期 2008-06-03. 张哲编辑. 髴 中地软件丛书编委会.MapGIS 地理信息系统使用手册.武汉中地信息工程有限公司, 2002. 文章编号 1671-1947200901-0077-04中图分类号 TP3文献标识码 A 地质与资源 GEOLOGY AND RESOURCES 第 18 卷第 1 期 2009 年 3 月 Vol. 18 No. 1 Mar. 2009 一. 它们使得二次开发更为快捷便利, 代码的可复用 性更高. 2.2MapGIS 的组件开发平台 MapGIS 组件开发平台以 COM为技术基础, 集成 了先进的计算机技术,汇总了多年来 MapGIS 的应用 经验, 功能更加强大, 使用领域更加广泛. 它以组件方 式提供了完善的 GIS功能, 包括空间数据库管理、 属性 数据分析、 网络分析、 图像分析与处理、 地图编辑和显 示等功能. MapGIS组件使二次开发更加便捷. 它提供“控件 对象” 的开发模式, 支持多种开发软件, 开发者可以 通过 MapGIS 的软件开发包开发面向特定领域的应用 程序. MapGIS 组件包含在一系列 Windows 动态连接库 文件中, ActiveX 控件则包含在一系列 ocx 文件中. 它 们按照不同的 GIS功能进行划分,主要由 7 类组件和 4 个控件组成, 如表 1 所示. 不同的组件包含了 MapGIS 提供的不同功能对 象, 对象分为可创建组件对象和不可创建组件对象.每 个对象都包含一系列属性、 方法、 事件, 也提供了与其 它对象的交互接口. 4 个可视化控件分别提供了图形 编辑、 工程管理、 属性编辑和属性结构编辑的功能, 它 们的使用方法与其他非 GIS控件十分相似. 2.3MapGIS 组件对象在 Visual BASIC 环境下的使用 方法 要使用 MapGIS 组件,必须先安装并在 Windows 注册表里注册. 通常安装完 MapGIS 的 SDK 开发包 后, 就自动安装并注册了 MapGIS组件. 根据需要手动注册或注销某个组件的方法如下 (1 ) 将组件文件拷贝到 MapGIS的 Program目录下 D\mapgis67\program\ (2 ) 组件注册 Windows 开始菜单→运行 regsvr32 D\mapgis67\program\MapGisBasCom1.dll (3 ) 注销组件 Windows 开始菜单→运行 regsvr32 /u D\mapgis67\program\MapGisBasCom1. dll 2.4在 Visual BASIC 环境下引用 MapGIS 组件对象的 方法 嵌入 MapGIS 对象类型库,执行以下步骤 从 Project (工程) 菜单中选择 References (引用) ; References 对话框出现后,选中复选框中所需的类型 库, 如选择 MapGisBasCom1 1.0 Type Library(图 1 ) . 3鹰眼功能的实现 鹰眼图按全图显示比例显示电子地图,是电子地 图的缩略图[3]. 缩略图上具有一个矩形框, 代表电子地 图的当前显示区域. 鹰眼图是 GIS 中一个基本的应用 功能. 一般的应用型地理信息系统在主窗口附近都有 一个鹰眼图. 鹰眼图用显著颜色的方框显示当前主 窗口在全图中的位置, 并可以在全图中迅速定位. 实 现鹰眼图功能的主要思路通过添加一个新的 EditView控件 (作为鹰眼窗口) 显示全图,当前主窗口 放一个 EditView 控件加载主图,使用显示对象 MapGisDC 获取显示范围, 再通过坐标转换 (逻辑坐 标转为设备坐标) , 在鹰眼窗口绘制当前显示范围对 应的矩形框. 表 1MapGIS 组件 (控件 ) 与 Windows 文件的对应关系 Table 1Correspondence between Windows files and MapGIS components Windows 文件MapGIS 组件控件 MapGisBasCom1.dll数据管理组件 MapGisDspCom1.dll图形显示组件 MapGisLayerCom1.dll图层管理组件 MapGisMapCom1.dll地图、 图例管理组件 MapGisDBSCom1.dll图库管理组件 MapGisRasterCom1.dll图像分析管理组件 EditView.ocx图形编辑控件 MapTree.ocx工程管理控件 GisAttEdit.ocx属性编辑控件 AttStruEdit.ocx属性结构编辑控件 地质与资源2009 年78 在 Visual BASIC环境下实现步骤 (1 ) 通过前面介绍的方法注册 MapGIS组件; (2 ) 在 Visual BASIC 环境下引用 MapGIS 组件对 象, 然后添加所需控件, 从 Project (工程) 菜单中选择 Components(组件) , Components 对话框出现后, 选中 EditViewActiveX Control Module 控件,将 EditView控 件添加到工具栏; (3 ) 建立工程文件,在窗体中添加两个 EditView 控件, 一个用来显示主图, 另一个用来实现鹰眼功能; (4 ) 进行程序代码的编写; (5 ) 调试运行程序. 鹰眼功能实现的部分程序代码如下 Dimrdot1 As NewD_Dot‘声明 dot1 变量 Dimrdot2 As NewD_Dot‘声明 dot1 变量 Private Sub EditView_MouseLButtonDown (ByVal xPos As Double, ByVal yPos As Double )‘鼠标左键点下事件 rdot1.X xPos‘获得鼠标左键点下位置的坐标 rdot1.Y yPos End Sub Private Sub EditView_MouseLButtonUp (ByVal xPos As Double, ByVal yPos As Double )‘鼠标左键放开事件 rdot2.X xPos‘获得鼠标左键放开位置的坐标 rdot2.Y yPos End Sub Private Sub EditView1_MyDraw (ByVal MpDCAs Object ) ‘显示图形内容事件 Dimmdc As MapGisDC‘声明 mdc 变量 Dimmrc As D_Rect‘声明 mrc 变量 DimmrcDevAs NewD_Rect‘声明 mrcDev变量 Set mdc MpDC‘提取显示设备对象 Set mrc EditView.Map.maprect ‘获得主窗体工程显示范围 dot1.X rdot1.X‘获得显示范围的角点坐标 dot1.Y rdot1.Y dot2.X rdot2.X dot2.Y rdot2.Y mdc.LpToDpXYdot1‘逻辑坐标转换为设备坐标 mdc.LpToDpXYdot2 mrcDev.xmindot1.X‘设置矩形框对象的角点坐标 mrcDev.ymin dot1.Y mrcDev.xmax dot2.X mrcDev.ymax dot2.Y mdc.SetPen 10, 6‘设置矩形框的宽度和颜色 mdc.DrawRect dot1, dot2‘根据 dot1 和 dot2 两角点坐标画矩形 EditView.RestoreWindow‘更新窗口 End Sub 在鹰眼图上通过单击鼠标左键来导航主图,其实 现方法是获得鼠标单击位置的坐标,再通过坐标转换 (设备坐标转为逻辑坐标 ) ,根据该坐标设置定位主图 并放大显示. Private Sub EditView1_MouseLButtonDown (ByVal xPos As Double, ByVal yPos As Double )‘鼠标左键点下事件 Dimmdc As MapGisDC‘声明 mdc 变量 rdot1.X xPos‘获得鼠标左键点下位置的坐标 rdot1.Y yPos mdc. DpToLpXYrdot1‘设备坐标转换为逻辑坐标 EditView.SetDispParmrdot1.X, rdot1.Y, scal ‘按鼠标点击位置定位主窗口, 并放大 scal 倍显示 EditView.UpdateWindow‘更新窗口 End Sub 以上短短几行代码已经可以解决一个现实中普遍 应用的问题,可见通过二次开发可以解决很多现实工 作中的问题, 从而达到充分利用数据信息, 提高了我们 工作效率的目的. 4结论 本文仅仅是对基于 MapGIS 组件技术的二次开发 作了初步的应用性探讨. 随着地理信息系统技术在地 质行业的进一步发展,地理信息系统在地质行业中的 矿产、 区调、 重力、 化探、 航磁、 遥感等各类专业中将发 挥越来越重要的作用. 而且, 基础地质调查成果的长久 价值体现于面向国家与社会的服务,所以进行地质资 源的二次开发与利用工作相当重要. MapGIS 软件的二 次开发应用还处在一个初期阶段,许多问题还都处于 摸索和研究之中, 还需要做大量的工作, 这也是我们这 些信息工作者今后的努力方向. 参考文献 [1] 杨旭, 黄家柱, 许建军, 等.基于组件式 GIS的地下水动态管理系统设 计与开发 [J] . 地理与地理信息科学, 2004, 20 (1 ) 4750. [2] 杨志, 郭富生, 刘林清.基于 MAPGIS 的江西省丹霞地貌信息系统的 设计与开发 [J] . 测绘与空间地理信息, 2006, 29 (1 ) 6466. [3] 刘光, 刘小东.地理信息系统二次开发实例教程VB.NET 和 MapObjects 实现 [M ] . 北京 清华大学出版社, 2004. 刘英才等 基于 MapGIS 组件技术实现地理信息系统的鹰眼功能第 1 期79 THE REALIZATION OF OVERVIEW BASED ON COMGIS IN MAPGIS LIU Ying-cai1, WANG Hong-sheng2, LI Jing-chun1 (1. Shenyang Institute of Geology and Mineral Resources, Shenyang 110034, China; 2. Shenyang University of Technology, Shenyang 110178, China ) AbstractMapGIS is a kind of GIS software commonly used in geologic research and exploration in China. The spatial data, which are the fundamental ination of geosciences, have been widely applied in all walks of life. The redevelopment of MapGIS based on ComGIS becomes more and more important. Applying the component technique of MapGIS, this paper realizes the overview function by EditView with Visual BASIC tool. Key wordsGIS; COM; MapGIS; redevelopment; overview function 作者简介 刘英才 (1980 ) , 女, 硕士, 2008 年毕业于沈阳工业大学, 现从事地理信息系统工作, 通信地址 沈阳市黄河北大街 1 号, 邮政编码 110034. 地质与资源2009 年80
展开阅读全文