应用VC_对MAPGIS进行二次开发.pdf
第18卷 第5期铀 矿 地 质Vol. 18No. 5 2002年 9月Uranium GeologySep. 2002 应用VC对MAPGIS进行二次开发 何 涛 中国核工业地质局280研究所 四川广汉 618300 [摘要]本文介绍了用VC 对MAPGIS进行二次开发的方法和基本函数以及软件开发实例。 [关键词] MAPGIS;二次开发;VC [文章编号] 10002065820020520318203 [中图分类号] TP311. 52 [文章标识码] B [收稿日期] 2001206211 [改回日期] 2002203202 [作者简介]何 涛1965 - ,男,高级工程师,1987年毕业于成都理工大学。 1 前言 MAPGIS是武汉中地信息工程有限公司 开发的一款优秀地理信息系统,目前已发展到 610版本,广泛应用于地质勘探行业计算机制 图[1]。我所的地质、 物探、 水文等图件现已全 部采用MAPGIS图件。VC 是MicroSoft公 司Windows/ 95/ 98/ 2000下可视化软件开发工 具[2],它能自动生成应用程序框架,用户只需 按事件添加自己的程序代码,给软件开发带来 了极大的方便,提高了软件开发的工作效率。 将VC 和MAPGIS相结合,开发物化探 数据处理和制图软件,如绘制物化探平剖图、 物 化探综合曲线等,其成果是MAPGIS图件,与 现有的MAPGIS图件能实现无缝拼接,给制图 工作带来了极大的方便。 2 MAPGIS SDK中的基本函数简介 MAPGIS SDK是MAPGIS的二次开发函 数库,它随MAPGIS软件捆绑销售,包含了二 次开发的全部头文件、 函数库和动态连接库。 下述是二次开发中用到的最基本的MAP - GIS SDK函数,其它函数在MAPGIS SDK 头文件和二次开发帮助文件中都有说明,在此 不再赘述。 1获取缺省的实体图形信息参数 得到线缺省参数 原型LIN-INFO3-GetLinDefParam LIN -INFO3 3info NULL ; 得到区缺省参数 原型REG-INFO3-GetRegDefParam REG-INFO3 3info NULL ; 得到点缺省参数 原型PNT-INFO3-GetPntDefParam PNT-INFO3 3info ,short pnt Type ; 参数入口3 3inf 实体图形信息3 inf空间由MAPGIS申请 ; pnt Type 点参数类型。 出口3 3inf 返回实体的缺省 图形参数地址,该地址与返回地址 相同。 返回值成功则返回缺省参数结构 地址,失败则返回NULL。 2获得工作区代号 原型short GetEditAreashort aitype ; 参数入口aitype 工作区类型 LIN 线工作区; PNT 点工作区; REG 区工作区。其定义在头文 件CGisEdVw. h中。 返回值编辑工作区代号。 功能取编辑工作区代号。 原型long-AppendLin short ai , D-DOT 3dat , long len , LIN-INFO3inf ; 参数入口ai 工作区号;3dat D -DOT数据块; len D-DOT数 据项数;3inf 线图形信息变量 地址,该函数改变inf的rect值。 出口 返回值成功则返回线号 0 ;失 败则返回0。 说明失败原因①线点数太少 0 ;失 败则返回0。 4打印编辑窗口上的全部地图 原型void PrintMap ; 此函数能在不具备打印功能的软件狗上运 行。 3 配置VC及应用程序 311 配置VC 安装MAPGIS SDK后,将文件夹LIB和 DLL中的文件复制到一个新文件夹如d \ MAPGISSDK60 \ aaa中。MAPGIS配置文件 MCONFIG. GIS一般在C \ mapgis60 \ pro2 gram下拷贝到应用程序输出文件夹如d \ MAPGISSDK60 \ aaa下。 在应用程序工程中 ,1 选择菜单 下的 ,在标题为 “ProjectSetting” 的窗 口中 ① 选择卡片 ,在 “Y分类” 中选 择 “CodeGeneration”,在 “Struct member align2 ment” 中选择 “1 Byte” 。②选择卡片 ,在 “Category” 中选择 “General”,将 “可执行 调试对话” 中的内容设置为应用程序的执行文 件,如D \ mapgissdk60 \ aaa \ test. . 2选 择菜单下的 ,在 “选择” 窗口中选择卡片,在 “S显示目录为” 中①选择 “Include files”,在 “D路径” 下添加 MAPGIS SDK头文件所在目录,例如 “d \ MAPGISSDK60 \ INCLUDE”;② 选择 “Library files”,在 “D路径” 下添加MAPGIS SDK库文 件所在目录,例如d \ MAPGISSDK60 \ aaa;③ 选择 “cutable files”,添加应用程序可执行文件 所在文件夹,例如d \ MAPGISSDK60 \ aaa。 在应用程序视窗类的头文件中,添加下面 两行 include″CGisEdit. h″ include″MAPGIS. h″ 将视窗类的头文件 3 . h及程序文件 3 . cpp 文件中视窗类的基类改为CgisEditView。 在视窗类的成员函数OnDrawr的最后添 加下面一行代码 CGisEditView OnDrawpDC ; 编译运行,将会发现应用程序已经具备了 MAPGIS的绝大部分编辑功能。 312 应用程序设计 本文以应用程序MAPGIS-GRAPHER绘 制物探平剖图为例,说明二次开发的技术方法。 1设置菜单 在Workspace窗口中单击ResourceView 打开应用程序资源,扩展Menu项,双击IDR- MAPGISTYPE打开应用程序菜单资源,添加 菜单资源数据 → 绘制物探平剖图 ID 号DA2 TA-DRAW-LINE。 913第5期何 涛应用VC 对MAPGIS进行二次开发 2建立参数输入对话框 绘制物探平剖图中需要的参数可以在一个 对话框中输入。仿照31211中的方法,在Dia2 log上单击右键。选择Insert Dialog ,插入一个 参数输入对话框,其类名为CDraw-Line。需要 输入的内容有剖面数据文件名、 水平方向比例 尺、 垂直方向比例尺等参数。为每个参数建立相 应的变量,保存输入的参数,以备绘图程序调用。 313 编制应用程序 在视窗类下生成DATA-DRAW-LINE的 响应函数void draw-line void。目的是响应 菜单数据 → 绘制物探平剖图,输入参数,打开 数据文件,绘制物探平剖图。程序流程如下。 314 程序功能 应用可视编程化工具VC 610 ,开发了 一套应用软件MAPGIS-GRAPHER。它是多 文档MDI软件,具有绘制物探平剖图、 绘制 综合物探剖面图、 输出线型表、 输出子图表、 绘 制双对数座标纸、 装入线文件、 装入点文件、 装 入区文件、 添加线文件、 添加点文件、 添加区文 件和打印输出功能。打印输出支持WIN2 DOWS系统打印机,打印编辑窗口上的全部地 图。本软件绘制的图形以及MAPGIS制作的 图形都可以用本软件的打印功能直接打印输 出,不受软件狗功能的限制。 4 应用效果 本软件已应用于2001年 内蒙古东乌珠穆 沁旗-苏尼特左旗1 50万铀矿区调 项目的制 图工作中,绘制了物探平剖图、 双对数座标 纸、 210Po 等取样实际材料图、MAPGIS的线型 表、 子图表、 图案库、 颜色库。提高了工作效率 和制图精度,取得了较好的效果。 5 结束语 本文只介绍了MAPGIS SDK的基本函数, 应用软件MAPGIS-GRAPHER也是应用这些 基本函数开发而成的,其功能相当简单,虽需进 一步完善,但已应用于科研生产制图工件中,给 制图工作带来了极大的方便。 [参考文献] [1]武汉中地信息工程有限公司. MAPGIS二次开发帮 助文件. 2001. [2]徐晓则等. Visual C 6. 0入门与提高.北京清华 大学出版社,1999. Secondary development of MAPGIS applying VC HE Tao Research Institute No.280, Bureau of Geology , CNNC , Guanghan , Sichuan province,618300 Abstract This paper introduces an example of the secondary development of MAPGIS , its basic functions , as well as the software development applying VC . Key words MAPGIS; secondary development ;VC 023 铀 矿 地 质第18卷