周 露,尹太舉,張 琪
(1.長江大學 油氣資源與勘探技術教育部重點實驗室,湖北荊州 434023;2.塔里木油田公司天然氣事業部,新疆庫爾勒 431000)
在地質分析工作中,需要建立大量的各種屬性模型以供參考,如果僅僅只是利用普通的繪圖軟件,建立屬性模型會浪費大量的時間和人力。隨著計算機技術的發展,Microsoft提供了一種 Automation技術,使用戶可以借助多種編程語言來實現自動化過程。作者在本文中研究了 SurferAutomation技術,并與VB編程語言結合,實現模型自動建立功能。
Automation技術是 Microsoft提供和建議使用的新型的數據訪問接口 ADO(ActiveXDataObjects)的具體實現,它提供了一種不同程序模塊之間互相操作的規范,允許一個應用程序外部控制另一個應用程序。應用程序暴露出來的對象稱為自動化對象 (AutomationObject),外部用戶程序可以通過使用這些對象的屬性 (Properties)和方法 (Method),達到實現控制該應用程序的目的。所有的對象組成一個層狀結構,最高層是 Application對象,其它對象都是Application的子對象。程序員可以在各種支持 Automation的開發環境下,方便地訪問ADO對象 ,如 VisualBasic、VisualC++、VisualJ++及Delphi等。目前,在地質工作中,常用的繪圖軟件Surfer8.0和 AutoCADR14.0均支持 Automation技術[2]。
同樣,在自動化技術方面,MicrosoftofficeExcel也提供了各種開發環境以實現數據處理的自動化,如 VisualBasic、VisualC++。利用 Excel2003的“宏”功能,可以很好地進行數據處理。“宏”是指一系列 Excel能夠執行的 VBA(VisualBasicFor Application)語句,存儲于 VisualBasic模塊中,這些語句和函數組合在一起,形成了一個單獨的命令,以實現任務執行的自動化。在地質資料的整理中,能夠快捷的進行數據處理,節約大量的時間。
Automation技術與Microsoft“宏”技術擁有同樣的開發環境,即一種面向對象的編程語言,其語法比較簡單,容易理解和掌握,開發數控編程的周期短。計算機的配置也較簡單,能較好地滿足自動編程的要求。而二種技術又是基于不同的軟件,實現不同功能且擁有各自優、缺點的自動化技術。VBA是針對特定的應用程序進行開發的,用簡短的代碼就能實現復雜的功能,它支持可視化的編程環境,但不能單獨個別執行,只能被 Office程序所調用。而 Automation技術使用菜單和按鈕圖標,繪圖簡單易學,用戶界面和通用性能好。
Surfer軟件是美國 GoldenSoftware公司研制的基于Windows系列操作系統的科學繪圖軟件,具有強大的數據處理和繪圖功能,被廣泛地用于地質和地球物理等諸多領域[5]。從 Surfer7.0開始,軟件提供了 Automation技術,下面是 Surfer運用 Automation技術實現自動化的過程概述。
(1)數據準備。由于 Surfer軟件是個分析功能不算強大的軟件,所以用于建立各種模型的數據均要從外部提取出來,如地層對比結果、砂體解釋結論、砂體物性數據、斷層分布等。
(2)自動化實現。首先導入數據文件和空白邊界文件,然后運用合適的插值方法對數據進行網格化,之后對網格文件進行空白屏蔽,生成空白屏蔽后的等值線模型,同時計算出屬性數據的體積和面積,最后實現等值線模型和底圖的疊加,輸出模型如圖 1所示。
(3)VB調用 Surfer對象的方法[3]。首先要創建 Surfer的應用 (Application)對象,通過 Create Object或 Get Object函數來實現,它創建并返回一個對ActiveX對象的引用。如:
Dim Surfer Appas Object//聲明一個對象 (Ob
ject類型 )變量
Set Surfer App=Create Object(“surfer.Application”)//用 Create Object函數創建對象
Set Surfer App=Get Object(“surfer.Application”)//用 Get Objec函數創建對象
然后使用這些對象包含的各種屬性和方法,來實現對 Surfer的調用。Application對象提供了二個重要集合 Documents和Window,通過它們來訪問次一級的對象。如:

圖1 自動化實現流程Fig.1 The chartshowingtheautomatedprocesses
Set Doc=Surfer App.Documents//變量獲取
Documents Collection
通過此對象提供的“Add”方法,可以訪問更深一層次的對象。如:
Setplot=Doc.Add(Srf Doc Plot)//變量獲取
Documents Collection
用這種方式就可以調用 Surfer里面的每個對象,調用其方法和設置其屬性。
根據前面介紹的 VB調用 Surfer對象的方法,實現對象的分級調用和屬性設置。下面給出模型自動化建立的具體代碼及其在油藏描述中的應用。
Set Map Frame=Shapes.Add Post Map(Data-FileName:="d:sample* * *.csv",xCol:=1,yCol:=2,LabCol:=i)//底圖的生成,X坐標取第
1列,Y坐標取第 2列,標注的內容取第 i列標注屬性設置:
SetPost Map=Map Frame.Overlays(1)
PostMap.LabelPos=3//設置標注的位置
DimLabel Format As Object
Dim SymbolAs Object
Set Label Font=Post Map.Label Font
LabelFont.Size=2//設置標注的大小
Set Symbol=PostMap.Symbol
Symbol.Size=0.05//設置符號的大小
各種標注疊加起來,設置合適的屬性參數,結合屬性模型可以起到很好提示和標注的作用。
數據網格化。運用克里金插值方法“srf Kriging”對沒井控制區域進行預測插值。
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)
空白屏蔽。根據斷層的分布和井位的控制,運用 Surfer數字化的功能獲得一個空白文件,再將空白文件和網格文件疊合起來實現屏蔽所選空白區域的功能。
Surfer App.GridBlank(In Grid:=Output Gridname(i),BlankFile:="d:sample* * *.bln",OutGrid:=Output Gridname(i),OutFmt:=srf Grid-FmtS7)
基于前面生成的網格數據文件,生成等值線模型。
Set Contour Map Frame=Plot.Shapes.Add Contour Map(Output Gridname(i))
等值線屬性設置:
Contour Map.Fill Contours=True//設置等值線填充可視
Contour Map.Smooth Contours=4//設置等值線平滑程度為 4,對應位高
Contour Map.Label Label Dist=100//設定標號與標號間距為 100
Contour Map.Label Edge Dist=0.1 //設定標號與圖形邊緣間距為 0.1
Set Contour Levels=Contour Map.Levels//設置等值線等級,使用 Contour Levels代替 Contour
Map.Levels
Contour Map.BlankLine.ForeColor= srf Color-Brown
Contour Levels.Auto Generate(MinLevel:=0,MaxLevel:=16,Interval:=2)//將等值線的顯示
范圍設置為最小值 0,最大值 16,間距 2單個屬性模型在油藏描述中的的應用:
(1)砂體等厚模型。根據小層砂體等厚模型,可以直觀地看到砂體的平面展布特征。通過分析研究區物源方向,結合小層含油面積模型,就可以指導沉積微相模型的建立,預測有利儲層的沉積微相,指導地質開發。
(2)含油面積模型。通過小層含油面積模型,可以了解小層的油砂體分布特征。結合構造模型指導小層含油面積模型的修改和完善,為油藏數值模擬提供地質資料。
(3)物性模型。滲透率模型可以結合砂體等厚模型,對儲層的平面非均質性進行評價。

圖2 VI1-5小層含油面積模型Fig.2 The oil-bearingareamodel of VI1-5layer
在單個模型的基礎上,疊加多個屬性模型,只需定義多個對象存放屬性數據,用如下代碼 (同上)進行數據的網格化,然后將網格化后生成的各種模型疊加起來,即可實現模型的疊加。
SurferApp.Grid Data(DataFile:xCol:=,yCol:=,zCol:=,Algorithm:,Show Report:,OutGrid:=,OutFmt:=)//屬性數據的網格化
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
以生成的網格數據面為頂面,Z為起始面,運用 Surfer提供的擴展辛普生 3/8法則 (Extended Simpson’s3/8Rule),來實現面積和體積的計算。代碼如下:
Surfer App.Grid Volume(Upper:,Lower:,p Results:,Show Report:)//Upper為供計算的網格數據
的路徑和名稱,Lower設置起始面的值
根據砂體的面積大小,統計不同類型砂體的比例,可以對儲層進行分類和評價。同時,利用油砂體的體積,結合研究區的各種儲量參數,可以計算出油氣地質儲量,并對其進行評價。
在地質模型屬性數據網格化的過程中,有以下幾點問題需要注意。
(1)插值方法的選擇。Surfer8.0提供了反距離加權插值法、克里金插值法、最小曲率法、改進謝別德法、自然鄰點插值法、最近鄰點插值法、多元回歸法等十二種插值方法。其中,克里金插值法適用于空間連續性變化的屬性非常不規制的情況,根據儲層的非均質性的特點,可以選擇克里金插值方法。
(2)相控建模。儲層的非均質性多受控于儲層的物源方向,在 Surfer中是通過改變非均質性的方向來實現相控建模的。改變非均質性的方法是調整克里金插值時的變差函數模型,其中有三個參數可以設置,即模型的類型、非均質方向和非均質橢圓長短軸的相對比例。
(3)砂體尖滅線的確定。在 Surfer中預測的尖滅線取的是井點的零點位置,生成的尖滅線通過尖滅的井點如圖 4(a),而地質作圖要求過井距的一半。所以將尖滅井位的值做適當的修改,如鄰井值為 1m,尖滅井則可改了 -1m。圖 4(b)是對圖 4(a)的數據進行修改后的結果。

圖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)中可以看到,將尖滅井數據修改后砂體連續性沒有圖 4(a)的好。圖 4(a)的砂體厚度模型過于理想,而尖滅井處理后建立的模型,更加符合實際情況。
(4)沒井控制區域的處理。在 Surfer成圖過程中,根據數據點的縱坐標、橫坐標中的最大和最小值,確定出一個矩形區域。并且在這個矩形區域里面,對于沒有井控制的區域進行克里金插值預測,但是部份網格處由于預測的結果偏差較大或不需要預測,并對體積計算的結果有影響,所以需將這部分區域的成圖信息除掉。
圖 5是運用空白文件屏蔽的方法,對不需要的區域進行屏蔽的效果。

圖5 VI1-5小層經過屏蔽處理后的等值線模型Fig.5 The contour model of VI1-5 layer after the shielding treatment
區域空白屏蔽文件是根據斷層分布和井網控制而確定的,在圖 5中南向和東向是斷層分布,北向為沒有井控制的區域。
針對長井段油藏地質模型的建立,運用 Surfer Automation技術和基于 Surfer的 VB語言編程方法,實現批量自動化地質模型的建立,同時計算輸出油砂體的面積和體積。與傳統手工建立模型的方法相比,它大大提高了工作效率,保證了與手工建模的一致性,而且避免了在手工建模時的一些人為誤差。以柴達木盆地尕斯庫勒油田上盤為例,該技術完成了 179個小層的砂體等厚模型、油砂體模型等各種屬性模型的建立,以供區域的油藏描述分析和參考。另外,該技術存在一些缺陷,如批量一次性建模不能超過一百個等,有待研究和完善。
[1] 尹太舉,張昌民.利用 Surfer建立儲層地質模型 [J].石油天然氣學報,2005,27(6):719.
[2] 張瑩,張勝業,昌彥君.Surfer Automation技術在電法資料成圖中的應用[J].工程地球物理學報,2005,2(1):56.
[3] 謝興兵,胡文寶,珠清禮.在 Visual Basic應用程序中調用 Surfer內置對象技術探討[J].江漢石油學院學報,2004,(26):331.
[4] 韓奎峰,孟峰.VB6.0和 Surfer Automation技術開發土方量計算程序[J].巖土工程技術,2007,1(21):7.
[5] 楊金玉,張訓華,徐世浙,等.Surfer和 Grapher在地球物理位場延拓可視化軟件開發中的應用[J].物探化探計算技術,2007,29(3):264.
[6] 陳永,張建海,劉會娟,等.基于 Surfer的有限元后處理等值線圖批處理程序開發[J].物探化探計算技術,2005,27(2):181.
[7] MICROSOFTCORPORATION,微軟 (中國 )有限公司.Microsoft VisualBasic6.0中文版程序員指南[M].北京:北京希望電腦公司,1998.
[8] 唐建光,趙連鋒,鄭圻森.Delphi與 Surfer的接口技術及其應用[J].物探化探計算技術,2002,24(4):370.
[9] 李紹榮.SURFER軟件圖形數據的進一步處理和利用[J].物探化探計算技術,1997,19(2):174.
[10]張娟,周秉榮,蘇獻鋒.VB和 Surfer實現氣象等值線的自動繪圖[J].青海氣象,2008,(3):47.
[11]王成錫,張明華.MapInfo和 Surfer聯合二次開發在區域重力信息系統中的應用[J].物探與化探,2008,32(4):445.
[12]李文杰,李軍峰,孟慶敏,等.運用 SURFERTM軟件繪制航空物探平面剖面圖[J].物探化探計算技術,2007,29(4):363.
[13]劉浩軍.航空物探平剖圖自動繪制的可視化處理[J].物探與化探,2004,28(2):147.
[14]李武勝,謝丹,涂述培,等.基于數據庫的混合編程接口技術在地質繪圖中的應用[J].石油天然氣學報,2008,30(1):240.
[15]白世彪,陳曄,王建,等.值線繪圖軟件 SURFER7.0中九種插值法介紹[J].物探化探計算技術,2002,24(2):157.