国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DXF到SVG圖元轉(zhuǎn)換關(guān)鍵問(wèn)題分析

2010-08-28 02:30:28輝,劉星,鄭
關(guān)鍵詞:正點(diǎn)圖元矢量

劉 輝,劉 星,鄭 靜

(東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽(yáng) 110819)

DXF到SVG圖元轉(zhuǎn)換關(guān)鍵問(wèn)題分析

劉 輝,劉 星,鄭 靜

(東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽(yáng) 110819)

為了實(shí)現(xiàn)礦圖的重新發(fā)布,通過(guò)分析AutoCAD數(shù)據(jù)格式(DXF文件)和SVG格式標(biāo)準(zhǔn),建立DXF文件中的實(shí)體和SVG中的元素之間的對(duì)應(yīng)關(guān)系.詳細(xì)分析了關(guān)鍵的復(fù)雜圖元對(duì)象(文字,多線)以及非圖元對(duì)象(坐標(biāo)系,顏色)到SVG的轉(zhuǎn)換,以便更方便地運(yùn)用到WebGIS的礦圖發(fā)布.編程測(cè)試證明,重新發(fā)布的礦圖與原圖基本相同.

DXF;圖元;SVG

DXF文件是AUTODESK公司提出的一種專用的CAD數(shù)據(jù)交換格式,是一種具有專門格式的ASCII碼文本文件,比較好讀,易于被其它程序處理,主要用于實(shí)現(xiàn)高級(jí)語(yǔ)言編寫的程序與AutoCAD系統(tǒng)的連接,或其它CAD系統(tǒng)與AutoCAD之間的圖形文件交換[1].但是由于DXF不能描述空間信息的完整幾何模型,難以進(jìn)一步發(fā)展;其信息定義不完整,僅保留了原有系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的幾何和部分屬性信息,而大量的拓?fù)湫畔⒁巡粡?fù)存在;其信息描述方面也有許多缺陷,致使一些信息量過(guò)分冗長(zhǎng),文件格式比較復(fù)雜而且不盡合理[2].而XML(Extended Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)作為目前互聯(lián)網(wǎng)上廣泛流行的數(shù)據(jù)交換標(biāo)準(zhǔn),具有結(jié)構(gòu)化、可擴(kuò)展性以及靈活性等特點(diǎn),所以設(shè)計(jì)一種基于XML模式的可描述礦圖圖形的標(biāo)記語(yǔ)言對(duì)礦圖進(jìn)行描述.利用所生成的礦圖標(biāo)記語(yǔ)言(XML文件),作為中性文件可實(shí)現(xiàn)礦圖數(shù)據(jù)的交換和發(fā)布,還可利用關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)XML文件的管理.為了實(shí)現(xiàn)礦圖的重新發(fā)布,必須把礦圖標(biāo)記語(yǔ)言文件通過(guò)XSLT轉(zhuǎn)換語(yǔ)言轉(zhuǎn)換為另一種XML格式的文件——SVG.使用SVG可以在網(wǎng)頁(yè)上顯示出各種各樣的高質(zhì)量二維矢量圖形,包括圖像處理中常見的許多功能,如圖形、文字、動(dòng)畫、色彩和濾鏡效果等.但SVG不同于傳統(tǒng)的二維(平面)圖形,而是使用簡(jiǎn)單的一維(文本)指令,完成矢量圖形特征的描述[3].盡管DXF文件和SVG文件在表示方式上有一定的相似之處,都通過(guò)記錄圖形的特征數(shù)據(jù)來(lái)描述矢量圖形,但在有些實(shí)體的描述上,兩者存在差異,比如坐標(biāo)系、文字等[4].本文在此基礎(chǔ)上著重分析了關(guān)鍵圖元的轉(zhuǎn)換問(wèn)題.

1 DXF數(shù)據(jù)組織結(jié)構(gòu)

DXF文件描述了AutoCAD圖形數(shù)據(jù)庫(kù)中所包含的全部信息,是圖形完全等價(jià)的矢量表達(dá)形式.DXF本質(zhì)上由代碼及關(guān)聯(lián)值對(duì)組成,稱為組碼和組值.每個(gè)組碼和組值各占一行,組碼是一個(gè)整數(shù),表明了其后數(shù)據(jù)元素的類型,也指出了數(shù)據(jù)元素對(duì)于給定對(duì)象(或記錄)類型的含意;組值是數(shù)據(jù)類型,根據(jù)組碼的數(shù)值可以是字符串型、整型或浮點(diǎn)數(shù)型等.通過(guò)使用這些配對(duì)的組碼和組值,DXF文件被組織成段,這些段由記錄組成,而記錄又由依次排列的組碼和數(shù)據(jù)條目組成.完整的DXF文件由7段SECTION組成,每段由一行組碼0及一行字符串SECTION開始,緊接著組碼2及一行表示段名稱的字符串;段的結(jié)束由一行組碼0及一行字符ENDSEC表示.這些段中的內(nèi)容由對(duì)象或圖元組成,而這些對(duì)象或圖元由標(biāo)志它們屬性的組碼和組值組成.整個(gè)文件以一行組碼0及一行EOF結(jié)束[5],其文件結(jié)構(gòu)如圖1所示.

2 SVG數(shù)據(jù)組織結(jié)構(gòu)

SVG是一種標(biāo)準(zhǔn)、開放、可縮放的矢量圖形規(guī)范,是一種基于XML來(lái)描述二維矢量圖形和矢量/點(diǎn)陣混合圖形的置標(biāo)語(yǔ)言,是一種全新的矢量圖形規(guī)范.SVG圖形包括框架元素和圖形元素,框架元素能夠包含圖形元素和其他框架元素.

(1)主要的框架元素有

(2)圖形元素包括路徑

3 DXF到SVG圖元的轉(zhuǎn)換

該轉(zhuǎn)換實(shí)現(xiàn)從DXF礦圖文件到礦圖標(biāo)記語(yǔ)言(XML文件)的轉(zhuǎn)換,然后通過(guò)XSLT語(yǔ)言實(shí)現(xiàn)XML格式到SVG的簡(jiǎn)單轉(zhuǎn)換,最后實(shí)現(xiàn)礦圖的發(fā)布.XSLT語(yǔ)言,它代表eXtensible Stylesheet Language:Transformations(即擴(kuò)展樣式表語(yǔ)言:轉(zhuǎn)換),是一種用來(lái)將一個(gè)XML文檔的結(jié)構(gòu)進(jìn)行轉(zhuǎn)換的語(yǔ)言,是XSL(eXtensible Stylesheet Language,擴(kuò)展樣式表語(yǔ)言)語(yǔ)言的一部分.XSL用來(lái)定義XML文檔的格式和表現(xiàn)方式,用于其在屏幕上的顯示、打印到紙上或是作為語(yǔ)音輸出[6].下面介紹復(fù)雜的圖元對(duì)象和非圖元對(duì)象的轉(zhuǎn)換.

以往研究DXF到SVG的圖元轉(zhuǎn)換的文獻(xiàn),如文獻(xiàn)[4]中CAD文件轉(zhuǎn)換為SVG文件的探討,主要針對(duì)坐標(biāo)系統(tǒng)、圓弧橢圓、文字等進(jìn)行轉(zhuǎn)換.通過(guò)細(xì)致研究了前人的轉(zhuǎn)換方法后,本文提出了一些新的轉(zhuǎn)換方法和一些比較復(fù)雜圖元的轉(zhuǎn)換方法,并通過(guò)VC++6.0加以測(cè)試實(shí)現(xiàn).

3.1 坐標(biāo)系的轉(zhuǎn)換

在AutoCAD中采用的是世界坐標(biāo)系(WCS),也就是說(shuō)坐標(biāo)原點(diǎn)在屏幕的左下角,X軸向右為正方向,Y軸向上為正方向.而SVG坐標(biāo)原點(diǎn)在初始視口(屏幕)的左上角,X軸的正向朝右,Y軸的正向朝下.可通過(guò)XSLT語(yǔ)言從礦圖標(biāo)記語(yǔ)言到SVG里實(shí)現(xiàn)坐標(biāo)系的轉(zhuǎn)換.在轉(zhuǎn)換后的礦圖標(biāo)記語(yǔ)言(XML文件)里面存儲(chǔ)了DXF文件中所有圖元的橫縱坐標(biāo)的最大值和最小值(Xmin,Ymin,Xmax,Ymax),這樣可以在SVG里定義圖形的視口.

對(duì)于坐標(biāo)系的轉(zhuǎn)換,除了在文獻(xiàn)[4]中提到的方法之外,本文提出了另兩種轉(zhuǎn)換方法.

(1)在對(duì)應(yīng)的視口元素中加入:transform=“translate(0,Ymax)scale(1,-1)”.上述語(yǔ)句中:translate(0,Ymax)的意思是將坐標(biāo)原點(diǎn)由原來(lái)的位置平移到點(diǎn)(0,Ymax)的位置,而scale(1,-1)的含義是X軸的正方向不變,Y軸的正方向與原來(lái)相反.其中Ymax表示從DXF文件中讀取的最大縱坐標(biāo).

(2)直接在XSLT文件中針對(duì)對(duì)應(yīng)的每一個(gè)圖元的縱坐標(biāo)做y=-y+Ymax變換.代碼如下:

3.2 顏色

AutoCAD系統(tǒng)采用顏色索引(ACI),用0~255的整數(shù)表示256種顏色[7].而SVG中采用RGB顏色系統(tǒng),利用(Red,Green,Blue)三元組來(lái)表示一種顏色值,其中,Red、Green和Blue分別代表3種基色的取值,范圍從0~255.所以本文在XML文件轉(zhuǎn)換時(shí)就實(shí)現(xiàn)顏色的轉(zhuǎn)換,SVG直接從XML文件中提取.由于ACI與RGB顏色系統(tǒng)存在一定對(duì)應(yīng)關(guān)系,最直接簡(jiǎn)單的辦法就是通過(guò)窮舉法實(shí)現(xiàn)顏色的對(duì)應(yīng)關(guān)系,例如轉(zhuǎn)換函數(shù):CreateXmlDocument::CADToRGB_color(int color,double&r,double&g,double&b);其中參數(shù)color代表了AutoCAD的顏色,通過(guò)窮舉找到對(duì)應(yīng)的RGB.C++代碼如下:

3.3 文字

在將礦圖標(biāo)記語(yǔ)言向SVG轉(zhuǎn)換之后,可能出現(xiàn)中文文字在SVG中不能正常顯示的情況.這是因?yàn)镾VG有iso-8859-1(ASCII)、utf-8和utf-16共3種編碼形式,ASCII碼不能直接使用漢字字符,utf-8和utf-16是Unicode形式的編碼.utf-8支持多種語(yǔ)種,每個(gè)ASCII字符使用一個(gè)字節(jié)表示,其它字符使用3個(gè)字節(jié)來(lái)表示;utf-16則對(duì)于任何一個(gè)字符都是使用2個(gè)字節(jié)來(lái)表示,這2種編碼都能正常顯示漢字[8].編程時(shí),如果直接生成SVG文檔,則文檔使用的是ASCII碼,所以不能正常顯示漢字.需要將ASCII碼文檔轉(zhuǎn)換成Unicode,可利用函數(shù)C++庫(kù)函數(shù)WideCharToMultiByte實(shí)現(xiàn)文字的轉(zhuǎn)換問(wèn)題.

3.4 多線(MLINE)

DXF對(duì)于多線的處理比較復(fù)雜,必須通過(guò)計(jì)算才可以得出兩條折線,對(duì)應(yīng)于SVG的

①對(duì)正信息,如圖2所示.

②比例因子,表示兩條線之間的寬度;

③對(duì)正點(diǎn)的坐標(biāo);

④每個(gè)對(duì)正點(diǎn)到上線和下線的距離(有可能是負(fù)的),由每一對(duì)組碼所對(duì)應(yīng)的組值相減而得,分別為d1即對(duì)正點(diǎn)到上線的距離、d2即對(duì)正點(diǎn)到下線的距離;

⑤從該頂點(diǎn)開始的線段的方向矢量,(12,22)對(duì)應(yīng)的組值,即為(u1,v1);

⑥此頂點(diǎn)處的斜接方向矢量,(13,23),即為(u2,v2).計(jì)算方法如圖3所示.

這條MLINE采用居中正對(duì),令B的坐標(biāo)為(x,y),C的坐標(biāo)為(x1,y1),A的坐標(biāo)為(x2,y2),從對(duì)正點(diǎn)B開始的線段的方向矢量表示單位方向的向量,即方向?yàn)槟iL(zhǎng)為1;從對(duì)正點(diǎn)B點(diǎn)處的斜接方向矢量為,模長(zhǎng)為1.所以現(xiàn)在只要求得A、C的坐標(biāo)即可:

其中對(duì)應(yīng)的值為:

代入可以得到A、C的坐標(biāo):

4 結(jié)束語(yǔ)

本文詳細(xì)介紹了DXF實(shí)體到SVG元素之間的轉(zhuǎn)換方法,在前人研究基礎(chǔ)上提出了新的轉(zhuǎn)換方法,分析了比較復(fù)雜的圖元對(duì)象的轉(zhuǎn)換方法,并在轉(zhuǎn)換過(guò)程中給出了具體的解決方案.通過(guò)實(shí)現(xiàn)DXF數(shù)據(jù)到SVG數(shù)據(jù)的轉(zhuǎn)換,一方面解決了礦圖數(shù)據(jù)網(wǎng)絡(luò)化應(yīng)用中存在的現(xiàn)實(shí)問(wèn)題,為煤礦企業(yè)信息系統(tǒng)建設(shè)尤其是WebGIS系統(tǒng)的建設(shè)提供了空間數(shù)據(jù)格式方面的參考;另一方面,在礦圖空間數(shù)據(jù)格式標(biāo)準(zhǔn)化方面具有很好的參考和實(shí)用價(jià)值.

[1]史玉紅.淺談AutoCAD的接口DXF文件 [J].山東煤炭科技,2002(1):38-39.

[2]陳曉兵.基于Web和數(shù)據(jù)庫(kù)的AutoCAD圖形文件的數(shù)據(jù)交換[J].組合機(jī)床與自動(dòng)化加工技術(shù),2003(11):38-41.

[3] 袁家政.可伸縮矢量圖形SVG的數(shù)據(jù)表示研究[D].北京:北京交通大學(xué),2007.

[4]柳 玲,李百戰(zhàn),楊明宇.CAD文件轉(zhuǎn)換為SVG文件的探討[J].計(jì)算機(jī)應(yīng)用,2006,26(B06):51-53.

[5]李芳珍,許倫輝.DXF文件格式及其外部接口的研究[J].兵工自動(dòng)化,2008,27(7):83-85.

[6]尹章才,李 霖.基于XML的地理信息可視化方法優(yōu)化研究[J].武漢理工大學(xué)學(xué)報(bào),2006,28(2):45-48.

[7]劉俊荷.礦圖[M].北京:煤炭工業(yè)出版社,2005.

[8]黃凱偉.SVG開發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2008.

Analysis on key issues about conversion from DXF to SVG metafile

LIU Hui,LIU Xing,ZHENG Jing
(School of Information Science and Engineering,Northeastern University,Shenyang 110819,China)

In order to re-release Mine maps,the AutoCAD data formats(DXF files)and SVG format standard are analyzed,and the corresponding relationship between the entities of DXF files and SVG elements is established. Then the conversion from the key and complex metafile objects(text,line)and non-metafile objects(coordinates,color)to SVG is analyzed at length.By doing so,it can be more easily applied to the map releasing of WebGIS.At last,programming is made to testify that the re-released mine map is basically same with the original mine map.

DXF;metafile;SVG

book=4,ebook=137

TP319

A

1671-024X(2010)04-0078-03

2010-03-25 基金項(xiàng)目:國(guó)家2006年度安全生產(chǎn)科技發(fā)展計(jì)劃項(xiàng)目

劉 輝(1985—),男,碩士研究生.

劉 星(1964—),女,副教授,工學(xué)碩士.E-mail:haphlx@163.com

猜你喜歡
正點(diǎn)圖元矢量
自動(dòng)替換國(guó)家站異常數(shù)據(jù)技術(shù)方法探究
一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
矢量三角形法的應(yīng)用
學(xué)術(shù)出版物插圖的編排要求(一):圖注
聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
正點(diǎn)
趣味漢字——正點(diǎn)和整點(diǎn)
基于矢量最優(yōu)估計(jì)的穩(wěn)健測(cè)向方法
三角形法則在動(dòng)態(tài)平衡問(wèn)題中的應(yīng)用
基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)
軟件(2016年12期)2016-02-13 05:58:14
前郭尔| 磐石市| 焦作市| 泸西县| 长宁县| 安陆市| 遂昌县| 宣城市| 凯里市| 恩施市| 申扎县| 浦江县| 神木县| 白城市| 桂林市| 水富县| 平谷区| 五指山市| 甘孜县| 长顺县| 隆子县| 收藏| 沙田区| 乳山市| 漳平市| 罗山县| 青冈县| 岗巴县| 南漳县| 通榆县| 太谷县| 家居| 遂宁市| 嘉善县| 武定县| 张家港市| 留坝县| 长治县| 安图县| 上犹县| 灵宝市|