佟 強(qiáng)
(大慶油田設(shè)計(jì)院有限公司,黑龍江 大慶 163712)
在油田產(chǎn)能規(guī)劃設(shè)計(jì)中,總圖管理與設(shè)計(jì)專業(yè)承擔(dān)站外系統(tǒng)區(qū)域總平面的編制工作,其中井位展繪是規(guī)劃方案設(shè)計(jì)中的重要部分,通過(guò)Excel表中的井位信息將井位展繪在電子版地形圖上,以便開(kāi)展產(chǎn)能項(xiàng)目方案規(guī)劃及工程設(shè)計(jì)的后續(xù)工作。(1)參見(jiàn)張雪琴:《敖南油田產(chǎn)能建設(shè)總圖設(shè)計(jì)》,《油氣田地面工程》2008年第1期。
目前,井位展繪的批量工作可基于CAD軟件和Excel VBA編寫腳本的方法實(shí)現(xiàn),但,在油田產(chǎn)能規(guī)劃中,總圖管理與設(shè)計(jì)工作主要面向電子版地形圖,線型數(shù)據(jù)量較多,在繪制區(qū)域總平面圖及匯報(bào)圖時(shí),偏重對(duì)色彩的選用及具有匯報(bào)性質(zhì)的圖紙?jiān)O(shè)計(jì),導(dǎo)致CAD軟件在打開(kāi)此類圖紙進(jìn)行設(shè)計(jì)工作時(shí)容易出現(xiàn)卡頓甚至未響應(yīng)等一系列問(wèn)題。(2)參見(jiàn)唐桂彬、李俊鋒、劉帥:《基于AutoCAD動(dòng)態(tài)塊和腳本文件的批量展點(diǎn)方法》,《地理空間信息》2016年第2期等。另一方面CAD軟件的批量井位展繪的操作是通過(guò)對(duì)Excel表中數(shù)據(jù)進(jìn)行復(fù)制,再粘貼到CAD命令中實(shí)現(xiàn),展繪的過(guò)程沒(méi)有實(shí)現(xiàn)CAD與Excel的實(shí)時(shí)關(guān)聯(lián),過(guò)度依賴手動(dòng)操作,容易出現(xiàn)數(shù)據(jù)丟失、錯(cuò)漏、異常等情況。為了提高工作效率、保證數(shù)據(jù)安全,提出一種基于Microstation二次開(kāi)發(fā)的設(shè)計(jì)方法,通過(guò)Microstation VBA語(yǔ)言編程環(huán)境可直接與Excel中井位數(shù)據(jù)進(jìn)行連接、識(shí)別、提取和修改,并在展繪結(jié)束后顯示井別及其數(shù)量。(3)參見(jiàn)鄭娜:《大慶油田站場(chǎng)總圖設(shè)計(jì)節(jié)約用地簡(jiǎn)析》,《油氣田地面工程》2013年第6期。
MicroStation軟件是一套專業(yè)電腦輔助繪圖軟件,有多種二次開(kāi)發(fā)接口幫助用戶擴(kuò)展軟件的功能。(4)參見(jiàn)侯祥意、盧姍、陶超:《基于MicroStation平臺(tái)的CAD文件動(dòng)態(tài)無(wú)損坐標(biāo)轉(zhuǎn)換方法研究》,《城市勘測(cè)》2019年第1期。其中,Microstation VBA是MicroStation為用戶提供的二次開(kāi)發(fā)接口之一,通過(guò)Microstation VBA程序與Microsoft Office應(yīng)用程序建立連接和通訊,可實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)讀取及修改,實(shí)現(xiàn)數(shù)據(jù)龐大且操作重復(fù)性較高的井位展繪工作。(5)參見(jiàn)孫斌:《基于MicroStation二次開(kāi)發(fā)的平原水閘參數(shù)化設(shè)計(jì)》,《三峽大學(xué)學(xué)報(bào)》(自然科學(xué)版)2016年第5期。
為了實(shí)現(xiàn)油、水、氣井的展繪,需將提前設(shè)置好的井別代表不同的元素符號(hào),程序運(yùn)行中讀取井別數(shù)據(jù),以便從.cel文件中找到相應(yīng)的元素符號(hào)。井位展繪程序(即.mvba文件)在運(yùn)行時(shí)可利用DGN文件新建菜單欄啟動(dòng)程序,程序啟動(dòng)后:一方面與Excle進(jìn)行連接,以便獲取井位數(shù)據(jù);另一方面在程序運(yùn)行中遍歷井位相關(guān)數(shù)據(jù),反復(fù)調(diào)用.cel文件中的井元素符號(hào),在圖中展繪油、水、氣井元素,程序結(jié)構(gòu)及運(yùn)行原理見(jiàn)圖1。
圖1 程序結(jié)構(gòu)及運(yùn)行原理示意圖
2.1 遍歷數(shù)據(jù)與井別判定
通過(guò)While語(yǔ)句對(duì)表中每一行“井號(hào)”進(jìn)行遍歷,當(dāng)無(wú)數(shù)據(jù)可讀時(shí)程序跳出While語(yǔ)句。部分代碼如下:
CurRow = 2
While myWSA.Cells(CurRow, 3) <> ""
在程序?qū)γ恳恍袛?shù)據(jù)進(jìn)行讀取的同時(shí)對(duì)“井別”信息進(jìn)行讀取,單元格中的字符應(yīng)含如下關(guān)鍵字:
(1)油井的關(guān)鍵字為“油”“撈”“采出”;
(2)水井的關(guān)鍵字為“水”“注”;
(3)如果沒(méi)有在單元格中搜索到油井、水井的關(guān)鍵字,則程序判定為氣井。
讀取井別信息的代碼如下:
myWSA.Cells(CurRow, "U").Formula = "=IF(OR(ISNUMBER(FIND(""油"",D" & CurRow & ")),(ISNUMBER(FIND(""撈"",D" & CurRow & "))),(ISNUMBER(FIND(""采出"",D" & CurRow & ")))),""油井"",IF(OR(ISNUMBER(FIND(""水"",D" & CurRow & ")),(ISNUMBER(FIND(""注"",D" & CurRow & ")))),""水井"",""氣井""))"
2.2 文本定義與展繪
需要展繪的文本信息包括平臺(tái)號(hào)和井號(hào),如果產(chǎn)能井位全部都是單井則無(wú)平臺(tái)號(hào)。井號(hào)與井元素一一對(duì)應(yīng),程序?qū)τ?、水、氣井?duì)應(yīng)的井號(hào)進(jìn)行顏色區(qū)分,分別為紅色、藍(lán)色和橙色,分別代表油井、水井和氣井。文本元素展繪的代碼如下:
Set myText1 = CreateTextElement1(Nothing, myWSA.Cells(CurRow, 3), textpt1, RotMatrix)
ActiveModelReference.AddElement myText1
2.3 元素定義與展繪
需要展繪的元素信息包括油、水、氣井的元素符號(hào),通過(guò)井別判定和調(diào)用.cel元素庫(kù)文件,可在庫(kù)中讀取元素符號(hào),再根據(jù)坐標(biāo)數(shù)據(jù)展繪到圖中。元素符號(hào)展繪的代碼如下:
Set myText2 = CreateTextElement1(Nothing, myWSA.Cells(CurRow, 2) & "#", textpt2, RotMatrix)
ActiveModelReference.AddElement myText2
2.4 程序流程
操作、讀取、展繪井位信息的流程如下:
(1)程序啟動(dòng),從第2行開(kāi)始,對(duì)C列數(shù)據(jù)進(jìn)行遍歷,并判斷該單元格數(shù)據(jù)是否為空;
(2)通過(guò)讀取井別(油井、水井、氣井)數(shù)據(jù)得到相對(duì)應(yīng)的元素符號(hào)并展繪;
(3)將該井號(hào)顏色賦值并展繪;
(4)將該井元素符號(hào)、井號(hào)賦值一個(gè)圖層名稱;
(5)井位展繪完成后,行數(shù)加1,從第3行開(kāi)始,對(duì)C列數(shù)據(jù)進(jìn)行遍歷,并判斷該單元格數(shù)據(jù)是否為空,如不為空,繼續(xù)進(jìn)行井位信息讀取及展繪,依次類推;
(6)直到單元格數(shù)據(jù)為空,程序結(jié)束。
程序流程如圖2所示:
圖2 程序流程圖
2.5 數(shù)據(jù)格式及功能實(shí)現(xiàn)
程序設(shè)定讀取Excel文件的產(chǎn)能井位數(shù)據(jù)格式為:A列為序號(hào),B列為平臺(tái)號(hào),C列為井號(hào),D列為井別,E列為縱坐標(biāo),F(xiàn)列為橫坐標(biāo)。井位數(shù)據(jù)格式如表1所示,9口獨(dú)立井,無(wú)平臺(tái)井。
表1 井位數(shù)據(jù)
井位展繪程序的遍歷從C2“油井1”開(kāi)始,當(dāng)讀到C10“氣井3”之后,由于C11為空值,則程序結(jié)束,井位元素完全按照表中E、F列所示的橫、縱坐標(biāo)數(shù)據(jù)進(jìn)行展繪,井號(hào)的文本元素展繪則依據(jù)坐標(biāo)原點(diǎn)向右偏移與元素符號(hào)錯(cuò)開(kāi),井位展繪結(jié)果見(jiàn)圖3。
圖3 井位展繪示意圖
井位展繪是油田產(chǎn)能建設(shè)規(guī)劃方案階段的前期工作,通過(guò)井位分布,總體規(guī)劃出本項(xiàng)目的產(chǎn)能中心區(qū)域,對(duì)是否新建站、間的決策、各種線路的路由選取有著極為重要的意義。通過(guò)2組井位數(shù)據(jù)的展繪效果及工作效率,對(duì)Microstation VBA程序進(jìn)行井位展繪與傳統(tǒng)AutoCAD的方法進(jìn)行對(duì)比分析。
(1)以某區(qū)塊平臺(tái)規(guī)劃井位坐標(biāo)為例,如表2所示。
表2 井位數(shù)據(jù)
井位數(shù)據(jù)中包括2座平臺(tái)井位信息,分別通過(guò)AutoCAD和MicrostationVBA展繪的井位效果見(jiàn)圖4,通過(guò)展繪效果的對(duì)比分析,由于同一平臺(tái)井位的井位坐標(biāo)相同,前者的井號(hào)文本出現(xiàn)重疊現(xiàn)象,而后者通過(guò)程序?qū)Ρ?,井?hào)文本進(jìn)行有序排列,同時(shí),油、水井進(jìn)行分層賦值、元素符號(hào)及文本顏色區(qū)分,最后平臺(tái)號(hào)也能一并展繪,而AutoCAD需要大量手動(dòng)操作才能實(shí)現(xiàn)。
實(shí)例2,以某區(qū)塊完鉆井位坐標(biāo)為例,與規(guī)劃井位不同,同一平臺(tái)相鄰井位的井口距離7-10m,假設(shè)相鄰井口距離7m,如表3所示:
兩種井位展繪效果見(jiàn)圖4,由于同一平臺(tái)相鄰井位距離較近,通過(guò)AutoCAD展繪的井位文本仍然有重疊情況,而通過(guò)Microstation VBA展繪的井位依然可以將井號(hào)文本有序排列。
兩種井位展繪的效果對(duì)比見(jiàn)表4,利用MicrostationVBA二次開(kāi)發(fā)的方法進(jìn)行井位展繪,可以有效減少人工對(duì)數(shù)據(jù)的操作,通過(guò)程序?qū)恍畔⒌闹苯幼x取,在操作上難度大大降低,同時(shí)對(duì)不同井別進(jìn)行區(qū)分以及分層管理,還能對(duì)井號(hào)進(jìn)行排序,為規(guī)劃設(shè)計(jì)的后續(xù)工作帶來(lái)便利。
表3 井位數(shù)據(jù)
圖5 優(yōu)化后的規(guī)劃井位展繪示意圖
表4 井位展繪效果對(duì)比
基于Microstation二次開(kāi)發(fā)的油田產(chǎn)能井位的展繪方法,實(shí)現(xiàn)了Microstation與Excel的連接,實(shí)現(xiàn)一鍵展繪,減少了手動(dòng)工作量,縮短了設(shè)計(jì)周期,提升了井位展繪及油田規(guī)劃工作的效率。從管理方面看,在展繪過(guò)程中對(duì)不同井位分層管理的實(shí)現(xiàn),也為油田產(chǎn)能建設(shè)工程的后期設(shè)計(jì)及調(diào)整工作提供了便利。實(shí)例證明,此方法保證了數(shù)據(jù)安全性的同時(shí)提高了工作效率,在油田產(chǎn)能設(shè)計(jì)工作中具有重要意義。