周 露,尹太舉,張 琪
(1.長江大學(xué) 油氣資源與勘探技術(shù)教育部重點實驗室,湖北荊州 434023;2.塔里木油田公司天然氣事業(yè)部,新疆庫爾勒 431000)
在地質(zhì)分析工作中,需要建立大量的各種屬性模型以供參考,如果僅僅只是利用普通的繪圖軟件,建立屬性模型會浪費大量的時間和人力。隨著計算機技術(shù)的發(fā)展,Microsoft提供了一種 Automation技術(shù),使用戶可以借助多種編程語言來實現(xiàn)自動化過程。作者在本文中研究了 SurferAutomation技術(shù),并與VB編程語言結(jié)合,實現(xiàn)模型自動建立功能。
Automation技術(shù)是 Microsoft提供和建議使用的新型的數(shù)據(jù)訪問接口 ADO(ActiveXDataObjects)的具體實現(xiàn),它提供了一種不同程序模塊之間互相操作的規(guī)范,允許一個應(yīng)用程序外部控制另一個應(yīng)用程序。應(yīng)用程序暴露出來的對象稱為自動化對象 (AutomationObject),外部用戶程序可以通過使用這些對象的屬性 (Properties)和方法 (Method),達到實現(xiàn)控制該應(yīng)用程序的目的。所有的對象組成一個層狀結(jié)構(gòu),最高層是 Application對象,其它對象都是Application的子對象。程序員可以在各種支持 Automation的開發(fā)環(huán)境下,方便地訪問ADO對象 ,如 VisualBasic、VisualC++、VisualJ++及Delphi等。目前,在地質(zhì)工作中,常用的繪圖軟件Surfer8.0和 AutoCADR14.0均支持 Automation技術(shù)[2]。
同樣,在自動化技術(shù)方面,MicrosoftofficeExcel也提供了各種開發(fā)環(huán)境以實現(xiàn)數(shù)據(jù)處理的自動化,如 VisualBasic、VisualC++。利用 Excel2003的“宏”功能,可以很好地進行數(shù)據(jù)處理?!昂辍笔侵敢幌盗?Excel能夠執(zhí)行的 VBA(VisualBasicFor Application)語句,存儲于 VisualBasic模塊中,這些語句和函數(shù)組合在一起,形成了一個單獨的命令,以實現(xiàn)任務(wù)執(zhí)行的自動化。在地質(zhì)資料的整理中,能夠快捷的進行數(shù)據(jù)處理,節(jié)約大量的時間。
Automation技術(shù)與Microsoft“宏”技術(shù)擁有同樣的開發(fā)環(huán)境,即一種面向?qū)ο蟮木幊陶Z言,其語法比較簡單,容易理解和掌握,開發(fā)數(shù)控編程的周期短。計算機的配置也較簡單,能較好地滿足自動編程的要求。而二種技術(shù)又是基于不同的軟件,實現(xiàn)不同功能且擁有各自優(yōu)、缺點的自動化技術(shù)。VBA是針對特定的應(yīng)用程序進行開發(fā)的,用簡短的代碼就能實現(xiàn)復(fù)雜的功能,它支持可視化的編程環(huán)境,但不能單獨個別執(zhí)行,只能被 Office程序所調(diào)用。而 Automation技術(shù)使用菜單和按鈕圖標(biāo),繪圖簡單易學(xué),用戶界面和通用性能好。
Surfer軟件是美國 GoldenSoftware公司研制的基于Windows系列操作系統(tǒng)的科學(xué)繪圖軟件,具有強大的數(shù)據(jù)處理和繪圖功能,被廣泛地用于地質(zhì)和地球物理等諸多領(lǐng)域[5]。從 Surfer7.0開始,軟件提供了 Automation技術(shù),下面是 Surfer運用 Automation技術(shù)實現(xiàn)自動化的過程概述。
(1)數(shù)據(jù)準備。由于 Surfer軟件是個分析功能不算強大的軟件,所以用于建立各種模型的數(shù)據(jù)均要從外部提取出來,如地層對比結(jié)果、砂體解釋結(jié)論、砂體物性數(shù)據(jù)、斷層分布等。
(2)自動化實現(xiàn)。首先導(dǎo)入數(shù)據(jù)文件和空白邊界文件,然后運用合適的插值方法對數(shù)據(jù)進行網(wǎng)格化,之后對網(wǎng)格文件進行空白屏蔽,生成空白屏蔽后的等值線模型,同時計算出屬性數(shù)據(jù)的體積和面積,最后實現(xiàn)等值線模型和底圖的疊加,輸出模型如圖 1所示。
(3)VB調(diào)用 Surfer對象的方法[3]。首先要創(chuàng)建 Surfer的應(yīng)用 (Application)對象,通過 Create Object或 Get Object函數(shù)來實現(xiàn),它創(chuàng)建并返回一個對ActiveX對象的引用。如:
Dim Surfer Appas Object//聲明一個對象 (Ob
ject類型 )變量
Set Surfer App=Create Object(“surfer.Application”)//用 Create Object函數(shù)創(chuàng)建對象
Set Surfer App=Get Object(“surfer.Application”)//用 Get Objec函數(shù)創(chuàng)建對象
然后使用這些對象包含的各種屬性和方法,來實現(xiàn)對 Surfer的調(diào)用。Application對象提供了二個重要集合 Documents和Window,通過它們來訪問次一級的對象。如:
圖1 自動化實現(xiàn)流程Fig.1 The chartshowingtheautomatedprocesses
Set Doc=Surfer App.Documents//變量獲取
Documents Collection
通過此對象提供的“Add”方法,可以訪問更深一層次的對象。如:
Setplot=Doc.Add(Srf Doc Plot)//變量獲取
Documents Collection
用這種方式就可以調(diào)用 Surfer里面的每個對象,調(diào)用其方法和設(shè)置其屬性。
根據(jù)前面介紹的 VB調(diào)用 Surfer對象的方法,實現(xiàn)對象的分級調(diào)用和屬性設(shè)置。下面給出模型自動化建立的具體代碼及其在油藏描述中的應(yīng)用。
Set Map Frame=Shapes.Add Post Map(Data-FileName:="d:sample* * *.csv",xCol:=1,yCol:=2,LabCol:=i)//底圖的生成,X坐標(biāo)取第
1列,Y坐標(biāo)取第 2列,標(biāo)注的內(nèi)容取第 i列標(biāo)注屬性設(shè)置:
SetPost Map=Map Frame.Overlays(1)
PostMap.LabelPos=3//設(shè)置標(biāo)注的位置
DimLabel Format As Object
Dim SymbolAs Object
Set Label Font=Post Map.Label Font
LabelFont.Size=2//設(shè)置標(biāo)注的大小
Set Symbol=PostMap.Symbol
Symbol.Size=0.05//設(shè)置符號的大小
各種標(biāo)注疊加起來,設(shè)置合適的屬性參數(shù),結(jié)合屬性模型可以起到很好提示和標(biāo)注的作用。
數(shù)據(jù)網(wǎng)格化。運用克里金插值方法“srf Kriging”對沒井控制區(qū)域進行預(yù)測插值。
Surfer App.Grid Data(DataFile:="d:sample***.csv",xCol:=1,yCol:=2,zCol:=Input Column(i), Algorithm:=srf Kriging, Show Report:=False,OutGrid:=Output Gridname(i),Out-Fmt:=srfGrid FmtS7)
空白屏蔽。根據(jù)斷層的分布和井位的控制,運用 Surfer數(shù)字化的功能獲得一個空白文件,再將空白文件和網(wǎng)格文件疊合起來實現(xiàn)屏蔽所選空白區(qū)域的功能。
Surfer App.GridBlank(In Grid:=Output Gridname(i),BlankFile:="d:sample* * *.bln",OutGrid:=Output Gridname(i),OutFmt:=srf Grid-FmtS7)
基于前面生成的網(wǎng)格數(shù)據(jù)文件,生成等值線模型。
Set Contour Map Frame=Plot.Shapes.Add Contour Map(Output Gridname(i))
等值線屬性設(shè)置:
Contour Map.Fill Contours=True//設(shè)置等值線填充可視
Contour Map.Smooth Contours=4//設(shè)置等值線平滑程度為 4,對應(yīng)位高
Contour Map.Label Label Dist=100//設(shè)定標(biāo)號與標(biāo)號間距為 100
Contour Map.Label Edge Dist=0.1 //設(shè)定標(biāo)號與圖形邊緣間距為 0.1
Set Contour Levels=Contour Map.Levels//設(shè)置等值線等級,使用 Contour Levels代替 Contour
Map.Levels
Contour Map.BlankLine.ForeColor= srf Color-Brown
Contour Levels.Auto Generate(MinLevel:=0,MaxLevel:=16,Interval:=2)//將等值線的顯示
范圍設(shè)置為最小值 0,最大值 16,間距 2單個屬性模型在油藏描述中的的應(yīng)用:
(1)砂體等厚模型。根據(jù)小層砂體等厚模型,可以直觀地看到砂體的平面展布特征。通過分析研究區(qū)物源方向,結(jié)合小層含油面積模型,就可以指導(dǎo)沉積微相模型的建立,預(yù)測有利儲層的沉積微相,指導(dǎo)地質(zhì)開發(fā)。
(2)含油面積模型。通過小層含油面積模型,可以了解小層的油砂體分布特征。結(jié)合構(gòu)造模型指導(dǎo)小層含油面積模型的修改和完善,為油藏數(shù)值模擬提供地質(zhì)資料。
(3)物性模型。滲透率模型可以結(jié)合砂體等厚模型,對儲層的平面非均質(zhì)性進行評價。
圖2 VI1-5小層含油面積模型Fig.2 The oil-bearingareamodel of VI1-5layer
在單個模型的基礎(chǔ)上,疊加多個屬性模型,只需定義多個對象存放屬性數(shù)據(jù),用如下代碼 (同上)進行數(shù)據(jù)的網(wǎng)格化,然后將網(wǎng)格化后生成的各種模型疊加起來,即可實現(xiàn)模型的疊加。
SurferApp.Grid Data(DataFile:xCol:=,yCol:=,zCol:=,Algorithm:,Show Report:,OutGrid:=,OutFmt:=)//屬性數(shù)據(jù)的網(wǎng)格化
Set Contour Map Frame=Plot.Shapes.Add ContourMap()//等值線模型的生成
小層砂體等厚模型與小層含油面積模型的疊加,可以用于儲量動用情況分析和儲量評價。
圖3 VI1-5小層砂體和油砂體邊界模型Fig.3 The boundary of sandbody and oil-sand boundary model of VI1-5layer
以生成的網(wǎng)格數(shù)據(jù)面為頂面,Z為起始面,運用 Surfer提供的擴展辛普生 3/8法則 (Extended Simpson’s3/8Rule),來實現(xiàn)面積和體積的計算。代碼如下:
Surfer App.Grid Volume(Upper:,Lower:,p Results:,Show Report:)//Upper為供計算的網(wǎng)格數(shù)據(jù)
的路徑和名稱,Lower設(shè)置起始面的值
根據(jù)砂體的面積大小,統(tǒng)計不同類型砂體的比例,可以對儲層進行分類和評價。同時,利用油砂體的體積,結(jié)合研究區(qū)的各種儲量參數(shù),可以計算出油氣地質(zhì)儲量,并對其進行評價。
在地質(zhì)模型屬性數(shù)據(jù)網(wǎng)格化的過程中,有以下幾點問題需要注意。
(1)插值方法的選擇。Surfer8.0提供了反距離加權(quán)插值法、克里金插值法、最小曲率法、改進謝別德法、自然鄰點插值法、最近鄰點插值法、多元回歸法等十二種插值方法。其中,克里金插值法適用于空間連續(xù)性變化的屬性非常不規(guī)制的情況,根據(jù)儲層的非均質(zhì)性的特點,可以選擇克里金插值方法。
(2)相控建模。儲層的非均質(zhì)性多受控于儲層的物源方向,在 Surfer中是通過改變非均質(zhì)性的方向來實現(xiàn)相控建模的。改變非均質(zhì)性的方法是調(diào)整克里金插值時的變差函數(shù)模型,其中有三個參數(shù)可以設(shè)置,即模型的類型、非均質(zhì)方向和非均質(zhì)橢圓長短軸的相對比例。
(3)砂體尖滅線的確定。在 Surfer中預(yù)測的尖滅線取的是井點的零點位置,生成的尖滅線通過尖滅的井點如圖 4(a),而地質(zhì)作圖要求過井距的一半。所以將尖滅井位的值做適當(dāng)?shù)男薷?如鄰井值為 1m,尖滅井則可改了 -1m。圖 4(b)是對圖 4(a)的數(shù)據(jù)進行修改后的結(jié)果。
圖4 柴達木盆地尕斯庫勒油田上盤VI1-5小層砂體等厚模型Fig.4 The Isopach model of VI1-5 layer and the hanging wall in gas hure oilfield of the Qaidam Basin
從圖 4(b)中可以看到,將尖滅井?dāng)?shù)據(jù)修改后砂體連續(xù)性沒有圖 4(a)的好。圖 4(a)的砂體厚度模型過于理想,而尖滅井處理后建立的模型,更加符合實際情況。
(4)沒井控制區(qū)域的處理。在 Surfer成圖過程中,根據(jù)數(shù)據(jù)點的縱坐標(biāo)、橫坐標(biāo)中的最大和最小值,確定出一個矩形區(qū)域。并且在這個矩形區(qū)域里面,對于沒有井控制的區(qū)域進行克里金插值預(yù)測,但是部份網(wǎng)格處由于預(yù)測的結(jié)果偏差較大或不需要預(yù)測,并對體積計算的結(jié)果有影響,所以需將這部分區(qū)域的成圖信息除掉。
圖 5是運用空白文件屏蔽的方法,對不需要的區(qū)域進行屏蔽的效果。
圖5 VI1-5小層經(jīng)過屏蔽處理后的等值線模型Fig.5 The contour model of VI1-5 layer after the shielding treatment
區(qū)域空白屏蔽文件是根據(jù)斷層分布和井網(wǎng)控制而確定的,在圖 5中南向和東向是斷層分布,北向為沒有井控制的區(qū)域。
針對長井段油藏地質(zhì)模型的建立,運用 Surfer Automation技術(shù)和基于 Surfer的 VB語言編程方法,實現(xiàn)批量自動化地質(zhì)模型的建立,同時計算輸出油砂體的面積和體積。與傳統(tǒng)手工建立模型的方法相比,它大大提高了工作效率,保證了與手工建模的一致性,而且避免了在手工建模時的一些人為誤差。以柴達木盆地尕斯庫勒油田上盤為例,該技術(shù)完成了 179個小層的砂體等厚模型、油砂體模型等各種屬性模型的建立,以供區(qū)域的油藏描述分析和參考。另外,該技術(shù)存在一些缺陷,如批量一次性建模不能超過一百個等,有待研究和完善。
[1] 尹太舉,張昌民.利用 Surfer建立儲層地質(zhì)模型 [J].石油天然氣學(xué)報,2005,27(6):719.
[2] 張瑩,張勝業(yè),昌彥君.Surfer Automation技術(shù)在電法資料成圖中的應(yīng)用[J].工程地球物理學(xué)報,2005,2(1):56.
[3] 謝興兵,胡文寶,珠清禮.在 Visual Basic應(yīng)用程序中調(diào)用 Surfer內(nèi)置對象技術(shù)探討[J].江漢石油學(xué)院學(xué)報,2004,(26):331.
[4] 韓奎峰,孟峰.VB6.0和 Surfer Automation技術(shù)開發(fā)土方量計算程序[J].巖土工程技術(shù),2007,1(21):7.
[5] 楊金玉,張訓(xùn)華,徐世浙,等.Surfer和 Grapher在地球物理位場延拓可視化軟件開發(fā)中的應(yīng)用[J].物探化探計算技術(shù),2007,29(3):264.
[6] 陳永,張建海,劉會娟,等.基于 Surfer的有限元后處理等值線圖批處理程序開發(fā)[J].物探化探計算技術(shù),2005,27(2):181.
[7] MICROSOFTCORPORATION,微軟 (中國 )有限公司.Microsoft VisualBasic6.0中文版程序員指南[M].北京:北京希望電腦公司,1998.
[8] 唐建光,趙連鋒,鄭圻森.Delphi與 Surfer的接口技術(shù)及其應(yīng)用[J].物探化探計算技術(shù),2002,24(4):370.
[9] 李紹榮.SURFER軟件圖形數(shù)據(jù)的進一步處理和利用[J].物探化探計算技術(shù),1997,19(2):174.
[10]張娟,周秉榮,蘇獻鋒.VB和 Surfer實現(xiàn)氣象等值線的自動繪圖[J].青海氣象,2008,(3):47.
[11]王成錫,張明華.MapInfo和 Surfer聯(lián)合二次開發(fā)在區(qū)域重力信息系統(tǒng)中的應(yīng)用[J].物探與化探,2008,32(4):445.
[12]李文杰,李軍峰,孟慶敏,等.運用 SURFERTM軟件繪制航空物探平面剖面圖[J].物探化探計算技術(shù),2007,29(4):363.
[13]劉浩軍.航空物探平剖圖自動繪制的可視化處理[J].物探與化探,2004,28(2):147.
[14]李武勝,謝丹,涂述培,等.基于數(shù)據(jù)庫的混合編程接口技術(shù)在地質(zhì)繪圖中的應(yīng)用[J].石油天然氣學(xué)報,2008,30(1):240.
[15]白世彪,陳曄,王建,等.值線繪圖軟件 SURFER7.0中九種插值法介紹[J].物探化探計算技術(shù),2002,24(2):157.