资源描述:
文章编号 049420911 2009 0320062203中图分类号 P208 文献标识码B CASS和MapGIS图形接口的二次开发探讨 梁国华 1 ,蔡文惠 2 1. 郑州测绘学校,河南 郑州450005; 2.新疆工业高等专科学校,新疆 乌鲁木齐830091 On the Secondary Development of CASS andMapGIS Graphics Interface L I ANG Guo2hua, CA IWen2hui 摘要以CASS和MapGIS软件的应用为背景,以两个图形平台的数据转换为目的,以VB为软件开发平台,论证数据转换实现的过 程,提供目前GIS行业中城镇地籍数据库建立过程中的一些底层数据获取的方法和经验。 关键词AutoCAD; CASS;MapGIS;VB;对象;属性 收稿日期 2008212201 作者简介梁国华19652 , 男,辽宁盖州人,讲师,主要从事测绘教育工作。 一、 引 言 CASS软件是以AutoCAD软件为支撑的测绘行 业大比例尺外业成图的常用软件,AutoCAD内嵌的 VBA及AutoLSP编程方式为一般用户提供了多途 径的二次开发环境,但因为AutoCAD自身图形及属 性结构不能满足在GIS领域的分析、 查询等应用方 面需要,所以CASS软件在GIS领域常常作为数据 采集、 编辑的预处理软件;MapGIS软件是国产GIS 软件的先驱代表,其图形编辑、 投影、 图像处理、 空 间分析、 数据库管理等功能,经过多年的应用和改 进已经十分完善,在地质勘查、 土地管理等行业已 经成为标准业内软件,但MapGIS在矢量图形的输 入和编辑上较AutoCAD弱。在实际应用过程中往 往需要将两者结合使用,但由于两者在文件格式等 方面不兼容,造成了应用上的极为不便。 在大比例尺城镇地籍数据库建设中,由于基础 图形资料是用CASS成图,而最终成果是建立Map2 GIS地籍管理数据库,两软件在图形格式和结构上 完全迥异,不能直接利用。本文以城镇地籍数据库 图形转换过程为例,提出CASS和MapGIS软件相互 衔接转换的过程和思路,不足之处请同行指正。 二、 转换关系 从CASS图形要素转换到MapGIS图形要素的 过程,其实就是不同软件的实体对象相互认别、 转 换的过程。 逻辑转换关系 CAD逻辑图层 ϖMapGIS点、 线、 面文件。 对象转换关系地籍权属专题对象到MapGIS 对象关系较简单,将CASS中封闭的权属单元转换 为MapGIS面图元,对于CASS的宗地对象包括界 址点和界址线 , 将界址线转换为面图元,界址点转 换为所在宗地面图元的结点对象即可。 以下是CAD对象与MapGIS对象关系转换对应 的一般模式 属性转换关系 CASS图元扩展属性 ϖMapGIS 属性。 三、 转换流程 具体的转换流程如图1所示。 图1 转换流程 26测 绘 通 报 2009年 第3期 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 四、 程序实现 1.创建对象引用 在VB环境中引用如下对象视AutoCAD和 MapGIS版本不同,引用对象略有不同 AutoCAD2006对象acax16enu. tlb MapGIS6. 5对象MapGISBasCom1. dll,MapGIS2 BasCtl . dll, MapGISBasCtl1. dll, MapGISBasCtl2. dll, MapGISDbsCom.dll, MapGISDspCom.dll, MapGIS2 MapCom. dll,MapLayerCom. dll, EditView. ocx。 在程序公共模块中声明如下 Public Larea AsLinArea 定义MapGIS线工作区 Public Parea As Pnt Area 定义MapGIS点工作区 Public AcadApp AsAutoCAD. AcadApplication 定义CAD应用实例对象 Public AcadDocsAsAcadDocuments 定义CAD文档组对象 Public AcadDoc AsAcadDocument 定义CAD文档对象 Dim MoSpace AsAcadModelSpace 创建对CAD部件对象的引用 Public Sub CreatCAD On Error Resume Next SetAcadApp Get Object, “AutoCAD. Appli2 cation“ If Err Then Err . Clear Set AcadApp CreateObject “ AutoCAD. Application“ If Err Then MsgBox“ Error to connect to AutoCAD“ Exit Sub End If End If 访问图形文件及模型空间 SetAcadDocs AcadApp. Documents AcadDocs . Add SetAcadDoc AcadApp. ActiveDocument AcadDoc. W indowState acMax End Sub 2.初始化对照表 定义对照表结构 Type strBef Gis as string Cad as string End type ⋯ Di m LineType as strBef 定义线型对照数组 Di m BlockType as strBef 定义符号对照数组 Di m TextType as strBef 定义字形对照数组 Di m LayerType as str Bef 定义图层对照数组 Di m ColorType as str Bef 定义颜色对照数组 将不同对照表读入相应数组内,其中数组元素 的GIS属性为MapGIS图元类型检索值, CAD属性 为CASS图元类型检索值。在以后用For Each⋯ Next结构对其内的对照值进行检索。 3.获取CAD图层列表数组 Di m LayerNames As String Di m EntryObjAsAcadLayer Di m IAsLong ReDim LayerNames0 For Each EntryObj In AcadDoc. Layers 检索当前CAD图形内所有图层名称 LayerNames I EntryObj . Name 将检索结果写入LayerNames数组 I I 1 ReDim Preserve LayerNames I Next 4.获取图层属性结构,在MapGIS文件中 建立属性字段 因为在MapGIS物理图层文件中各图元的属 性结构相同,所以在CASS环境中需要对具有同类 GIS特性的图元进行分层归类的预处理。在向 MapGIS转换时各图层只要分析第一个CASS实体 的属性结构就可以确定MapGIS文件的属性结构。 一般情况下文字注记对象不进行属性转换。 Di m Cod1, Cod2 ⋯ ssetObj . Item 0. GetXData , , Cod1, Cod2 获取第1个图元的所有扩展属性 ssetobj . delete 释放选择集对象 ⋯ 362009年 第3期 测 绘 通 报 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 此处加入对所获得的扩展属性数组进行分析 的过程 ⋯ 以下是CASS中“ 居民地 ” 图层经分析后,写入 对MapGIS文件属性定义的过程 Dim Flds1 AsNew Field_Head W ith Flds0 . fieldname “房屋结构“ . fieldtype gisSTR_TYPE . msk_leng 4 . edit_enable 1 EndW ith W ith Flds1 . fieldname “房屋层数“ . fieldtype gisLONG_TYPE . msk_leng 2 . edit_enable 1 EndW ith For i 0 To 1 当前面文件工作区为Rarea Rarea. RegAtt . stru. AppendField Flds i 建立“房屋结构“和“房屋层数“字段 Next i ⋯ 以下是根据所获得的图层数组Layer Names , 在每个逻辑图层内遍历选择实体,并对实体类型判 断后处理的过程 ⋯ Dim gpCode0 As Integer Dim dataValue0 AsVariant Dim ssetobjAsAcadSelectionSet For i 0 to uboundLayerNames 对所有图层循环调用 gpCode0 8 图层类型组代码为8 dataValue0 LayerNames I 从图层数组中 Set ssetObj AcadDoc. SelectionSets . Add “ SSET“ Dim groupCode AsVariant, dataCode AsVariant groupCode gpCode dataCode dataValue ssetObj . Selectmode, groupCode, dataCode 得到实体选择集结果为ssetobj Dim objName As String Di m entry AsAcadEntity For Each entry In ssetObj 在当前选择集内遍历所有实体 Obj Name entry . objectName 以下根据所获得的不同实体执行相应转换过 程,并将CAD实体扩展属性值写入相应的MapGIS 文件属性内容中 Select case Obj Name Case“AcDbLine” 转向“ 直线 ” 对象转换模块 Case“AcDbPolyline” 转向“ 多段线 ” 对象转换模块 Case“AcDbCircle” 转向“ 圆 ” 对象转换模块 Case“AcDbArc” 转向“ 弧 ” 对象转换模块 Case“AcDb2dPolyline” 转向“ 二维多段线 ” 对象转换模块 写入 MapGIS 线文件 Case“AcDb MText” 转向“ 多行文本 ” 对象转换模块 Case“AcDbText” 转向“ 文本 ” 对象转换模块 Case“AcDbBlockReference” 转向“ 块 ” 对象转换模块 写入 MapGIS 点文件 ⋯ End select entry . GetXData , ,Data1,Data2 获取当前图元的所有扩展属性 ⋯ If获取到实体的扩展属性then 即Data1和Data2数组不为空 转向写入MapGIS实体属性模块 end if ⋯ Next ssetobj . delete ⋯ 可以看出在实际应用上也可将类似专题的封 闭实体以“ 面 ” 图元的方式转换到MapGIS文件中, 在GIS应用中会更加合理。 5.保存MapGIS文件 因CASS各图层内一般存在不同类型的图元 线类图元和点类图元共存 , 所以转换结果的Map2 GIS图形就存在多个同名文件以图层命名文件 , 下转第76页 46测 绘 通 报 2009年 第3期 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 参考文献 [1] 严蔚敏,吴伟民.数据结构 C 语言版 [M ].北京清 华大学出版社, 2007. [2] 马 燕.关于数据结构 教学模式改革的探索与实 践[J ].教育与职业, 2007, 2 1342135. [3] 周文国,孙彩敏.测绘工程专业创新人才培养模式的 探索[J ].测绘通报, 2005, 5 62264. [4] 程朋根.地勘工程3维空间数据模型及其数据结构设 计[J ].测绘学报, 2001, 30 1 74281. [5] 邓会敏.数据结构课程教学模式的改革与实践[J ]. 福建电脑, 2007, 5 2032204. [6] 青雨航.关于数据结构 现代教学方法的探索[J ]. 教育与职业, 2007, 9 1512152. 上接第61页 系统以GIS为核心技术,通过接口设计,集成了 110, 119, 122报警指挥系统,固定目标联网报警系 统以及道路交通监控系统等,并实现了这些系统中 案发地、 重点监控目标、 电子眼等目标的空间定位, 实现了以电子地图为基础平台的系统集成。 五、 总 结 本系统以公安部2004年制定的 城市警用地理 信息系统建设规范 、 城市警用地理信息分类与代 码 等为依据,充分利用昆明高新技术开发区基础地 理信息系统建设的成果,包括完善的基础地理数据、 人口数据和企事业单位数据,覆盖整个开发区的光纤 网络等,针对大城市公安分局和县市级城市公安 局的管理业务,设计并实现了包括地图浏览、 信息查 询、 数据维护、 人口管理、 统计分析、 空间分析等基本 功能,并设计了与110, 119, 122报警指挥系统,固定 目标联网报警系统以及道路交通监控系统等已有系 统集成的接口。系统的成功应用必将为GIS在公安 部门的推广应用起到良好的示范作用。 参考文献 [1] 童小华,邓愫愫,史文中.基于概率的地图实体匹配方 法[J ].测绘学报, 2007, 36 2 2102217. [2] 肖 昶,邱儒琼,王 波,等.深圳市公安地理信息系 统数据库建设[J ].地理空间信息, 2006, 4 2 33234. [3] 曾 文,刘光斌,侯小林.公安地理信息系统的设计与 实现[J ].计算机工程与设计, 2004, 253 4512453. [4] 高寒松,李满春.常州市人口地理信息系统的设计与 实现[J ].现代测绘, 2006, 294 325. [5] 孙中庆,于 建.基于GIS的公安信息系统建设探讨 [J ].工程建设与设计, 2004, 10 85287. 上接第64页 如果存在此类情况以文件名后加数字形式存储。 最后将所有转换所得的单一图形文件保存为Map2 GIS工程文件。 6.结果验证 经过对新疆城镇地籍1 300幅图进行转换,共 转换图元及属性723 651个,所有图元均能转换成 功。由此可见,程序可以满足从CASS到MapGIS转 换正确性的需要。 五、 结束语 从CASS到MapGIS文件的转换过程实现是复 杂的,它不仅要求有较好的计算机编程能力,对 AutoCAD和MapGIS两种软件均十分熟悉,还要有对 测绘知识的深入了解,因此在进行此项工作实验过 程中,通过学习大量相关知识内容,对程序经过反 复调试和优化处理,研发编制了转换接口程序,并 将其运用在工作实践中,虽然编写出的程序还有很 多不足之处需要改进,但其运用过程中大大降低了 产品出错概率、 提高了生产能力,在生产过程中取 得了较好的影响。 参考文献 [1] 廖义杰,余 洁,刘继琳.基于出版的地图数据向GIS 空间数据转换的方法探讨[J ].测绘通报, 2004, 3 44246. [2] 何孝莹.空间数据在不同平台间的转换方法[J ].辽宁 工程技术大学学报, 2004, 232 1692170. [3] 邬 伦,刘 瑜,张 晶,等.地理信息系统 原理、 方法与应用[M ].北京科学出版社, 2002. [4] 郭晓君. VisulBasic程序设计教程[M ].济南黄河出 版社, 2007. [5] 郭朝勇. AutoCAD二次开发技术[M ].北京清华大学 出版社, 1999. 67测 绘 通 报 2009年 第3期 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.
展开阅读全文