您好,欢迎来到微智科技网。
搜索
您的当前位置:首页DXF到SVG图元转换关键问题分析

DXF到SVG图元转换关键问题分析

来源:微智科技网
DXF到SVG图元转换关键问题分析

刘辉;刘星;郑静

【摘 要】为了实现矿图的重新发布,通过分析AutoCAD数据格式(DXF文件)和SVG格式标准,建立DXF文件中的实体和SVG中的元素之间的对应关系.详细分析了关键的复杂图元对象(文字,多线)以及非图元对象(坐标系,颜色)到SVG的转换,以便更方便地运用到WebGIS的矿图发布.编程测试证明,重新发布的矿图与原图基本相同.

【期刊名称】《天津工业大学学报》 【年(卷),期】2010(029)004 【总页数】4页(P78-80,84) 【关键词】DXF;图元;SVG 【作 者】刘辉;刘星;郑静

【作者单位】东北大学信息科学与工程学院,辽宁,沈阳,110819;东北大学信息科学与工程学院,辽宁,沈阳,110819;东北大学信息科学与工程学院,辽宁,沈阳,110819 【正文语种】中 文 【中图分类】TP319

DXF文件是AUTODESK公司提出的一种专用的CAD数据交换格式,是一种具有专门格式的ASCII码文本文件,比较好读,易于被其它程序处理,主要用于实现高级语言编写的程序与AutoCAD系统的连接,或其它CAD系统与AutoCAD之间的图形文件交换[1].但是由于DXF不能描述空间信息的完整几何模型,难以进一

步发展;其信息定义不完整,仅保留了原有系统数据结构中的几何和部分属性信息,而大量的拓扑信息已不复存在;其信息描述方面也有许多缺陷,致使一些信息量过分冗长,文件格式比较复杂而且不尽合理[2].而XML(Extended Markup Language,可扩展标记语言)作为目前互联网上广泛流行的数据交换标准,具有结构化、可扩展性以及灵活性等特点,所以设计一种基于XML模式的可描述矿图图形的标记语言对矿图进行描述.利用所生成的矿图标记语言(XML文件),作为中性文件可实现矿图数据的交换和发布,还可利用关系数据库实现对XML文件的管理.为了实现矿图的重新发布,必须把矿图标记语言文件通过XSLT转换语言转换为另一种XML格式的文件——SVG.使用SVG可以在网页上显示出各种各样的高质量二维矢量图形,包括图像处理中常见的许多功能,如图形、文字、动画、色彩和滤镜效果等.但SVG不同于传统的二维(平面)图形,而是使用简单的一维(文本)指令,完成矢量图形特征的描述[3].尽管DXF文件和SVG文件在表示方式上有一定的相似之处,都通过记录图形的特征数据来描述矢量图形,但在有些实体的描述上,两者存在差异,比如坐标系、文字等[4].本文在此基础上着重分析了关键图元的转换问题.

DXF文件描述了AutoCAD图形数据库中所包含的全部信息,是图形完全等价的矢量表达形式.DXF本质上由代码及关联值对组成,称为组码和组值.每个组码和组值各占一行,组码是一个整数,表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意;组值是数据类型,根据组码的数值可以是字符串型、整型或浮点数型等.通过使用这些配对的组码和组值,DXF文件被组织成段,这些段由记录组成,而记录又由依次排列的组码和数据条目组成.完整的DXF文件由7段SECTION组成,每段由一行组码0及一行字符串SECTION开始,紧接着组码2及一行表示段名称的字符串;段的结束由一行组码0及一行字符ENDSEC表示.这些段中的内容由对象或图元组成,而这些对象或图元由标志它们属性的组

码和组值组成.整个文件以一行组码0及一行EOF结束[5],其文件结构如图1所示.

SVG是一种标准、开放、可缩放的矢量图形规范,是一种基于XML来描述二维矢量图形和矢量/点阵混合图形的置标语言,是一种全新的矢量图形规范.SVG图形包括框架元素和图形元素,框架元素能够包含图形元素和其他框架元素.

(1)主要的框架元素有(2)图形元素包括路径该转换实现从DXF矿图文件到矿图标记语言(XML文件)的转换,然后通过XSLT语言实现XML格式到SVG的简单转换,最后实现矿图的发布.XSLT语言,它代表eXtensible Stylesheet Language:Transformations(即扩展样式表语言:转换),是一种用来将一个XML文档的结构进行转换的语言,是XSL(eXtensible Stylesheet Language,扩展样式表语言)语言的一部分.XSL用来定义XML文档的格式和表现方式,用于其在屏幕上的显示、打印到纸上或是作为语音输出[6].下面介绍复杂的图元对象和非图元对象的转换.

以往研究DXF到SVG的图元转换的文献,如文献[4]中CAD文件转换为SVG文

件的探讨,主要针对坐标系统、圆弧椭圆、文字等进行转换.通过细致研究了前人的转换方法后,本文提出了一些新的转换方法和一些比较复杂图元的转换方法,并通过VC++6.0加以测试实现. 3.1 坐标系的转换

在AutoCAD中采用的是世界坐标系(WCS),也就是说坐标原点在屏幕的左下角,X轴向右为正方向,Y轴向上为正方向.而SVG坐标原点在初始视口(屏幕)的左上角,X轴的正向朝右,Y轴的正向朝下.可通过XSLT语言从矿图标记语言到SVG里实现坐标系的转换.在转换后的矿图标记语言(XML文件)里面存储了DXF文件中所有图元的横纵坐标的最大值和最小值(Xmin,Ymin,Xmax,Ymax),这样可以在SVG里定义图形的视口.

对于坐标系的转换,除了在文献[4]中提到的方法之外,本文提出了另两种转换方法.

(1)在对应的视口元素中加入:transform=“translate(0,Ymax)scale(1,-1)”.上述语句中:translate(0,Ymax)的意思是将坐标原点由原来的位置平移到点(0,Ymax)的位置,而scale(1,-1)的含义是X轴的正方向不变,Y轴的正方向与原来相反.其中Ymax表示从DXF文件中读取的最大纵坐标. (2)直接在XSLT文件中针对对应的每一个图元的纵坐标做y=-y+Ymax变换.代码如下: 3.2 颜色

AutoCAD系统采用颜色索引(ACI),用0~255的整数表示256种颜色[7].而SVG中采用RGB颜色系统,利用(Red,Green,Blue)三元组来表示一种颜色值,其中,Red、Green和Blue分别代表3种基色的取值,范围从0~255.所以本文在XML文件转换时就实现颜色的转换,SVG直接从XML文件中提取.由于ACI与RGB颜色系统存在一定对应关系,最直接简单的办法就是通过穷举法实现

颜色的对应关系,例如转换函数:CreateXmlDocument::CADToRGB_color(int color,double&r,double&g,double&b);其中参数color代表了AutoCAD的颜色,通过穷举找到对应的RGB.C++代码如下: 3.3 文字

在将矿图标记语言向SVG转换之后,可能出现中文文字在SVG中不能正常显示的情况.这是因为SVG有iso-8859-1(ASCII)、utf-8和utf-16共3种编码形式,ASCII码不能直接使用汉字字符,utf-8和utf-16是Unicode形式的编码.utf-8支持多种语种,每个ASCII字符使用一个字节表示,其它字符使用3个字节来表示;utf-16则对于任何一个字符都是使用2个字节来表示,这2种编码都能正常显示汉字[8].编程时,如果直接生成SVG文档,则文档使用的是ASCII码,所以不能正常显示汉字.需要将ASCII码文档转换成Unicode,可利用函数C++库函数WideCharToMultiByte实现文字的转换问题. 3.4 多线(MLINE)

DXF对于多线的处理比较复杂,必须通过计算才可以得出两条折线,对应于SVG的②比例因子,表示两条线之间的宽度; ③对正点的坐标;

④每个对正点到上线和下线的距离(有可能是负的),由每一对组码所对应的组值相减而得,分别为d1即对正点到上线的距离、d2即对正点到下线的距离; ⑤从该顶点开始的线段的方向矢量,(12,22)对应的组值,即为(u1,v1); ⑥此顶点处的斜接方向矢量,(13,23),即为(u2,v2).计算方法如图3所示. 这条MLINE采用居中正对,令B的坐标为(x,y),C的坐标为(x1,y1),A

的坐标为(x2,y2),从对正点B开始的线段的方向矢量表示单位方向的向量,即方向为模长为1;从对正点B点处的斜接方向矢量为,模长为1.所以现在只要求得A、C的坐标即可: 其中对应的值为:

代入可以得到A、C的坐标:

本文详细介绍了DXF实体到SVG元素之间的转换方法,在前人研究基础上提出了新的转换方法,分析了比较复杂的图元对象的转换方法,并在转换过程中给出了具体的解决方案.通过实现DXF数据到SVG数据的转换,一方面解决了矿图数据网络化应用中存在的现实问题,为煤矿企业信息系统建设尤其是WebGIS系统的建设提供了空间数据格式方面的参考;另一方面,在矿图空间数据格式标准化方面具有很好的参考和实用价值.

【相关文献】

[1]史玉红.浅谈AutoCAD的接口DXF文件 [J].山东煤炭科技,2002(1):38-39.

[2]陈晓兵.基于Web和数据库的AutoCAD图形文件的数据交换[J].组合机床与自动化加工技术,2003(11):38-41.

[3] 袁家政.可伸缩矢量图形SVG的数据表示研究[D].北京:北京交通大学,2007.

[4]柳 玲,李百战,杨明宇.CAD文件转换为SVG文件的探讨[J].计算机应用,2006,26(B06):51-53.

[5]李芳珍,许伦辉.DXF文件格式及其外部接口的研究[J].兵工自动化,2008,27(7):83-85. [6]尹章才,李 霖.基于XML的地理信息可视化方法优化研究[J].武汉理工大学学报,2006,28(2):45-48.

[7]刘俊荷.矿图[M].北京:煤炭工业出版社,2005.

[8]黄凯伟.SVG开发实践[M].北京:电子工业出版社,2008.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务