徐勝利,石 晉,江 明
(中國石油遼河油田勘探開發(fā)研究院,遼寧 盤錦 124010)
構(gòu)造等高線圖作為地質(zhì)平面圖件的一種,按一定的比例和科學(xué)投影系統(tǒng)繪制,用等高線、斷層線等來定量、醒目地反映地下構(gòu)造,是油氣勘探開發(fā)過程中需要經(jīng)常編繪的重要圖件。[1]然而在遼河油田當(dāng)前的地質(zhì)研究工作中,利用專業(yè)軟件在繪制構(gòu)造等高線圖時(shí)所需數(shù)據(jù)資料仍需進(jìn)行專門的編輯、加載及格式轉(zhuǎn)換,準(zhǔn)備時(shí)間長且操作煩瑣。另外,在利用計(jì)算機(jī)進(jìn)行研究軟件繪圖功能開發(fā)時(shí),不僅需要根據(jù)讀取的大量數(shù)據(jù)繪制構(gòu)造圖件,還需考慮到用戶對(duì)圖件將進(jìn)行的各類編輯操作,以便進(jìn)行細(xì)致便捷的研究?;诖?,本文提出了從地質(zhì)數(shù)據(jù)庫中直接讀取數(shù)據(jù)的一種專業(yè)軟件,并利用雙緩沖技術(shù)實(shí)現(xiàn)構(gòu)造等高線圖的繪制方法。
經(jīng)過對(duì)系統(tǒng)功能應(yīng)用方式、應(yīng)用對(duì)象的綜合分析,整個(gè)系統(tǒng)采用C/S(客戶/服務(wù)器)結(jié)構(gòu)應(yīng)用的實(shí)現(xiàn)方式。數(shù)據(jù)層采用Oracle 11g 作為地質(zhì)數(shù)據(jù)庫服務(wù)器,負(fù)責(zé)存放并管理遼河油田靜態(tài)地質(zhì)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)和地質(zhì)模型數(shù)據(jù);C/S 結(jié)構(gòu)下的客戶層采用Oracle 提供的OLE DB 驅(qū)動(dòng)程序方式與地質(zhì)數(shù)據(jù)庫服務(wù)器交互,客戶端應(yīng)用軟件采用C++技術(shù)進(jìn)行實(shí)現(xiàn)來建立客戶端軟件應(yīng)用系統(tǒng)。
為使地質(zhì)綜合研究軟件能直接調(diào)取地質(zhì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行構(gòu)造圖繪制,必須結(jié)合地質(zhì)研究業(yè)務(wù)對(duì)庫中原有數(shù)據(jù)表進(jìn)行模型結(jié)構(gòu)調(diào)整,比如通過調(diào)整PICK_SURF_NAME(地層代碼數(shù)據(jù)表)、STRAT_SCHEME_NAME(分層方案名稱數(shù)據(jù)表)、STRAT_SCHEME(分層方案(模式)數(shù)據(jù)表)、PICK_DATA(地質(zhì)分層數(shù)據(jù)表)。使調(diào)整后地質(zhì)分層數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了不同研究項(xiàng)目可以有不同的分層方案和同一個(gè)研究項(xiàng)目可以有不同的分層方案的應(yīng)用需求,便于研究人員不同研究思路的表達(dá)。解析井位平臺(tái)、井筒平面投影、井別圖標(biāo)及井號(hào)標(biāo)識(shí)的圖形要素;解析斷層平面投影、地層邊界平面投影的圖形要素;解析地質(zhì)斷塊、構(gòu)造網(wǎng)格、構(gòu)造等深線的圖形要素等。將這些要素解析成可單獨(dú)矢量化繪制和任意組合的基本圖元形式進(jìn)行表達(dá)和存儲(chǔ)[2],做到圖形元素的完全矢量化和快速繪制。經(jīng)過調(diào)整的數(shù)據(jù)結(jié)構(gòu)同地質(zhì)綜合研究軟件內(nèi)部數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了統(tǒng)一,并使二者采用統(tǒng)一的數(shù)據(jù)采集接口。
由于對(duì)地質(zhì)數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行模型結(jié)構(gòu)調(diào)整,繪制圖件時(shí)構(gòu)造圖中的井位、井斜、分層等數(shù)據(jù)直接從數(shù)據(jù)庫中調(diào)取,地質(zhì)構(gòu)造圖中修改的斷層、等高線、分層數(shù)據(jù)等需要回寫到地質(zhì)模型數(shù)據(jù)庫中,因此,需要改寫對(duì)應(yīng)的存儲(chǔ)過程、數(shù)據(jù)處理函數(shù),便于繪圖模塊進(jìn)行數(shù)據(jù)快速求取和回寫操作。共優(yōu)化完善存儲(chǔ)過程及處理函數(shù)33 個(gè),例如:SEL_PR_BLOCK_NAME 是讀取斷塊名稱數(shù)據(jù)存儲(chǔ)過程。
end SEL_PR_BLOCK_NAME;為了使軟件查詢數(shù)據(jù)更方便,也為了提高軟件的可移植性,并保證數(shù)據(jù)庫中原始版本數(shù)據(jù)的安全,本軟件系統(tǒng)設(shè)計(jì)了應(yīng)用只讀視圖,例如:V_COORD_CTRLPOINT_WELL 是讀取井控制點(diǎn)數(shù)據(jù)應(yīng)用視圖。
雙緩沖技術(shù)(Double buffering)是在屏幕上進(jìn)行圖形顯示以外,在內(nèi)存中也有圖形在繪制。[3]在構(gòu)造等高線圖繪制時(shí),首先在內(nèi)存中創(chuàng)建緩沖圖像,在緩沖圖像中繪制各種圖形元素,然后再一次性地將內(nèi)存中的圖形復(fù)制到屏幕上去,具體流程如圖1 所示。
圖1 雙緩沖繪制流程圖
(1)首先通過接口程序從地質(zhì)數(shù)據(jù)庫中求取繪制圖件所需的坐標(biāo)、井斜、分層等基礎(chǔ)數(shù)據(jù)或圖形數(shù)據(jù),然后在內(nèi)存中創(chuàng)建位圖圖像MemBitMap,并建立與顯示屏幕兼容的MemDC,將位圖圖像選入MemDC,將MemDC 背景擦除干凈后,在MemDC中繪制全部圖像,初次將MemDC 圖像復(fù)制到屏幕。
(2)判斷圖像局部是否發(fā)生變化(比如用戶進(jìn)行的修改編輯操作),如果沒有變化,將MemDC 圖像復(fù)制到屏幕,跳轉(zhuǎn)至流程(3)。如果局部發(fā)生變化,接著判斷是否圖形元素被頻繁修改,是則清除MemDC 中圖像內(nèi)容,在MemDC 中繪制未修改圖元,將MemDC 圖像復(fù)制到屏幕后進(jìn)入流程(3);如果否,清除MemDC 中圖像內(nèi)容,重新在MemDC 中繪制整個(gè)圖像后再復(fù)制到屏幕,進(jìn)入流程(3)。
(3)判斷圖元是否被頻繁修改,如果否,退出該流程;如果被頻繁修改,則首先計(jì)算所有修改圖元的矩形范圍,再刷新屏幕中修改的矩形范圍,最后在矩形范圍內(nèi)重新繪制修改圖元,退出該流程。
將本方法應(yīng)用于地質(zhì)綜合研究軟件構(gòu)造等高線圖繪制系統(tǒng)后,應(yīng)用效果良好。首先實(shí)現(xiàn)了遼河油田靜態(tài)地質(zhì)數(shù)據(jù)庫作為地質(zhì)構(gòu)造圖繪制的數(shù)據(jù)源,節(jié)省了數(shù)據(jù)搜集整理的時(shí)間,比如1 000 口井的基礎(chǔ)資料加載,由實(shí)施前的大于15 個(gè)工作日縮短至5 分鐘以內(nèi),給研究人員帶來了極大的便利。此外,在模塊中采用雙緩沖技術(shù)繪圖后,用戶在構(gòu)造等高線圖編輯后刷新時(shí),屏幕界面不會(huì)出現(xiàn)混亂,也不會(huì)出現(xiàn)閃屏現(xiàn)象,同時(shí)也提高了繪制速率,很好地實(shí)現(xiàn)了地質(zhì)圖件繪制功能所要求的顯示效果。例如:當(dāng)用戶需要繪制一張1 000 口井的構(gòu)造等高線圖,傳統(tǒng)模式需約40 秒,應(yīng)用本方法后僅需要10 秒,響應(yīng)時(shí)間節(jié)省約2/3。
本文提供了基于地質(zhì)數(shù)據(jù)庫實(shí)現(xiàn)構(gòu)造等高線圖的雙緩沖繪制方法,解決了現(xiàn)有構(gòu)造等高線圖中人工加載數(shù)據(jù)的問題,縮短了地質(zhì)研究的周期;使用雙緩沖技術(shù)來實(shí)現(xiàn)圖件的快速繪制以及編輯后的高效刷新,實(shí)現(xiàn)了高精度成圖的目的,滿足了現(xiàn)有油氣勘探開發(fā)的應(yīng)用需求。