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