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