摘 要:SVG是基于XML語言、面向網(wǎng)絡(luò)應(yīng)用、采用文本描述的二維矢量圖形圖像標準格式。本文介紹了SVG的特點并在此基礎(chǔ)上提出一種基于SVG技術(shù)的測井成果圖像實現(xiàn)方案。測試證實,該技術(shù)優(yōu)于傳統(tǒng)技術(shù),擴展了SVG的應(yīng)用領(lǐng)域,同時也為測井數(shù)據(jù)提供了一個先進的圖形化解決方案。
關(guān)鍵詞:SVG XML 矢量圖 測井圖像 測井
中圖分類號:TE1 文獻標識碼:A 文章編號:1672-3791(2012)12(c)-0097-02
1 SVG介紹
Scalable Vector Graphics(簡稱SVG),意思是“可升級矢量圖形”,它是由W3C制定的基于可擴展標記語言(XML)來描述二維矢量圖型的一個開放標準。SVG嚴格遵從XML語法,并用文本格式的描述性語言來描述圖像內(nèi)容,因此是一種和圖像分辨率無關(guān)的矢量圖形格式。對圖像來說,可升級意味著圖像尺寸并不限定固定的大小,這個特點非常符合測井圖形的特點,大小不定,長度也不定。
SVG可以構(gòu)造3種類型的圖形對象:矢量圖形、位圖圖象和文字。圖形對象可被變形和重組,包括圖象嵌套、變形處理、剪輯路徑、濾鏡特效和模板對象。
矢量圖像包含有諸如直線和曲線等幾何對象。這相對于以像素保存信息的位圖格式的圖像(如PNG、JPEG)來說有更大的靈活性。矢量格式圖像的最大好處就是,它可以和位圖圖像集成在一起,也可以把它們和矢量信息結(jié)合在一起以產(chǎn)生更加完美的圖像。
由于所有的顯示器都是基于點陣的,位圖圖像和矢量圖像的差別就歸結(jié)為他們是在客戶端還是在服務(wù)器端進行圖像展現(xiàn)處理;SVG能夠控制圖像展現(xiàn)的過程,不至于出現(xiàn)粗糙或帶鋸齒的圖像。SVG還能夠提供客戶端的濾鏡效果。
大多數(shù)XML語法描繪的都是文字信息或原始數(shù)據(jù),他們不能提供圖像的能力,SVG能夠提供豐富的、結(jié)構(gòu)化的矢量和矢量與圖像混合的圖像信息。
XML是W3C的推薦標準,用于結(jié)構(gòu)化的信息交換,已經(jīng)得到廣泛的普及和應(yīng)用。SVG是建立在此基礎(chǔ)上的,有很明顯的優(yōu)勢,比如:廣泛的國際化基礎(chǔ),強大的結(jié)構(gòu)化能力,以及對象模型等。
2 SVG滿足測井圖形的特性
SVG與JPEG、EMF等廣泛使用的圖形格式相比具有許多優(yōu)點,適于測井表示的特性有以下幾點。
普通的文本格式:SVG文檔可被許多工具讀取和修改,比JPEG、EMF、GIF圖像更適合壓縮,文件更小。由于它是基于XML的,是完全基于文本的圖形格式。對比測井發(fā)現(xiàn),相同的一段微電阻率掃描成像數(shù)據(jù),輸出EMF圖像的大小400M字節(jié)左右,而保持Svg的壓縮文件只有20M字節(jié),大小差距巨大。
可縮放性:與GIF和JPEG等位圖格式不同,SVG是一種矢量格式,這意味著SVG圖像能以任意分辨率進行高質(zhì)量的打印,而不會出現(xiàn)打印位圖時常見的“鋸齒”效果。這也是測井圖像必須具有的特性。
快速平移/縮放:你可對SVG圖像進行快速的平移/縮放操作,而圖像的顯示效果卻不會下降。根據(jù)測井井段的不同,一般測井圖像都較長,對圖像的瀏覽速度也有一定的要求。
可交互性:和位圖圖像不同,采用SVG編寫的文本具有可搜索性和可選擇性。由于這個特性,對于測井圖像的瀏覽器,可以設(shè)計根據(jù)需要搜索某一條曲線,進行查看和編輯,這在一般圖像文件中是做不到的,實現(xiàn)對圖層的控制。
開放的標準:SVG是一個網(wǎng)絡(luò)矢量圖形標準,與其他圖形格式和地圖文件格式不同,它具有開放性,與HTML/XHTML完全兼容。
3 測井圖形庫設(shè)計與開發(fā)
在測井行業(yè),圖形被廣泛用來表現(xiàn)各種測井數(shù)據(jù),例如常規(guī)測井曲線、波形、測井圖像、玫瑰圖、蝌蚪圖、圖頭、儀器串、井身結(jié)構(gòu)等等。目前有幾種專業(yè)圖像在本行業(yè)中得到應(yīng)用,例如Schlumberger的PDF, Atlas的meta文件等。然而,這些格式大多是各大公司的自主知識產(chǎn)權(quán)產(chǎn)品,受到嚴格的產(chǎn)權(quán)保護,很少有相關(guān)的技術(shù)資料可供參考。
為了解決這個問題,在W3C的SVG基礎(chǔ)上開發(fā)了專門針對石油測井領(lǐng)域的矢量圖形文件格式規(guī)范。同時配套開發(fā)了相關(guān)軟件產(chǎn)品。此規(guī)范派生于W3C的SVG。為了適應(yīng)石油測井行業(yè),我們對其做了如下修改。
W3C的SVG功能強大,同時完全實現(xiàn)出來也比較困難。而且SVG的很多特色對測井應(yīng)用來說也沒有必要,因此對其進行適當修改是必要的,修改后的規(guī)范應(yīng)該是 SVG的一個子集。
有些測井表象對象沒有得到SVG的很好支持,因此做了適當?shù)臄U充。可以支持目前所有的測井表象對象,包括圖頭、刻度圖、曲線、波形、測井圖像、玫瑰圖、儀器串圖、井身結(jié)構(gòu)圖等等。
測井繪圖數(shù)據(jù)量非常大,繪圖頁很長,100 MB的圖形文件是司空見慣。因此有必要對現(xiàn)有SVG進行優(yōu)化,通過優(yōu)化來減小圖形文件的體積,提高文件加載和顯示速度。
3.1 軟件架構(gòu)
Elis.GP(Graphics Paradise)實現(xiàn)了一個交互式二維圖形應(yīng)用程序框架類庫,其中包括常用圖形操作、用戶界面、圖形應(yīng)用程序框架三部分。Elis.GP的結(jié)構(gòu)如圖1所示。
Elis.GP的架構(gòu)體現(xiàn)了層次設(shè)計的思想,如圖1所示,從下到上基本有五個層次。每一層次會引用下一層次的類,也為上一層次提供支持,是上一層次的基礎(chǔ)。
3.2 主要類介紹
GPResourceManager負責管理應(yīng)用級別的公共資源,例如填充圖案,線型等。Graphics GdiPlus是利用.NET的Graphics來實現(xiàn)IGraphics接口,這是基本的繪圖類。GraphicsGdiPlus類的多數(shù)方法主要是通過對_graphics對象的相應(yīng)方法調(diào)用來實現(xiàn)的。
GraphicsSvgWriter給出了GP的繪圖操作的底層規(guī)范,是對.NET的Graphics的擴充,添加了一些專業(yè)的繪圖方法,并彌補了GDI+對傳統(tǒng)GDI操作支持的不足。
SvgPreDefs負責管理Svg文件中的預(yù)定義(defs)內(nèi)容。
SvgSymbol封裝了測井系統(tǒng)矢量圖形符號元數(shù)據(jù)的信息和基本操作。如符號名、符號大小、層數(shù)目等。
VgsLibrary類用于支持測井矢量圖形符號庫的加載、訪問、顯示等操作。
4 應(yīng)用軟件開發(fā)
利用 SVG SDK,應(yīng)用開發(fā)工程師可以輕松創(chuàng)建SVG測井矢量圖形文件。SVG SDK提供的SVG圖庫實現(xiàn)了GDI+的全部接口,在窗口中繪制任何圖形對象的代碼同樣可以用來生成SVG測井矢量圖形文件。圖2顯示的成像測井曲線SVG圖像。
5 結(jié)語
SVG的出現(xiàn)為測井成果圖形軟件的開發(fā)帶來新的思路。本文介紹了SVG的特點、組成,及與測井圖形應(yīng)用之間的關(guān)系,最終基于SVG實現(xiàn)了一個測井圖形解決方案。通過實際測井數(shù)據(jù)的測試,該圖像格式符合測井行業(yè)要求,在測井行業(yè)將有廣泛的應(yīng)用前景。
參考文獻
[1]萬維網(wǎng)聯(lián)盟的W3C推薦標準,基于XML的二維矢量圖形語言“Scalable Vector Graphics(SVG)1.1.
[2]李為,潘秋霞,張飛.基于SVG標準的電力系統(tǒng)圖形編輯器的設(shè)計與實現(xiàn)[J].中國電力教育,2008.
[3]侯宇,李素有.基于XML的SVG技術(shù)及其應(yīng)用[J].計算機應(yīng)用研究,2002,19(5):136-138.
[4]史冬梅,趙忠華.基于XML矢量圖像的SVG研究與應(yīng)用[J].油氣田地面工程,2009,28(7):58-59.