刘 辉,刘 星,郑 静
(东北大学 信息科学与工程学院,辽宁 沈阳 110819)
DXF到SVG图元转换关键问题分析
刘 辉,刘 星,郑 静
(东北大学 信息科学与工程学院,辽宁 沈阳 110819)
为了实现矿图的重新发布,通过分析AutoCAD数据格式(DXF文件)和SVG格式标准,建立DXF文件中的实体和SVG中的元素之间的对应关系.详细分析了关键的复杂图元对象(文字,多线)以及非图元对象(坐标系,颜色)到SVG的转换,以便更方便地运用到WebGIS的矿图发布.编程测试证明,重新发布的矿图与原图基本相同.
DXF;图元;SVG
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].本文在此基础上着重分析了关键图元的转换问题.
1 DXF数据组织结构
DXF文件描述了AutoCAD图形数据库中所包含的全部信息,是图形完全等价的矢量表达形式.DXF本质上由代码及关联值对组成,称为组码和组值.每个组码和组值各占一行,组码是一个整数,表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意;组值是数据类型,根据组码的数值可以是字符串型、整型或浮点数型等.通过使用这些配对的组码和组值,DXF文件被组织成段,这些段由记录组成,而记录又由依次排列的组码和数据条目组成.完整的DXF文件由7段SECTION组成,每段由一行组码0及一行字符串SECTION开始,紧接着组码2及一行表示段名称的字符串;段的结束由一行组码0及一行字符ENDSEC表示.这些段中的内容由对象或图元组成,而这些对象或图元由标志它们属性的组码和组值组成.整个文件以一行组码0及一行EOF结束[5],其文件结构如图1所示.
2 SVG数据组织结构
SVG是一种标准、开放、可缩放的矢量图形规范,是一种基于XML来描述二维矢量图形和矢量/点阵混合图形的置标语言,是一种全新的矢量图形规范.SVG图形包括框架元素和图形元素,框架元素能够包含图形元素和其他框架元素.
(1)主要的框架元素有