劉 輝,劉 星,鄭 靜
(東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽 110819)
DXF到SVG圖元轉(zhuǎn)換關(guān)鍵問題分析
劉 輝,劉 星,鄭 靜
(東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽 110819)
為了實現(xiàn)礦圖的重新發(fā)布,通過分析AutoCAD數(shù)據(jù)格式(DXF文件)和SVG格式標(biāo)準,建立DXF文件中的實體和SVG中的元素之間的對應(yīng)關(guān)系.詳細分析了關(guān)鍵的復(fù)雜圖元對象(文字,多線)以及非圖元對象(坐標(biāo)系,顏色)到SVG的轉(zhuǎn)換,以便更方便地運用到WebGIS的礦圖發(fā)布.編程測試證明,重新發(fā)布的礦圖與原圖基本相同.
DXF;圖元;SVG
DXF文件是AUTODESK公司提出的一種專用的CAD數(shù)據(jù)交換格式,是一種具有專門格式的ASCII碼文本文件,比較好讀,易于被其它程序處理,主要用于實現(xiàn)高級語言編寫的程序與AutoCAD系統(tǒng)的連接,或其它CAD系統(tǒng)與AutoCAD之間的圖形文件交換[1].但是由于DXF不能描述空間信息的完整幾何模型,難以進一步發(fā)展;其信息定義不完整,僅保留了原有系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的幾何和部分屬性信息,而大量的拓撲信息已不復(fù)存在;其信息描述方面也有許多缺陷,致使一些信息量過分冗長,文件格式比較復(fù)雜而且不盡合理[2].而XML(Extended Markup Language,可擴展標(biāo)記語言)作為目前互聯(lián)網(wǎng)上廣泛流行的數(shù)據(jù)交換標(biāo)準,具有結(jié)構(gòu)化、可擴展性以及靈活性等特點,所以設(shè)計一種基于XML模式的可描述礦圖圖形的標(biāo)記語言對礦圖進行描述.利用所生成的礦圖標(biāo)記語言(XML文件),作為中性文件可實現(xiàn)礦圖數(shù)據(jù)的交換和發(fā)布,還可利用關(guān)系數(shù)據(jù)庫實現(xiàn)對XML文件的管理.為了實現(xiàn)礦圖的重新發(fā)布,必須把礦圖標(biāo)記語言文件通過XSLT轉(zhuǎn)換語言轉(zhuǎn)換為另一種XML格式的文件——SVG.使用SVG可以在網(wǎng)頁上顯示出各種各樣的高質(zhì)量二維矢量圖形,包括圖像處理中常見的許多功能,如圖形、文字、動畫、色彩和濾鏡效果等.但SVG不同于傳統(tǒng)的二維(平面)圖形,而是使用簡單的一維(文本)指令,完成矢量圖形特征的描述[3].盡管DXF文件和SVG文件在表示方式上有一定的相似之處,都通過記錄圖形的特征數(shù)據(jù)來描述矢量圖形,但在有些實體的描述上,兩者存在差異,比如坐標(biāo)系、文字等[4].本文在此基礎(chǔ)上著重分析了關(guān)鍵圖元的轉(zhuǎn)換問題.
DXF文件描述了AutoCAD圖形數(shù)據(jù)庫中所包含的全部信息,是圖形完全等價的矢量表達形式.DXF本質(zhì)上由代碼及關(guān)聯(lián)值對組成,稱為組碼和組值.每個組碼和組值各占一行,組碼是一個整數(shù),表明了其后數(shù)據(jù)元素的類型,也指出了數(shù)據(jù)元素對于給定對象(或記錄)類型的含意;組值是數(shù)據(jù)類型,根據(jù)組碼的數(shù)值可以是字符串型、整型或浮點數(shù)型等.通過使用這些配對的組碼和組值,DXF文件被組織成段,這些段由記錄組成,而記錄又由依次排列的組碼和數(shù)據(jù)條目組成.完整的DXF文件由7段SECTION組成,每段由一行組碼0及一行字符串SECTION開始,緊接著組碼2及一行表示段名稱的字符串;段的結(jié)束由一行組碼0及一行字符ENDSEC表示.這些段中的內(nèi)容由對象或圖元組成,而這些對象或圖元由標(biāo)志它們屬性的組碼和組值組成.整個文件以一行組碼0及一行EOF結(jié)束[5],其文件結(jié)構(gòu)如圖1所示.
SVG是一種標(biāo)準、開放、可縮放的矢量圖形規(guī)范,是一種基于XML來描述二維矢量圖形和矢量/點陣混合圖形的置標(biāo)語言,是一種全新的矢量圖形規(guī)范.SVG圖形包括框架元素和圖形元素,框架元素能夠包含圖形元素和其他框架元素.
(1)主要的框架元素有