南方CASS与MAPINFO软件数据转换研究

2022-09-12

Auto CAD是A U T O D E S K公司的主要数字制图软件, 在图形数据采集和编辑等方面有很强的功能, 在市场开发、软件技术、产品价格等方面比其他数字制图软件有着明显的优势和发展前景。同时A u t o C A D也提供了较强的二次开发功能, 目前很多单位和部门都以它为数据采集和二次开发平台, 南方公司的地形地籍成图软件C A S S是基于A u t o C A D平台开发的G I S前端数据采集系统, 主要应用于地形成图、地籍成图、工程测量应用三大领域, 经过近几年的开发和应用, 该软件在数据采集、数据处理和数据管理等方面功能较强。随着G I S技术的飞速发展, 如何把C A S S的数据转换到G I S数据库中, 是目前C A S S用户关心的问题。本文在分析了CASS和MapInfo数据存储格式特点的基础上, 讨论C A S S和MapInfo间的数据转换方法和过程, 并给出了关键代码。

1 CASS与MapInfo数据存储格式

1.1 AutoCAD的扩展数据及CASS属性数据的存储

在A u t o C A D的图形文件中, 除了保存图形本身的各种数据外, 还可以通过扩展数据和扩展记录来保存用户的数据。扩展数据是由应用程序加入到A u t o C A D对象中的数据, 它遵循系统的规则定义数据, 每一个应用程序都可以对同一个对象加入自己的数据, 再根据各自的申请名来读取这些数据, 使得不同程序注册的数据不会混淆。A u t o C A D负责维护这些数据, 但不使用这些数据, 通过使用扩展数据技术, 用户可以将自己的非图形信息保存在图形文件中。

扩展数据由一个或多个1 0 0 1组码组成, 每个1 0 0 1组码包括唯一的程序申请名, 每个申请名定义了自身数据类型、含义和组织结构。扩展数据的组码范围从1 0 0 0~1 0 7 1, 下面列出用于扩展数据的组码以及组码的数据类型, 应用程序并非一定要使用全部组码。

1000组码:字符串 (长度不超过255个字符) 。

1001组码:申请名 (最长31个字符) 。

1040组码:一个实数。

C A S S就是通过扩展数据来记录编码及其他的一些属性数据。

1.2 MapInfo的文件格式

MapInfo是目前在国内外较流行的GIS平台之一, 广泛应用于各行各业, 能够与它进行数据交换的平台也较多, 主要通过m i f、m i d文件类型进行数据交换, 这两个类型文件是一一对应的。m i f格式文件能够完全描述一个M a p I n f o表, 并存储图形的坐标系、属性数据的字段结构、图形对象的坐标、颜色、线型、填充风格 (包括填充类型、填充背景色、填充前景色) 等;m i d格式文件按m i f字段定义顺序存储着每个图形对象所对应的属性数据。

传统MapInfo和AutoCAD数据格式转换是通过d x f进行交换, 但d x f文件无法把属性一起导入, 导致数据丢失或错误, 所以采用m i f、m i d类型文件实现M a p I n f o和A u t o C A D数据交换是比较可行的方法, 不仅保证了数据的完整性, 还保证了属性数据与图形数据的一致性。

2 转换原理

2.1 ObjectARX应用程序

O b j e c t A R X应用程序是动态链接库 (DLL) , 可以和AutoCAD共享地址空间, 直接调用A u t o 2 C A D的内部函数, 在O b j e c t A R X应用程序中定义的命令与A u t o C A D的内部命令运行方式相同, 而在O b j e c t A R X应用程序中创建的实体对象也和A u t o C A D中创建的实体对象没有区别。

使用O b j e c t A R X的用户可以完成各种开发工作, 例如: (1) 直接访问AutoCAD的图形数据库; (2) 和A u t o C A D编辑器进行交互; (3) 使用MFC创建标准的W indows用户界面; (4) 支持A u t o C A D的多文档接口 (MDI) 。

2.2 CASS数据的分类

CASS中的图形可分为以下几大类:直线、复合线、2维多义线、圆、文本、多行文本 (很少用) 、块等, 对应这些分类, 把块转换为MapInfo中的point, 直线、复合线、2维多义线转换为p o l y l i n e, 封闭的复合线转换为region。

2.3 实现过程

根据上述原理, 实现数据转换的流程如下。

第一步:打开图形文件;第二步:生成gridmif, gridmid等文件, 并填充完各mif文件的文件头;第三步:读取对象的数目c o u n t, i=0, icount则转第八步;第四步:得到它的实体类型 (C A D中) , 读取相应的图形和属性值, 根据C A S S编码查找对应的;第五步:M A P I N F O编码和实体类型;第六步:找到相应编码;第七步:根据实体类型, 写入相应的MIF和MID文件中;第七步:i=i+1;第八步::关闭所有文件, 退出程序。

3 实现数据转换的关键程序代码

3.1 判断实体的类型

3.2 实体类别后的转换

4 程序运行效果

将C A S S数据运用本文的程序转入MapInfo后, 运行结果表明本文的程序使CASS中的图形数据和属性数据转入M a p I n f o后能满足入库的要求, 达到了转换目的。

5 结语

本文采用程序模块来实现C A S S和MapInfo之间的数据转换, 经过大量的实践和广泛应用, 程序运行结果较好, 已运用于实际的工作中, 解决了数据转换过程中的数据损失和图形数据与属性数据不一致等问题。

摘要:本文基于笔者多年从事CASS内业相关工作经验, 以CASS和MAPINFO之间的数据转换为研究对象, 深度探讨了CASS和MAPINFO的数据存储格式和转换原理, 给出了具体的程序代码, 实验了程序运行效果, 现在已运用于实际的工作中, 解决了数据转换过程中的数据损失和图形数据与属性数据不一致等问题。相信对从事相关工作的同行有着重要的参考价值和借鉴意义。

关键词:CASS,MAPINFO,数据转换

参考文献

[1] 李景文, 唐诗华.基于Web GIS的城市住宅小区物业管理系统方案设计[J].桂林工学院学报, 2002, 22 (3) :312~315.

上一篇:我国现代煤化工产业现状及发展建议下一篇:新预算法与我国新一轮财税体制改革的思考