基于ObjectARX的AutoCAD到MAPGIS的数据转换.pdf
收稿日期2 0 0 7 - 0 9 - 1 7 作者简介 王喜凤 1 9 8 0 - , 女, 山东成武人, 硕士, 助教。 V o l . 2 5 N o . 4安 徽 工 业 大 学 学 报第2 5卷第4期 O c t o b e r 2 0 0 8J . o f A n h u i U n i v e r s i t y o f T e c h n o l o g y2 0 0 8年1 0月 文章编号1 6 7 1 - 7 8 7 22 0 0 80 4 - 0 4 2 2 - 0 4 基于 O b j e c t A R X的 A u t o C A D到 M A P G I S 的数据转换 王喜凤, 王广正 安徽工业大学 计算机学院, 安徽 马鞍山2 4 3 0 0 2 摘 要已 有的A u t o C A D到M A P G I S的数据转换是把D X F格 式 转 换 为M P J格 式 , 但 它 只 转 换 了 较 常 用 的 实 体 ,M t e x t, B l o c k R e f e r e n c e等没有转换过来, 与原始数据的一致性较差; 并且不能直接批量处理由D WG到M P J的数据。针对这些问题, 提 出以O b j e c t A R X为开发平台, 直接把D WG格式的数据转换成M P J格式, 把A u t o C A D中的实体及图形参数对应转换到M A P G I S 的点、 线、 面文件中。通过测试, 数据量约是以前转换的1 / 2, 保持了与原始数据的一致性, 且已广泛使用。 关键词A u t o C A D;M A P G I S; 数据转换;O b j e c t A R X 中图分类号T P 3 1 1 . 5 2文献标识码B D a t a T r a n s f o r mB a s e d o n O b j e c t A R Xf r o mA u t o C A Dt o M A P G I S WA N GX i - f e n g , WA N GG u a n g - z h e n g S c h o o l o f C o m p u t e r S c i e n c e , A n h u i U n i v e r s i t y o f T e c h n o l o g y , M a ′a n s h a n 2 4 3 0 0 2 , C h i n a A b s t r a c t M A P G I Sa n dA u t o C A Da r eb r o a du s e ss y s t e ma t h o m ea n da b r o a d , s ot h ei n t e r a c t i o nw i t ht h e mi s n e c e s s a r y . D a t a T r a n s f o r ms e t s u p t h e f r i e n d b r i d g e f o r t h e m , a n d D a t a r e s o u r c e s b e c o m e s h a r e d w i t h t h e m . T h e D X F f o r m a t i s t r a n s f o r m e di nf o r m e r D a t aT r a n s f o r mf r o mA u t o C A Dt oM A P G I S , b u t i t o n l yd o e s c o m m o ne n t i t i e s . F o r e x a m p l e , M t e x t a n dB l o c k R e f e r e n c ea r e n t t r a n s f o r m e di n t oM A P G I S , S ot h ew a yl a c k st h ec o n s i s t e n c yw i t ht h e p r i m a r yd a t a . I t c a n t b a t c ht h eD a t af r o mD WGt oM P J . T ot h e s ep r o b l e m s , an e wm e t h o di sp u t f o r w a r d . T h e d e v e l o p e r t o o l i s O b j e c t A R X . A l l e n t i t i e s o f A u t o C A Da n d t h e p a r a m e t e r s o f t h e e n t i t i e s a r e d i r e c t t r a n s f o r m e d i n t o t h e p o i n t , l i n e a n d r e g i o n f i l e s . S o i t c a n h o l d t h e c o n s i s t e n c y w i t h t h e p r i m a r y d a t a . T r o u g h t h e t e s t , d a t a q u a n t i t y i s a b o u t f i f t y p e r c e n t o f t h e f o r m e r , a n d i t h o l d s t h e c o n s i s t e n c y w i t h t h e p r i m a r y d a t a . K e yw o r d s A u t o C A D ; M A P G I S ; d a t a t r a n s f o r m ; O b j e c t A R X A u t o C A D是计算机辅助设计和绘图软件, 反映了当今C A D技术的发展潮流, 具有直观的图形操作界面、 强大的辅助绘图工具、 完备的二维绘图功能、 强大的三维造型手段和快捷的网络互动环境, 在机械、 电子、 建 筑、 服装等行业得到广泛的应用, 是世界一流C A D软件。 A u t o C A D在图形数据的采集和编辑方面有很强的功能, 早期的数字制图大多以A u t o C A D为开发平台, 目 前很大一部分地理信息数据也是以A u t o C A D的格式 * . D WG , * . D X F 存放。但随着G I S技术的兴起和发展, 原本立足于机械和建筑的A u t o C A D并不能满足地图的制作和地理信息的管理,所以G I S软件随之产生,如 A r c I n f o,M a p I n f o,M A P G I S等。 M A P G I S是一个集当代最先进的图形、 图像、 地质、 地理、 遥感、 测绘、 人工智能、 计算机科学于一体的大型 智能软件系统, 是集数字制图、 数据库管理及空间分析为一体的空间信息系统, 是进行现代化管理和决策的 先进工具 [ 1 ] 。 如何将已有的A u t o C A D格式的数据送入M A P G I S ,如何充分利用A u t o C A D的采集和编辑功能为M A P G I S 第4期第4期 准备数据,这都涉及A u t o C A D和M A P G I S间的数据转换问题。 在实际使用中, 两者之间的交互是必然的。 数据 转换为两者之间架起了桥梁, 使两者之间的数据资源达到了共享。 原有方法存在一些问题 [ 2 ] ,文中提出了一种新的思路,直接把D WG格式的数据转换成M P J格式, 把 A u t o C A D中的实体及图形参数对应转换到M A P G I S的点、 线、 面文件中, 有效地解决了原方法中存在的问题。 1A u t o C A D和MA P G I S在存储方式上的差别 在A u t o C A D中,A u t o C A D数据库 A c D b 是按一定结构组织的A u t o C A D图形全部有关数据的结合。用一 组符号表和有名对象字典来组织和管理数据库对象。它只有图形数据信息, 但在M A P G I S中, 实现了图形数 据和应用数据的一体化管理,地图的图形数据都是以严格的点线面拓扑结构存储,并用图形数据库进行管 理, 同时各种专业应用数据由专业属性数据库进行管理, 二者通过关键字进行连接, 从而实现图形数据与应 用数据的一体化管理。 在A u t o C A D中, 所有A u t o C A D实体都存放在块表中, 属于块表记录, 而与实体对应的参数信息, 如图层、 线型、 文 字 的 样 式 等 信 息 则 对 应 放 在 层 表 A c D b L a y e r T a b l e 、 线 型 表 A c D b L i n e T y p e T a b l e 、 文 字 样 式 表 A c D b T e x t S t y l e T a b l e 中, 属于各表记录[ 3 - 7 ] 。 而在M A P G I S中, 数据管理的核心是对工作区的操作 工作区概念由M A P G I S提出 , 工作区是一个数据 池, 存放实体的空间数据、 拓扑数据、 图形数据和属性数据, 每个工作区对应于一个M A P G I S数据文件, 分为 表1MP J存储格式 工作区类型实体类型 点工作区 . WT文件点 P N T 线工作区 . WL文件线 L I N 、 结点 N O D 区工作区 . WP文件线 L I N 、 结点 N O D 、 区 R E G 网工作区 . WN文件线 L I N 、 结点 N O D 、 网 N E T 表工作区 . WB文件无空间实体, 仅有表格记录 点、 线、 区、 网、 表[ 1 ], 分别存储不同的实体类型, 具体如 表1。 2转换思想及转换工程中应注意的问题 把A u t o C A D中的D WG格式的数据转换成M P J格 式, 主要的思想是从C A D中读出数据, 按照A u t o C A D 与M A P G I S相对应的关系,逐个写入到M A P G I S的点 线面文件中,如单行文本 A c D b T e x t 、多行文本 A c D b M T e x t 对应到M A P G I S点文件中的注释中 P N T _ N O T E , 作为点文件的一种点实体; 把线 A c D b L i n e 、 多义线 A c D b P o l y l i n e 、圆 A c D b C i r c l e 等对应到线文件中,作为线实体线类型为折线;把样条曲线 A c D b S p l i n e 对应到线文件中, 作为线实体线类型为光滑曲线; 把A c D b S o l i d写入区文件中, 作为区实体。但 因为C A D中的实体类型多, 而M A P G I S中的少, 这就形成了多对一的关系[ 8 , 9 ], 如单行文本 A c D b T e x t 、 多行 文本 A c D b M T e x t 都要对应到M A P G I S点文件中的注释中 P N T _ N O T E 。在写入M A P G I S中时, 主要设计了 以下函数_ A p p e n d L i n ,_ A p p e n d P n t ,_ A p p e n d R e g 。 在转换的过程中, 首先应注意到A u t o C A D中没有属性信息, 而M A P G I S中有, 这就需要根据需求添加一 些属性字段和字段值, 如需要添加D WG层名, 则需要在点线面文件中分别添加下面代码 C F I E L D _ H E A Df l d E n t r y ; m e m s e t l s t r c p y f l d E n t r y . f i e l d n a m e , “ D WG层名“ ; f l d E n t r y . e d i t _ e n a b l e 1 ; f l d E n t r y . f i e l d t y p e S T R _ T Y P E ; f l d E n t r y . m s k _ l e n g 2 0 ; f l d E n t r y . p t c _ p o s 2 ; _ A p p e n d S t r u F l d A i L i n , L I N , 1 , 并且在对应的地方把字段值写入。 因一个块参照 A c D b B l o c k R e f e r e n c e 用于放置、 缩放和显示它参考的A c D b B l o c k T a b l e R e c o r d中的一个实 体集合的实例, 它是一个实体集合, 并且块参照有自己的属性, 所以在转换时, 要考虑其下的实体类型, 并要 结合块参照本身和其下实体的属性 例如坐标 分别进行相应处理。 王喜凤等基于O b j e c t A R X的A u t o C A D到M A P G I S的数据转换4 2 3 安 徽 工 业 大 学 学 报2 0 0 8年安 徽 工 业 大 学 学 报2 0 0 8年 3主要转换代码 A c D b L i n e * p L i n e N U L L ; p L i n e A c D b L i n e * p E n t ; A c G e P o i n t 3 d e n d P n t ; A c G e P o i n t 3 d s t a r t P n t ; s t a r t P n t p L i n e - s t a r t P o i n t ; e n d P n t p L i n e - e n d P o i n t ; L I N _ I N F Oi n f ; m e m s e t D _ 3 D O Tx y [ 2 ] ; x y [ 0 ] . x s t a r t P n t . x ;x y [ 0 ] . y s t a r t P n t . y ;x y [ 0 ] . z s t a r t P n t . z ; x y [ 1 ] . x e n d P n t . x ; x y [ 1 ] . y e n d P n t . y ; x y [ 1 ] . z e n d P n t . z ; l o n gc a d c o l o r 0 ; / /颜色 c a d c o l o r p E n t - c o l o r I n d e x ; i f c a d c o l o r 2 5 6 { p L i n e - l a y e r ; A c D b L a y e r T a b l e * p L a y e r T a b l e ; p D b - g e t S y m b o l T a b l e p L a y e r T a b l e , A c D b k F o r R e a d ; A c D b L a y e r T a b l e R e c o r d * p L a y e r T a b l e R e c o r d ; p L a y e r T a b l e - g e t A t p L i n e - l a y e r , p L a y e r T a b l e R e c o r d , A c D b k F o r R e a d ; A c C m C o l o r l a y e r c o l o r p L a y e r T a b l e R e c o r d - c o l o r ; p L a y e r T a b l e R e c o r d - c l o s e ; p L a y e r T a b l e - c l o s e ; c a d c o l o r l a y e r c o l o r . c o l o r I n d e x ; } i f c a d c o l o r 0 { c a d c o l o r 7 ; } i n t j c ; j c 0 ; l o n g p t r 1 ; p t r 1 c o l o r t a b l e [ j c ] . l c a d C l r ; w h i l e p t r 1 c a d c o l o r i n t n u m R e c s t r u T b l - h d . n u m b r e c o r d ; s h o r t r t l _ G e t A t t A i L i n , L I N , i , s h o r t b _ S e t F l d F r o m S t r a t t T b l , s t r u T b l , “ D WG层名“ , c a d l a y ; s h o r t a _ Wr i t e A t t A i L i n , L I N , i , s t r u T b l , a t t T b l ; } 4结论 提出了一种新的A u t o C A D到M A P G I S的数据转换的方法。它以O b j e c t A R X为开发工具, 直接把D WG格 式的数据转换成M P J格式, 把A u t o C A D中的实体及图形参数对应转换到M A P G I S的点、 线文件。 数据量约是 以前转换的1 / 2, 并保持了与原始数据的一致性。 参考文献 [ 1 ]中地软件丛书编委会. M A P G I S二次开发培训教程 C 版[ M ] .武汉 武汉中地信息工程有限公司,2 0 0 1 . [ 2 ]中地软件丛书编委会. M A P G I S 6 . 7数据转换应用程序帮助[ M ] .武汉 武汉中地信息工程有限公司, 2 0 0 4 . [ 3 ]邵俊昌, 李旭东. A u t o C A DO b j e c t A R X 2 0 0 0开发技术指南[ M ] .北京 电子工业出版社,2 0 0 3 . [ 4 ]白云.计算机辅助设计与绘图- - A u t o C A D实用教程[ M ] .北京 高等教育出版社,2 0 0 3 . [ 5 ]二代龙震工作室. A u t o C A DA R X函数库查询词典[ M ] .北京 中国铁道出版社,2 0 0 3 . [ 6 ]老大中, 赵占强. A u t o C A D 2 0 0 0 A R X二次开发实例精粹[ M ] .北京 国防工业出版社,2 0 0 1 . [ 7 ]李世国. A u t o C A D高级开发技术A R X编程及应用[ M ] .北京 机械工业出版社,1 9 9 9 . [ 8 ]王喜凤.基于O b j e c t A R X的M A P G I S到A u t o C A D的数据转换[ J ] .内蒙古科技与经济, 2 0 0 4 1 1 3 2 - 3 4 . [ 9 ]襄樊市城市规划地理信息中心. M a p G I S用户大会论文集[ C ] . 2 0 0 3 . 王喜凤等基于O b j e c t A R X的A u t o C A D到M A P G I S的数据转换4 2 5