MAPGIS图形自动生成技术.pdf
1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. doi 10. 3969/j . issn. 1001 - 358X. 2009. 03. 002 MAPGIS图形自动生成技术 李海洋 1 ,王丽英 2 ,孙贵博 2 1 1辽阳市国土资源勘查规划院,辽宁 辽阳 111000; 21辽宁工程技术大学测绘与地理科学学院,辽宁 阜新 123000 摘要MAPGIS是一套成熟的通用地理信息系统平台,其提供了完整的二次开发库。随着MAPGIS在国内 外应用的推广,利用其提供的二次开发库,针对各专业领域的地理信息应用系统的二次开发研究也成为热 点。文中较系统的研究了基于Visual C 1NET环境下的MAPGIS二次开发的原理、 方法及过程;探讨 MAPGIS的图形自动生成技术的设计与实现;以某石油勘探区的数据为实验,开发自动成图软件。 关键词图形自动绘制;二次开发; Visual C1NET; MAPGIS 中图分类号 P208 文献标识码B 文章编号 1001 - 358X2009 03 - 0004 - 04 在专题图件编制的过程中,用户主要是在MAP2 GIS平台上实现的,而且经常会遇到将不同格式的原 始坐标数据文件绘制为MAPGIS的相应点、 线、 区图 层。这些原始数据文件的格式与MAPGIS制图的读 入文件格式存在一定的差异,因此需要在制图前对 原始数据进行格式转换。以往的做法一般是将这些 数据文件用记事本等文本编辑器打开,然后人工方 式逐行更改其文件格式,最后在MAPGIS下读入数 据并绘制图层;另一种做法是将数据文件打开,采取 人工记录点位坐标的形式直接在MAPGIS下绘制相 应的点、 线、 区图层。但是,无论采用上述那一种方 法,都需要制图人员手工辅助完成,这对于制图工作 者来说都是相当繁琐的,同时人工方式尤其是多次 手工数字化的人工方式也很难保证其绘制结果的 精确度和可靠性。为了解决上述问题,并直观的显 示MAPGIS图层,实现图层绘制过程的自动化,利用 VC 1NET对MAPGIS软件进行了二次开发,MAP2 GIS工程的基本操作和图形自动绘制功能。提高了 生产效率和制图精度。 1 MAPG IS二次开发技术 111 MAPGIS的二次开发环境 11111 MAPGIS平台简介 MAPGIS是中国地质大学信息工程学院武汉中 地信息工程有限公司自行研制开发的地理信息系 统,是国产优秀的桌面GIS软件,它属于矢量数据结 构GIS平台,它是一个集当代最先进的图形、 图像、 地质、 地理、 遥感、 测绘、 人工智能、 计算机科学于一 体的大型智能软件系统,是集数字制图、 数据库管理 及空间分析为一体的空间信息系统,是进行现代化 管理与决策的先进工具。主要优势功能有 ① 将空间数据数字化输入、 编辑、 拓扑一体化。 ② 具有强大的制图功能,包括各种专题图例符 号的制作较其它软件方便灵活得多。 ③ 基本上完成了GIS方方面面的分析功能。 11112 MAPGIS的二次开发环境 成熟实用的地理信息系统GIS的重要标志就 是它提供给用户的二次开发能力。MAPGIS提供完 整的二次开发函数库。目前,MAPGIS二次开发库主 要是以API函数、MFC Microsoft Foundation Class类 库、COM组件、ActiveX控件四种方式提供,这些开发 库被封装在若干动态链接库DLL和AetiveX控件 库OCX文件中。 112 在Visual C1NET中使用MAPGIS组件及控件 1NTE编程环境下的开发优势在MAPGIS集成 开发中还得不到体现,而以MAPGIS为基础的应用 系统需求却在不断扩大,这种矛盾将促使基于 1NET 的以MAPGIS集成开发研究的发展,并将成为MAP2 GIS集成开发研究的重要领域。 MAPGIS组件提供32位COM对象,在32位的 Visual C1NET程序可以使用这些COM对象。 ⑴MAPGIS组件的安装 要使用MAPGIS的组件必须对其安装并在W in2 dows注册表里注册。运行MAPGIS二次开发包中的 Setup1程序,就可以自动安装MAPGIS组件并自 动进行注册。如果需要对某些单个的组件文件进行 注册或注销,则按以下步骤进行 ①将组件文件拷贝到MAPGIS的Prgoram目录 下,假设路径为 C \mapgis67 \program \ 4 第3期 2009年6月 矿 山 测 量 M I NE SURVEYI NG No13 Jun12009 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. ②注册组件过程是W indows开始菜单 运行 regsvr32 C \mapgis67 \Program \ MapGis BasComl1dll,结果会弹出注册成功与否的对 话框。 ③注销组件的过程与注册组件相类似 W in2 dows开始菜单 运行 regsvr32 /u C \mapgis67 \Program \ MapGis BasComl1dll,结果会弹出注销成功与否的对 话框。 ⑵ 使用MAPGIS组件对象 可以使用Visual C1NET编写使用MAPGIS对 象的程序,在Visual C1NET程序中使用MAPGIS对 象所要求的步骤是 ① 嵌入/引用MAPGIS对象类型库 在“ 解决方案 ” 的引用中选择添加引用,在“ 添加 引用 ” 对话框中,选择COM选项卡,选择所要嵌入的 COM组件。 添加引用后在“ 解决方案 ” 的引用栏中,出现相应 的名称空间,在工具箱中出现相应控件,则注册成功。 ② 建立MAPGIS对象 MAPGIS组件的核心是MAPGIS组件对象。在 Visual C1NET中使用NEW方式实例化对象,均是 以接口声明,以具体类进行实例化,如 D_Dot dot new D_DotClass。 ③ 使用MAPGIS对象和其它Visual C1NTE对象 利用实例化的对象的属性和方法,进行对象的 使用。在 1NET环境中,有很好的智能提示,对象的 属性和方法都会自动显示。 ④ 释放MAPGIS对象 当程序完成使用它创建的MAPGIS对象时,必 须释放该对象,通过将变量值设为null来释放MAP2 GIS对象。如 dot null。 2 图形自动生成功能设计与实现 211 功能简介 功能模块架构图如图1所示 图1 功能模块构架图 212 功能实现流程 21211 物理流程 物理流程图如图2所示。 图2 物理流程图 5 第3期 李海洋等MAPGIS图形自动生成技术 2009年6月 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 212 类图设计 系统主要用到了三个类,分别是Point Layer2 Draw,AreaLayerDraw,LineLayerDraw。它们具有共同 的基类GraphicsDraw,都继承了接口ReadDataFrom2 Files,而该接口又与OpenAndSaveFileName类有协作 关系。 213 点、 线、 区、 注记 21311 建立MAPGIS对象 MAPGIS组件的核心是MAPGIS组件对象。在 Visual C1NET中使用New方法建立MAPGIS对象。 以接口声明,以所需的具体类来实例化,如 D_Dot dot new D_DotClass。 21412 功能实现 点、 线、 区以及注记的实现所用的类和方法,以 及程序实现点、 线、 区情况类似,这里仅以点图形工 作流程为例的流程如图3所示。 图3 绘制点图形工作流程 3 基于MAPG IS的石油勘探数据的实践自动成 图系统 311 MAPGIS工程基本操作的实现 为了在图层绘制过程中直观显示MAPGIS原始工 程文件,并将自动绘制结果保存在MAPGIS工程中,以 利于实现在MAPGIS软件下的进一步编辑和处理,系统 调用了MAPGIS的几个基本功能如图4所示。 图4 MAPG IS工程基本操作下拉菜单 “ 打开工程 ” 功能可以载入MAPGIS工程文件, 并在相应的布局窗口中显示图层信息和地图数据; 利用“ 保存工程 ” 菜单或工具栏图标按钮,即可对 MAPGIS工程文件进行保存,在保存过程中,进行了 工程打开状态的检查,如果工程已经打开,则提示用 户“ 工程已保存 ”,如果工程未打开,则弹出“ 当前没 有打开的工程 ” 的提示信息;MAPGIS工程文件的关 闭功能可以通过“ 保存工程 ” 菜单或工具栏图标按钮 实现,在关闭工程文件之前,对工程的更新和保存状 况进行检查,并提示用户是否工程文件的保存。 用户可以通过点击“ 工程信息 ” 按钮,查看地图 图名、 投影类型、 椭球类型及图幅范围等基本信息。 312 MAPGIS图层自动生成 1图形自动绘制的实现 ①部署井图形自动绘制 根据读入的部署井点位信息,系统可自动将 井号位置及其标注信息展绘到图层显示区域如 图 5 。 6 第3期 矿 山 测 量 2009年6月 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 图5 部署井数据的自动绘制 ② 测线图形的自动绘制 系统通过读取测线原始数据,获取测线范围 信息,并与底图区域的范围进行比较,检查测线数 据是否超出底图范围,如果不超出底图范围,则测 线数据及其标注信息将自动绘制在底图显示区域 如图6 ;当测线数据超出底图范围时,则提示用 户是否继续操作,同时显示超出底图范围的测线 数据信息如图7 ,以便用户核兑所选底图和测 线数据是否正确。 图6 测线的自动绘制及标注 图7 超出底图范围的数据 ③ 矿区图形的自动绘制 矿区图形的自动绘制同样需要判断是否超出底 图范围,并可以有选择的绘制在相应底图的显示区 域。 2自动绘制图形的存储 系统可实现以两种方式对自动绘制图形的存 储,即可将自动绘制的点、 线、 区图形与底图共同保 存为MAPGIS的工程文件利用“MAPGIS工程 ” 菜 单的“ 保存工程 ” 实现 , 方便与MAPGIS的交互;同 时,也可将自动绘制的图层单独另存为相应的点、 线、 区或标注层,以便在后续的MAPGIS制图过程中 灵活调用。这样,通过图层自动绘制功能的实现,大 大提高了原始数据制图的工作效率和精度,为南海 持证区制图带来了便利条件。 4 结 论 该软件实现了图形的自动绘制功能,替代了以 前的键盘输入或手工绘制,提高了精度和制图效率, 为生产部门决策和分析提供依据。但是目前仅实现 了图形的自动绘制,没有实现实体的查询和编辑功 能,应该从制图软件的角度考虑,不断完善。 参考文献 [1] 吴信才 1MAPGIS地理信息系统[M ]1北京电子工业 出版社, 20041 作者简介李海洋1965 - , 男,高级工程师。主要从事工程 测量、 土地规划整理等。 收稿日期 2009 - 03 - 02 7 第3期 李海洋等MAPGIS图形自动生成技术 2009年6月