彭 博,譚成仟,張 奔,孫 遙,楊 澤
(1.西安石油大學(xué)地球科學(xué)與工程學(xué)院,陜西西安 710065;2.陜西省油氣成藏地質(zhì)學(xué)重點(diǎn)實(shí)驗(yàn)室,陜西西安 710065)
Forward平臺采用WellBase(Well Basic Analysis System Environment)作為數(shù)據(jù)底層,即WIS數(shù)據(jù),國內(nèi)大量的測井?dāng)?shù)據(jù)以WIS格式存放、處理和解釋。Forward平臺支持將多種數(shù)據(jù)解編為WIS格式的功能[1]。李忠新[2]詳細(xì)介紹了多種測井?dāng)?shù)據(jù)格式之間轉(zhuǎn)換技術(shù)的進(jìn)展及對未來的展望,胡振平[3]等編寫的測井格式軟件能對13個主流的測井?dāng)?shù)據(jù)格式進(jìn)行轉(zhuǎn)換。
在石油的勘探開發(fā)中,往往涉及到幾百個乃至上千個WIS文件的處理[4,5],前人主要針對不同測井?dāng)?shù)據(jù)格式之間的轉(zhuǎn)換[3]和WIS測井?dāng)?shù)據(jù)中各種二維通道數(shù)據(jù)的格式轉(zhuǎn)換[1]。WIS文件中的解釋成果表數(shù)據(jù)也是很重要的測井?dāng)?shù)據(jù)之一,F(xiàn)orward平臺本身提供了從WIS文件中獲取解釋成果表的功能,但是每次只能手動獲取一口井的解釋成果表,每口井保存為一個ASCII格式文檔,且無法轉(zhuǎn)換為更適合處理數(shù)據(jù)的EXCEL格式文檔,這給項(xiàng)目中數(shù)據(jù)處理帶來了不便。雖然張宮[1]編寫的軟件也能從WIS文件中獲取解釋成果表,但是也是每次只能手動獲取一口井的解釋成果表。本文利用VB語言在Visual Basic 6.0平臺上編寫了一個軟件,該軟件能從多個WIS文件中批量獲取ASCII格式的解釋成果表,從ASCII格式的解釋成果表中獲取指定數(shù)據(jù)列并轉(zhuǎn)換為適合數(shù)據(jù)處理的EXCEL格式,并可將所有井的EXCEL數(shù)據(jù)合并到一張EXCEL表格中。通過這個軟件,可以很方便地從多個WIS文件中批量解析出解釋成果表,極大地方便了科研工作者。
WIS數(shù)據(jù)文件由文件頭、對象入口記錄和對象數(shù)據(jù)三部分組成。
WIS數(shù)據(jù)文件的標(biāo)識為從文件偏移值為零處開始的長度為10個字節(jié)的字符。
WIS數(shù)據(jù)文件的頭結(jié)構(gòu)緊接文件標(biāo)識,描述WIS文件的公共信息,其數(shù)據(jù)結(jié)構(gòu)如表1所示。
表1 WIS文件頭信息存放方式
WIS數(shù)據(jù)文件的對象入口描述了每個對象的公共信息,其開始位置在頭結(jié)構(gòu)中給出。每個對象的描述信息前后相連,其數(shù)據(jù)結(jié)構(gòu)如表2所示。
表 2 WIS對象入口描述信息存放方式
WIS數(shù)據(jù)文件共存放三種類型的對象,分別為通道對象(Channel Object)、表對象(Table Object)和流對象(Stream Object)。通道對象一般用來存放采集數(shù)據(jù)和處理結(jié)果(如測井曲線);表對象用來存放二維表數(shù)據(jù)(解釋結(jié)論);流對象用來存放二進(jìn)制數(shù)據(jù)塊(如解釋參數(shù),用戶數(shù)據(jù)),開始為4個字節(jié)的無符號長整型數(shù),記錄流數(shù)據(jù)的長度,緊接著為該流對象的二進(jìn)制數(shù)據(jù),且流對象數(shù)據(jù)的具體存儲格式由對象的子屬性決定。解釋成果表為流對象數(shù)據(jù),本文只關(guān)注流對象的數(shù)據(jù)存儲方式。
弄清楚WIS文件標(biāo)識、文件頭、對象入口及流對象的存儲格式后,就可以在Visual Basic 6.0平臺編寫程序批量獲取所有井的解釋成果表。
使用“Scripting.FileSystemObject”對象的CreateFolder方法來獲取保存WIS文件路徑中的所有WIS文件,使用For循環(huán)及Open函數(shù)遍歷并打開所有WIS文件,根據(jù)WIS文件格式讀取流對象,判斷對象名稱是否為“RPT_OG_REST”來確定該流對象是否為需要的解釋成果表,以確定是否應(yīng)該讀取此流對象。
如果流對象名為“RPT_OG_REST”且子屬性為1,則該流對象為ASCII格式的解釋成果表數(shù)據(jù)。使用“Scripting.FileSystemObject”對象的CreateTextFile方法根據(jù)井名創(chuàng)建TXT文檔、Do循環(huán)遍歷每個字符和put方法將讀取的字符轉(zhuǎn)存到新建的TXT文檔中。
在Visual Basic 6.0平臺引用Microsoft Excel 16.0 Object Library和Microsoft Office 16.0 Object Library,就可以調(diào)用對EXCEL文檔讀寫的對象和函數(shù)(如Excel.Application、Workbooks、 Workbook、Workshheets、Worksheet和Cells等函數(shù))。
Function AnalysisWIS(WISFile)
Open WISFile For Binary As #1
Open SaveFile For Binary As #2
軟件運(yùn)行的流程如圖1所示。
圖1 軟件運(yùn)行流程
打開軟件,選擇WIS文件所在路徑和解析出的解釋成果表保存路徑,點(diǎn)擊獲取成果表按鈕,軟件會自動獲取WIS文件所在路徑下所有WIS文件的解釋成果表,并將成果表數(shù)據(jù)保存在所選擇的保存路徑下。
在軟件主界面菜單欄中選擇“數(shù)據(jù)處理-->TxtToExcel”,打開將解釋成果表轉(zhuǎn)換為EXCEL的功能界面,選擇解釋成果表所在路徑和轉(zhuǎn)換結(jié)果的保存路徑,點(diǎn)擊轉(zhuǎn)換按鈕,程序會自動獲取解釋成果表所在路徑下的所有解釋成果表,并將其轉(zhuǎn)換成EXCEL文件后保存在所選擇的保存路徑下。
軟件會在所選擇保存轉(zhuǎn)換結(jié)果的路徑下新建ErrTxt、Excel和MeanTxt三個文件夾。其中,文件夾ErrTxt存放無法轉(zhuǎn)換或轉(zhuǎn)換出錯的解釋成果表的復(fù)件,文件夾Excel存放轉(zhuǎn)換成功的EXCEL文件,文件夾MeanTxt存放TXT格式的解釋成果表。文件夾Excel中名稱為“All.xlsx”的文件保存轉(zhuǎn)換出來的全部解釋成果表。
本軟件解決了Forward軟件中測井?dāng)?shù)據(jù)格式轉(zhuǎn)換器不能批量獲取解釋成果表的問題,可高效地、準(zhǔn)確地獲取解釋成果表,極大地方便了石油科研工作者;同時該軟件還能將文本格式的解釋成果表轉(zhuǎn)換為EXCEL格式的數(shù)據(jù),并獲取指定的特征數(shù)值;而且能在XP系統(tǒng)及其以上版本操作系統(tǒng)上運(yùn)行,兼容性好。