基于B/S結構的測井曲線SVG矢量繪制?
楊堯1卿粼波1何小海1張余強2
(1.四川大學電子信息學院成都610065)(2.成都西圖科技有限公司成都610065)
測井曲線是石油地質行業重要的資料,針對傳統C/S模式和現有的基于ActiveX和XML技術的測井曲線繪制系統存在的跨平臺性、測井數據格式的局限性以及位圖縮放失真問題,構建了一種基于B/S結構的測井曲線矢量繪制系統。該系統具有良好的跨平臺性,提供了多種常見數據格式的測井曲線的SVG矢量圖繪制,縮放、自由選擇繪制的曲線道和繪制深度和功能。
測井曲線;B/S;SVG矢量圖;716格式
Class NumberTP31
測井數據主要用于油氣勘探和開發中的地層評價,為劃分儲層、判斷地層流體性質、研究地層構造、油水變化規律、鉆井工程和采油工程提供參數(如隨鉆測井和工程測井、地層測試)等提供強有力的依據。由此可見,測井曲線的瀏覽對于石油地質行業是至關重要的。
用戶可以通過各種方式獲取測井公司中的測井資料,卻無法直接瀏覽測井曲線中單一的數據。此外,在測井領域一直沒有一種統一的測井數據文件記錄格式,以致于研究測井數據變得特別困難。傳統的測井曲線繪制系統大多是基于C/S(Client/ Server)模式[1~2],需要安裝客戶端軟件才能實現遠程瀏覽測井曲線資料,并且繪制的是一般的位圖,無法滿足地質人員無失真縮放瀏覽的需求。有人提出過基于B/S(Brower/Server)模式的遠程測井曲線繪制系統,但是該系統需要將ActiveX控件嵌入瀏覽器中采用GDI+方式來實現繪制[3]。而微軟2014年9月發布的安全更新,正式開始實施“阻止過時ActiveX控件”安全策略,以提升IE瀏覽器的整體安全性,因此該系統不能滿足石油地質部門的需求。
針對以上問題,本文基于B/S模式設計了一個測井數據管理系統,該系統采用MVC設計模式以及三層架構,實現了支持716等常見數據格式的測井曲線SVG(Scalable Vector Graphics)矢量圖繪制。該系統支持自由選擇繪制的曲線道、繪制深度,無級縮放曲線的功能,讓用戶無需安裝任何客戶端,就能夠隨時通過瀏覽器瀏覽測井曲線,并且易于擴展和維護。
考慮到B/S結構優良的跨平臺性,免客戶端安裝的特點,以及MVC設計模式的低耦合度低、易維護等特點,本文實現了基于B/S的測井曲線矢量繪制系統。該系統采用ASP.NET技術,MVC設計模式,在業務邏輯上采用三層架構系統架構,分為數據訪問層,業務邏輯層以及表現層[5],系統架構如圖1所示。

圖1 系統架構圖
2.1表現層
表現層為客戶提供了在瀏覽器中顯示的用戶界面。當用戶在網頁上選擇地區、井號和對應的測井曲線后,點擊繪制按鈕進行測井曲線矢量繪制,就會通過AJAX異步傳輸技術向業務邏輯層提出請求。業務邏輯層處理好請求后,表現層把來自業務邏輯層的數據用于頁面渲染,將繪制好后的測井曲線展現給用戶。從業務需求考慮,地質人員進行分析時需要對測井曲線進行大尺度無失真縮放,因此表現層采用矢量圖進行測井曲線的繪制。
2.2業務邏輯層
業務邏輯層負責整個系統的業務邏輯功能,它既要處理表現層傳來的請求,又要負責和數據邏輯層進行交互。當表現層傳來請求后,業務邏輯層對命令進行解析并執行,生成向數據訪問層獲取測井數據的數據請求,等待數據訪問層應答后,將請求到的數據轉換層數據處理后反饋給表現層。本文的Web服務器采用微軟IIS7.5,選擇ASP.NET技術進行開發。
2.3數據訪問層
數據訪問層根據業務邏輯層發來的請求從數據庫中讀取或者寫入數據,從而為業務邏輯層提供統一的數據訪問服務。本文采用SQL Server2008數據庫系統作為數據訪問層,主要用于存儲測井曲線的地區、井號、起始井深和終止井深、測井文件存放路徑等信息。
3.1測井數據的解析
常見的測井數據格式有[6]:ASCII、DAT、BIT、716、LIS、DLIS、LAS、XTF。DAT、LAS等格式的都可以直接編程讀取數據用于繪制,但是部分典型的格式需要通過進行解析后才可用于繪制。本文采用一種在新疆油田數據公司應用廣泛的716格式進行解析。
716格式是德萊賽·阿特拉斯測井公司的測井儀器數字資料記錄格式,這種數據格式的文件是由一個標題塊和若干個數據塊組成[7]。標題塊存儲的是記錄井和測井曲線的說明信息的測井參數,如:成果號、公司名、井名、曲線條數、曲線名稱、測井起始井深、終止井深以及采樣點間隔等。數據部分通常存儲的是測井深度、各個測井曲線的名稱以及深度相對應的數據。有些常見的數據格式如LAS可以用基于流的I/O操作方式讀入到程序中,而716數據格式需要我們研究其數據的存儲結構,將對應塊部分分別進行解析,以獲取到數據用于測井曲線繪制。
如上所述,716格式的測井曲線由標題部分和數據部分組成的,且是一個標題塊和多個數據塊構成。標題部分結構見表1。

表1 716格式標題部分結構
數據部分由若干個邏輯記錄組成,而邏輯記錄由一條測井曲線的125個連續采樣點組成,所取的數據則需要根據標題塊中的采樣點數來確定,如果每個采樣點數據占4個字節,那么一個邏輯記錄通常需要占500個字節。數據部分的結構見圖2所示。由此,可編程實現716格式的解析。

圖2 716格式數據部分結構
3.2測井數據的矢量繪制
測井曲線繪制流程如圖3所示。前臺頁面將通過AJAX從業務邏輯層請求得到的JSON字符串進行格式化,以鍵值對的形式存放在JSON對象中,如圖4所示。其中ypsd對應的鍵值為曲線深度信息,AC、GR、DEN等對應的鍵值為測井曲線各個道的信息。繪制時根據用戶選擇的曲線段進行繪制,各個曲線道對數據進行篩選,并且找出屬于自己的曲線的極值,以便于繪制時有效利用曲線道的空間。
繪制過程中需要解決的兩個問題:坐標轉換和測井曲線矢量繪制。

圖3 測井曲線繪制流程

圖4 JSON對象截圖
3.2.1 屏幕坐標轉換
在繪制曲線時,水平方向為曲線實現數據測量值,垂直方向為測井深度,需要將測井深度轉化為屏幕坐標。由于顯示設備不盡相同,而屏幕坐標的轉換主要取決于顯示器的分辨率,這就給轉換帶來困難。本文用式(1)將測井深度轉化為屏幕坐標。

其中Y表示為屏幕縱坐標,ypsd為測井深度,QSJS為測井曲線的起始井深,yLogPixPerInch為每英寸的像素點數,Top為標題上方到圖片最上端的距離,TitleHeight為標題高度。
3.2.2 矢量繪制
矢量圖是根據幾何特性來進行圖像繪制,它克服了位圖所固有的缺陷,具有無級縮放,不失真的特點。常見的矢量圖形文件格式主要有[8]SVG、SWF、DXF、DWF、PS、EPS、WMF、PDF等,其中SVG和SWF是網絡常用格式。SVG與SWF相比,最大的優勢就是不需要安裝插件,因此選擇SVG進行圖件的矢量繪制。
SVG是基于XML,用于描述二維矢量圖形的一種圖形格式,是W3C推出的一種開放標準的文本式矢量圖形描述語言。相比任何基于光柵的格式,SVG具有多項優勢[9]:
1)存儲的數據少:相比jpg、png等位圖而言,同樣的SVG圖像具有更小的內存,因而在下載方面速度有所提升。
2)無失真縮放:可以滿足地質人員進行曲線細節方面的研究與觀察。
3)SVG圖像由瀏覽器渲染,可動態編輯,這尤其適合測井曲線這樣以數據驅動的圖表。
因此從系統效率、存儲空間、實現效果等方面綜合考慮,表現層的測井曲線繪制采用SVG矢量繪制的解決方案。SVG使用XML格式定義圖像,由各種標簽構成其頁面元素。所有子元素都包含用于創建圖像的信息,大多數這些信息都包含在一系列基礎圖形的元素中,如矩形、圓形、直線、折線和多邊形等[10]。每個基礎圖形元素在矢量文件中都被稱之為對象,每個對象都是一個獨立的實體,它具有形狀、顏色、大小、輪廓和定位等屬性。測井曲線主要需要用到的基本圖形元素主要有<rect>(矩形)、<line>(直線)、<path>(路徑)。除此之外還有框架元素,如<svg>、<g>、<defs>等。<svg>是SVG文檔的根元素,它定義了一個可用于渲染的矩形區域。<g>是組合元素,可以自由將元素定義為集合,集合內的子元素遵循SVG繼承規則。<defs>預定義一個能夠在SVG矢量圖中重復使用的元素,類似定義一個函數一樣,可以重復在程序中進行調用。
如圖4所示,前臺將JSON對象用于SVG繪制,為了提高用戶的體驗感,本系統將各曲線道的SVG標簽都用一個SVG組合元素g包裹,以便于以后擴展對各個道的單獨交互操作。SVG文檔結構實現利用JavaScript設計繪制函數對象實現,設計的思路是利用模板方法模式,構建一個創建曲線道的模板方法DrawCurve,該方法接受各曲線道對象作為參數,生成各曲線道的SVG標簽文本,最后將一系列的SVG標簽文本經過瀏覽器渲染之后展示給用戶。以RT曲線道為例,JavaScript中轉化成的對象結構如圖5所示,SVG文檔結構如圖6所示。

圖5 對象結構

圖6 文檔結構
測井曲線繪制系統的繪制界面及功能如圖7所示。菜單欄具有選擇測井區域、井號,縮放,自由選擇感興趣區域進行繪制的功能。繪圖區域采用鎖定表頭的方式進行展現,當用戶滾動瀏覽深度時都能夠明確各個道代表的曲線,其中AC代表聲波時差,GR代表自然伽馬,DEN代表補償密度,RXO代表沖洗帶電阻率,RT代表地層電阻率[11]。繪圖的參數設置嚴格依據《石油測井曲線圖格式》(標準號SY/T5633-2009)。

圖7 測井曲線成果圖
本文設計一個基于B/S結構的測井曲線繪制系統,該系統解決了傳統系統的跨平臺性、不易讀取的測井曲線格式解析、數據可視化瀏覽以及位圖縮放失真的問題,實現了用戶無需安裝任何插件,就能通過瀏覽器方便快捷地直接瀏覽測井曲線,使測井曲線能夠得到更好的利用,采用了SVG矢量繪制使測井曲線圖像具有無級縮放、存儲數據量小等優點。該系統用耦合度低、易維護的MVC模式進行設計,后續可擴展性較好,可通過后續編程實現增加測井曲線進行微調、移動等操作。該系統在各種內核的瀏覽器上測試運行都正常,已投入實際使用。
[1]畢徐成.基于C/S模式的測井曲線反演系統的設計與實現[J].電子商務,2011(10):60-61.
BI Xucheng.Well Logging Curve Inversion System Based on C/S Model[J].E-Business Journal,2011(10):60-61.
[2]孫宏利.測井曲線繪制系統[J].油氣田地面工程,2007,26(3):14-15.
SUNHongli.Well-LogCurveDrawingSystem[J]. Oil-Gas Field Surface Engineering,2007,26(3):14-15.
[3]蒲琴,符耀慶,吳曉紅,等.基于ActiveX和XML技術的測井曲線遠程繪制[J].計算機與數字工程,2013,41(6):996-998.
PU Qin,FU Yaoqing,WU Xiaohong,et al.Remote Log?ging Curve Drawing Based on ActiveX and XML Technolo?gy[J].Computer&Digital Engineering,2013,41(6):996-998.
[4]王文波.B/S模式下的矢量圖形編輯與應用[C]//2011信息技術與應用學術會議,2011:115-121.
WANG Wenbo.Web Vector Graphics Editing Based on Handle Point and Application[C]//Conference on informa?tion technology and Applications,2011:115-121.
[5]高揚.基于.NET平臺的三層架構軟件框架的設計與實現[J].計算機技術與發展,2011,21(2):77-80.
GAO Yang.Design and Realization of Three Layers Struc?ture Software Framework Based on.NET[J].Computer Technology and Development,2011,21(2):77-80.
[6]胡佳慶.測井數據常用格式及格式轉換[J].海洋石油,2003,23(1):75-80.
HU Jiaqing.Logging Data Format and Transformation[J]. Offshore Oil,2003,23(1):75-80.
[7]戴建軍.測井數字資料常見數據格式剖析[J].石油物探,1996(S1):1-4.
DAI Jianjun.Logging Digital Data Format Analysis[J]. Geophysical Prospecting for Petroleum,1996(S1):1-4.
[8]李春卉.矢量圖形標準與規范研究現狀[J].情報科學,2007,25(4):636-640.2003,23(1):75-80.
LI Chunhui.Research on the Standards of Vector Graohics[J].Information Science,2007,25(4):636-640.2003,23(1):75-80.
[9]袁家政.可伸縮矢量圖形(SVG)的數據表示研究[D].北京:北京交通大學,2007.
YUAN Jiazheng.Research onData Representation of Sca?ble Vector Graphics[D].Beijing:Beijing Jiaotong Univer? sity,2007.
[10]萬本庭,陳明.基于SVG的矢量圖形庫管理模型[J].計算機工程,2006,32(3):65-67.
WAN Benting,CHEN Ming.SVG-based Vector Graph?ics Management Model[J].Computer Engineering,2006,32(3):65-67.
[11]SY/T5254-2009測井數據處理符號[S].北京:石油工業出版社,2009:1-24.
SY/T5254-2009 Logging date processing symbol[S]. Beijing:Petroleum Industry Press,2009:1-24.
Well Log Vector Drawing Based on B/S and SVG
YANG Yao1QING Linbo1HE Xiaohai1ZHANG Yuqiang2
(1.College of Electronics and Information Engineering,Sichuan University,Chengdu610065)(2.Chengdu Xitu Technology Co.,Ltd,Chengdu610065)
Well log can provide an important reference for the petroleum and geologic development field.Nevertheless,tradi?tional well-log curve drawing system based on C/S or ActiveX widget and XML template existing defects,such as poor crossing plat?form capability,the limitation of curve files format and scaling distortion.Aimed at these problems,a well-log curve vector drawing system based on B/S schema is constructed.The system can be platform crossing,provide well-log curve vector drawing by using SVG and support kinds of common files formats,drawing scaling and dynamic choosing the curve channel and drawing depths。
well-log curve,B/S,SVG,716 format
TP31
10.3969/j.issn.1672-9722.2017.05.040
2016年11月10日,
2016年12月30日
楊堯,女,碩士研究生,研究方向:寬帶通信與網絡。卿粼波,男,博士,副教授,研究方向:信號與信號系統、圖像處理、圖像通信。何小海,男,博士,教授,研究方向:圖像處理與信息系統、機器視覺與智能系統。張余強,男,工程師,研究方向:軟件工程。