CASS软件是以AutoCAD软件为支撑的测绘行业大比例尺外业成图的常用软件,AutoCAD内嵌的VBA及AutoLSP编程方式为一般用户提供了多途径的二次开发环境,但因为AutoCAD自身图形及属性结构不能满足在GIS领域的分析、查询等应用方面需要,所以CASS软件在GIS领域常常作为数据采集、编辑的预处理软件;MapGIS软件是国产GIS软件的先驱代表,其图形编辑、投影、图像处理、空间分析、数据库管理等功能,经过多年的应用和改进已经十分完善,在地质勘查、土地管理等行业已经成为标准业内软件,但MapGIS在矢量图形的输入和编辑上较AutoCAD弱。在实际应用过程中往往需要将两者结合使用,但由于两者在文件格式等方面不兼容,造成了应用上的极为不便。
在大比例尺城镇地籍数据库建设中,由于基础图形资料是用CASS成图,而最终成果是建立MapGIS地籍管理数据库,两软件在图形格式和结构上完全迥异,不能直接利用。本文以城镇地籍数据库图形转换过程为例,提出CASS和MapGIS软件相互衔接转换的过程和思路,不足之处请同行指正。
二、 转换关系
从CASS图形要素转换到MapGIS图形要素的过程,其实就是不同软件的实体对象相互认别、转换的过程。
逻辑转换关系:CAD逻辑图层→MapGIS点、线、面文件。
对象转换关系:地籍权属专题对象到MapGIS对象关系较简单,将CASS中封闭的权属单元转换为MapGIS面图元,对于CASS的宗地对象(包括界址点和界址线),将界址线转换为面图元,界址点转换为所在宗地面图元的结点对象即可。
以下是CAD对象与MapGIS对象关系转换对应的一般模式:
![](/attachments/2009/11/1351_200911210901551EFK3.jpg)
属性转换关系:CASS图元扩展属性→MapGIS属性。
三、转换流程
具体的转换流程如图1所示。
![](/attachments/2009/11/1351_200911210901552tnb4.jpg)
图1 转换流程
四、程序实现
1.创建对象引用
在VB环境中引用如下对象(视AutoCAD和MapGIS版本不同,引用对象略有不同):
AutoCAD2006对象acax16enu.tlb
MapGIS6.5对象MapGISBasCom1.dll,MapGIS-BasCtl.dll,MapGISBasCtl1.dll,MapGISBasCtl2.dll,MapGISDbsCom.dll,MapGISDspCom.dll,MapGISMapCom.dll,MapLayerCom.dll,EditView.ocx。
在程序公共模块中声明如下:
Public Larea As LinArea
‘定义MapGIS线工作区
Public Parea As PntArea
‘定义MapGIS点工作区
Public AcadApp As AutoCAD.AcadApplication
‘定义CAD应用实例对象
Public AcadDocs As AcadDocuments
‘定义CAD文档组对象
Public AcadDoc As AcadDocument
‘定义CAD文档对象
Dim MoSpace As AcadModelSpace
创建对CAD部件对象的引用:
Public Sub CreatCAD()
On Error Resume Next
Set AcadApp=GetObject(,“AutoCAD.Applica-tion)
If Err Then
Err.Clear
Set AcadApp=CreateObject(,“AutoCAD.Application)
If Err Then
MsgBox“Error to connect to Auto-CAD”
Exit Sub
End If
End If
‘访问图形文件及模型空间
Set AcadDocs=AcadApp. Documents
AcadDocs.Add
Set AcadDocs= AcadApp.ActiveDocument
AcadDocs.WindowState=acMax
End Sub
2.初始化对照表
‘定义对照表结构:
Type strBef
Gis as string
Cad as string
End type
…
Dim LineType()as strBef
‘定义线型对照数组
Dim BlockType()as strBef
‘定义符号对照数组
Dim TextType()as strBef
‘定义字形对照数组
Dim LayerType()as strBef
‘定义图层对照数组
Dim ColorType()as strBef
‘定义颜色对照数组
将不同对照表读入相应数组内,其中数组元素的GIS属性为MapGIS图元类型检索值,CAD属性为CASS图元类型检索值。在以后用For Each…Next结构对其内的对照值进行检索。
3.获取CAD图层列表数组(程序略)
4.获取图层属性结构,在MapGIS文件中建立属性字段
因为在MapGIS物理图层(文件)中各图元的属性结构相同,所以在CASS环境中需要对具有同类GIS特性的图元进行分层归类的预处理。在向MapGIS转换时各图层只要分析第一个CASS实体的属性结构就可以确定MapGIS文件的属性结构。一般情况下文字(注记)对象不进行属性转换。(程序略)
可以看出在实际应用上也可将类似专题的封闭实体以“面”图元的方式转换到MapGIS文件中,在GIS应用中会更加合理。
5.保存MapGIS文件
因CASS各图层内一般存在不同类型的图元(线类图元和点类图元共存),所以转换结果的MapGIS图形就存在多个同名文件(以图层命名文件),如果存在此类情况以文件名后加数字形式存储。最后将所有转换所得的单一图形文件保存为MapGIS工程文件。
6.结果验证
经过对新疆城镇地籍1300幅图进行转换,共转换图元及属性723651个,所有图元均能转换成功。由此可见,程序可以满足从CASS到MapGIS转换正确性的需要。
五、结束语
从CASS到MapGIS文件的转换过程实现是复杂的,它不仅要求有较好的计算机编程能力,对AutoCAD和MapGIS两种软件均十分熟悉,还要有对测绘知识的深入了解,因此在进行此项工作实验过程中,通过学习大量相关知识内容,对程序经过反复调试和优化处理,研发编制了转换接口程序,并将其运用在工作实践中,虽然编写出的程序还有很多不足之处需要改进,但其运用过程中大大降低了产品出错概率、提高了生产能力,在生产过程中取得了较好的影响。(因篇幅所限,本报选载原文部分内容,敬请见谅,完整内容请参阅《测绘通报》2009年第三期,P62)
TAG: CASS 探讨 图形 MapGIS 接口