版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
東北石油大學(xué)本科畢業(yè)設(shè)計(jì)(論文)PAGE摘要根據(jù)聚驅(qū)區(qū)塊實(shí)際工作需求,需要及時(shí)為動(dòng)態(tài)分析管理人員提供動(dòng)態(tài)生產(chǎn)管理方面的動(dòng)靜態(tài)數(shù)據(jù)、圖幅、曲線等信息資料,并從多方位提供動(dòng)靜態(tài)數(shù)據(jù)分析、統(tǒng)計(jì)、對(duì)比等功能,為此開發(fā)了聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)。系統(tǒng)包括對(duì)含水下降井、穩(wěn)定井、回升井、未見效井生產(chǎn)狀況的分析;統(tǒng)計(jì)不同日增油量下降值見效前、高峰期、目前生產(chǎn)數(shù)據(jù)表;繪制不同注采關(guān)系含水變化曲線、不同河道沙控制程度提高采收率變化曲線;計(jì)算不同見效類型生產(chǎn)情況表等等。除以上功能,本系統(tǒng)還可以對(duì)產(chǎn)油量,注入壓力、注入濃度等數(shù)據(jù)繪制等值線,然后對(duì)等值線進(jìn)行追蹤、光滑及填充,生成等值線分布圖。系統(tǒng)開發(fā)工具是VS2005和C#語(yǔ)言,后臺(tái)數(shù)據(jù)庫(kù)采用Oracle10g。整個(gè)系統(tǒng)具有友好、簡(jiǎn)潔的界面,安全性高,穩(wěn)定性強(qiáng)。關(guān)鍵詞:聚驅(qū)區(qū)塊動(dòng)態(tài)分析;變化曲線;等值圖AbstractPolymerFloodingBlockDynamicAnalysisSystemwasdevelopedtomeettheneedsformanagingstaticanddynamicproductiondata,providingmapsheetandcurveinformation,andalsoprovidingthemulti-dimensionaldataanalysis,statistics,comparisonandotherfunctions.Thesystemincludesthefollowingfunctions:theproductionstatusanalysisofwatercutdeclinewells,watercutincreasewells,stablewells,andno-effectivewells;statisticsofoilwellproductiondataatdifferentperiods,suchasbefore-effectiveperiod,productionpeakperiodandcurrentperiod;plottingofwatercutchangescurvewithrespecttodifferentinjection-productionrelationandplottingofenhancedoilrecoverycurvetodifferentchannelsandcontroldegrees;statisticsofproductiondataofdifferenteffectivetypewells,etc.Inadditiontothepreviousfunctions,somecontourcurves,suchasoilproduction,injectionpressure,andinjectiondensity,couldalsobeplotted,tracked,smoothedandfilled,ThesystemdevelopmenttoolisVS2005andC#language,usingOracle10gas.thebackgrounddatabase.Thewholesystemhasafriendly,simpleinterface,highsecurityandstability.Keywords:Polymerfloodingblockdynamicanalysis;changecurve;contourmapsPAGE35目錄TOC\o"1-2"\h\z\u第1章概述 11.1項(xiàng)目背景 11.2研究目標(biāo) 1第2章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)開發(fā)相關(guān)技術(shù) 22.1C#簡(jiǎn)介 22.2Oracle介紹 32.3Chart插件介紹 4第3章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)分析 53.1系統(tǒng)需求分析 53.2系統(tǒng)的可行性研究 63.3系統(tǒng)架構(gòu)分析 7第4章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)設(shè)計(jì) 84.1系統(tǒng)功能模塊設(shè)計(jì) 84.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 84.3數(shù)據(jù)庫(kù)設(shè)計(jì) 94.4系統(tǒng)UI設(shè)計(jì) 13第5章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)實(shí)現(xiàn) 155.1系統(tǒng)實(shí)現(xiàn)概述 155.2等值圖生成 155.3井類別標(biāo)識(shí) 235.4不同類別井生產(chǎn)狀況表 245.5不同指標(biāo)變化生產(chǎn)數(shù)據(jù)表 265.6不同指標(biāo)對(duì)應(yīng)變化曲線 295.7其他 30第6章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)測(cè)試 316.1測(cè)試方法 316.2系統(tǒng)測(cè)試 32結(jié)論 33參考文獻(xiàn) 34致謝 35第1章概述1.1項(xiàng)目背景隨著油田開發(fā)進(jìn)程的加快,油田動(dòng)態(tài)開發(fā)生產(chǎn)中油水井的逐年增多,給動(dòng)態(tài)生產(chǎn)管理增加了很大難度,急需研究并且開發(fā)動(dòng)態(tài)生產(chǎn)管理輔助決策支持系統(tǒng),及時(shí)為動(dòng)態(tài)分析管理人員提供動(dòng)態(tài)生產(chǎn)管理方面的動(dòng)靜態(tài)數(shù)據(jù)、圖幅、曲線等信息資料,并且從多方位提供動(dòng)靜態(tài)數(shù)據(jù)分析、統(tǒng)計(jì)、對(duì)比等功能,采用智能技術(shù)完成各類生產(chǎn)問題,實(shí)現(xiàn)提高油田動(dòng)態(tài)生產(chǎn)效率的目標(biāo)。隨著井網(wǎng)的逐步加密,獨(dú)立區(qū)塊注采井距由250m縮小到125-150m,總井?dāng)?shù)由150口左右增加到500口左右,區(qū)塊管理人員1-2人,而區(qū)塊注聚過(guò)程中分析、調(diào)整工作量較多,涉及的圖、表格式復(fù)雜,為了提高區(qū)塊工作效率,降低勞動(dòng)強(qiáng)度,應(yīng)將區(qū)塊常用分析方法所需圖表及為動(dòng)態(tài)調(diào)整所考慮因素進(jìn)行系統(tǒng)集成,即建立動(dòng)態(tài)分析系統(tǒng),研制一個(gè)聚驅(qū)區(qū)塊動(dòng)態(tài)分析輔助決策系統(tǒng)。1.2研究目標(biāo)課題研究的目標(biāo)是:根據(jù)聚驅(qū)區(qū)塊實(shí)際工作需求建立數(shù)據(jù)資源綜合管理平臺(tái),提供一個(gè)集成的管理環(huán)境,有效的解決開發(fā)生產(chǎn)分析各環(huán)節(jié)中數(shù)據(jù)標(biāo)準(zhǔn)、數(shù)據(jù)管理、數(shù)據(jù)應(yīng)用問題,建立基于綜合資源管理平臺(tái)的輔助決策支持系統(tǒng)支撐環(huán)境,建立相關(guān)的基礎(chǔ)數(shù)據(jù)庫(kù)和規(guī)則數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)分析和聚驅(qū)區(qū)塊工作常用等值圖的繪制工作。本系統(tǒng)在開發(fā)過(guò)程中,吸取了國(guó)內(nèi)現(xiàn)有的部分相關(guān)軟件在軟件實(shí)用性、先進(jìn)性和可靠性等方面的優(yōu)點(diǎn),立足聚驅(qū)區(qū)塊的實(shí)際情況,側(cè)重?cái)?shù)據(jù)動(dòng)態(tài)分析和聚驅(qū)區(qū)塊工作常用等值圖而最終完成的一套軟件界面友好、功能簡(jiǎn)明實(shí)用的軟件系統(tǒng)。第2章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)開發(fā)相關(guān)技術(shù)2.1C#簡(jiǎn)介C#是微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言,并在微軟職業(yè)開發(fā)者論壇(PDC)上登臺(tái)亮相。C#看起來(lái)與Java相似,它包括了諸如單一繼承,界面,與Java幾乎同樣的語(yǔ)法和編譯成中間代碼再運(yùn)行的過(guò)程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司.NETwindows網(wǎng)絡(luò)框架的主角[1]。C#特點(diǎn):(1)命名空間中的申明當(dāng)創(chuàng)建一個(gè)程序時(shí),在一個(gè)命名空間里創(chuàng)建了一個(gè)或多個(gè)類。同時(shí)在這個(gè)命名空間里(在類的外面)還有可能聲明界面、類型和結(jié)構(gòu)體。必須使用using關(guān)鍵字來(lái)引用其他命名空間的內(nèi)容[2]。(2)基本的數(shù)據(jù)類型C#擁有比C、C++或者Java更廣泛的數(shù)據(jù)類型。這些類型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double和decimal。所有這些類型都有一個(gè)固定的大小,每個(gè)數(shù)據(jù)類型都包含有符號(hào)和無(wú)符號(hào)兩種類型。(3)兩個(gè)基本類一個(gè)名叫object的類是所有其他類的基類,而一個(gè)名叫string的類,作為語(yǔ)言的一部分存在意味著編譯器有可能使用它,無(wú)論何時(shí)你在程序中寫入一句帶引號(hào)的字符串,編譯器會(huì)創(chuàng)建一個(gè)string對(duì)象來(lái)保存它[3]。(4)參數(shù)傳遞方法可以被聲明接受可變數(shù)目的參數(shù),缺省的參數(shù)傳遞方法是對(duì)基本數(shù)據(jù)類型進(jìn)行值傳遞。ref關(guān)鍵字可以用來(lái)強(qiáng)迫一個(gè)變量通過(guò)引用傳遞,這使得一個(gè)變量可以接受一個(gè)返回值。out關(guān)鍵字也能聲明引用傳遞過(guò)程,與ref不同的地方是,它指明這個(gè)參數(shù)并不需要初始值[4]。(5)與COM的集成C#對(duì)Windows程序最大的特點(diǎn)可能就是它與COM的無(wú)縫集成了,COM就是微軟的Win32組件技術(shù)。實(shí)際上,最終有可能在任何.NET語(yǔ)言里編寫COM客戶和服務(wù)器端。C#編寫的類可以子類化一個(gè)已存在的COM組件;生成的類也能被作為一個(gè)COM組件使用,然后又能使用比方說(shuō),JScript語(yǔ)言子類化,從而得到第三個(gè)COM組件。這種現(xiàn)象的結(jié)果導(dǎo)致了一個(gè)運(yùn)行環(huán)境的產(chǎn)生,在這個(gè)環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用任何.NET語(yǔ)言子類化[5]。2.2Oracle介紹2.2.1Oracle概論Oracle是以高級(jí)結(jié)構(gòu)化查詢語(yǔ)言(SQL)為基礎(chǔ)的大型關(guān)系數(shù)據(jù)庫(kù),通俗地講它是用方便邏輯管理的語(yǔ)言操縱大量有規(guī)律數(shù)據(jù)的集合。是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一[6]。2.2.2Oracle特點(diǎn)1、提供了基于角色(ROLE)分工的安全保密管理。在數(shù)據(jù)庫(kù)管理功能、完整性檢查、安全性、一致性方面都有良好的表現(xiàn)。2、支持大量多媒體數(shù)據(jù),如二進(jìn)制圖形、聲音、動(dòng)畫以及多維數(shù)據(jù)結(jié)構(gòu)等。3、提供了與第三代高級(jí)語(yǔ)言的接口軟件PRO*系列,能在C,C++等主語(yǔ)言中嵌入SQL語(yǔ)句及過(guò)程化(PL/SQL)語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操縱。加上它有許多優(yōu)秀的前臺(tái)開發(fā)工具如POWERBUILD、SQL*FORMS、VISIABASIC等,可以快速開發(fā)生成基于客戶端PC平臺(tái)的應(yīng)用程序,并具有良好的移植性[7]。4、提供了新的分布式數(shù)據(jù)庫(kù)能力??赏ㄟ^(guò)網(wǎng)絡(luò)較方便地讀寫遠(yuǎn)端數(shù)據(jù)庫(kù)里的數(shù)據(jù),并有對(duì)稱復(fù)制的技術(shù)。2.2.3存儲(chǔ)結(jié)構(gòu)1、物理結(jié)構(gòu)ORACLE數(shù)據(jù)庫(kù)在物理上是存儲(chǔ)于硬盤的各種文件。它是活動(dòng)的,可擴(kuò)充的,隨著數(shù)據(jù)的添加和應(yīng)用程序的增大而變化[8]。下圖為ORACLE數(shù)據(jù)庫(kù)擴(kuò)充前后在硬盤上存儲(chǔ)結(jié)構(gòu)的示意圖:圖2-1ORACLE數(shù)據(jù)庫(kù)擴(kuò)充前后在硬盤上存儲(chǔ)結(jié)構(gòu)的示意圖2、邏輯結(jié)構(gòu)ORACLE數(shù)據(jù)庫(kù)在邏輯上是由許多表空間構(gòu)成。主要分為系統(tǒng)表空間和非系統(tǒng)表空間。非系統(tǒng)表空間內(nèi)存儲(chǔ)著各項(xiàng)應(yīng)用的數(shù)據(jù)、索引、程序等相關(guān)信息。我們準(zhǔn)備上馬一個(gè)較大的ORACLE應(yīng)用系統(tǒng)時(shí),應(yīng)該創(chuàng)建它所獨(dú)占的表空間,同時(shí)定義物理文件的存放路徑和所占硬盤的大小[9]。下圖為ORACLE數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)與物理結(jié)構(gòu)的對(duì)照關(guān)系:圖2-2ORACLE數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)與物理結(jié)構(gòu)的對(duì)照關(guān)系2.3Chart插件介紹一、要想利用這個(gè)功能強(qiáng)大的控件,首先必須引用以下DLL和相關(guān)文件1.在WinForm應(yīng)用程序中要想使用該圖表控件,需引用如下DLL[10]:System.Windows.Forms.DataVisualization.Design.dllSystem.Windows.Forms.DataVisualization.dllSystem.Windows.Forms.DataVisualization.xml2.在Web應(yīng)用程序中要想使用該圖表控件,需引用如下DLL:System.Web.DataVisualization.dllSystem.Web.DataVisualization.Design.dllSystem.Web.DataVisualization.xml二、采用WinForm程序使用該圖表控件[11]1.創(chuàng)建一個(gè)WinForm工程:DemoCollection。2.添加一個(gè)Form窗體:FrmChartDemo。3.添加所需的DLL引用。4.在該窗體的Load事件函數(shù)中動(dòng)態(tài)創(chuàng)建好Chart對(duì)象實(shí)例。5.添加一個(gè)Timer控件,在Timer控件的Tick事件函數(shù)中向Chart中添加坐標(biāo)值(X值和Y值),然后在窗體中繪制出來(lái)[12]。第3章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)分析3.1系統(tǒng)需求分析實(shí)現(xiàn)聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng),包括等值圖的實(shí)現(xiàn),井類別標(biāo)識(shí),對(duì)含水下降井、穩(wěn)定井、回升井、未見效井的分布及生產(chǎn)狀況的分析,不同指標(biāo)生產(chǎn)數(shù)據(jù)表的繪制,包括對(duì)不同含水回升值生產(chǎn)數(shù)據(jù)表,不同增油量生產(chǎn)數(shù)據(jù)表;對(duì)不同指標(biāo)對(duì)應(yīng)的變化曲線的繪制,包括對(duì)不同注采對(duì)應(yīng)含水變化曲線、不同河道砂控制程度含水變化曲線等。在需求分析階段,采用微軟提供的Microsoftofficvisio2007專業(yè)工具繪制各個(gè)模塊流程圖,以下分別為等值圖模塊和不同指標(biāo)生產(chǎn)數(shù)據(jù)表繪制模塊流程圖:否否是開始設(shè)置區(qū)塊設(shè)置時(shí)間數(shù)據(jù)設(shè)置等值圖設(shè)置獲取繪圖數(shù)據(jù)判斷數(shù)據(jù)是否為空繪制等值圖保存至本地開始圖3-1等值圖繪制流程圖開始開始選擇分析項(xiàng)目選擇區(qū)塊選定時(shí)間選定注聚時(shí)間輸入基數(shù)并選擇分級(jí)數(shù)獲取相應(yīng)生產(chǎn)情況數(shù)據(jù)保存本地繪制生產(chǎn)情況表判斷數(shù)據(jù)是否為空結(jié)束圖3-2不同指標(biāo)生產(chǎn)數(shù)據(jù)表繪制模塊流程圖3.2系統(tǒng)的可行性研究3.2本系統(tǒng)使用VisualStudio2005開發(fā)工具,此版本對(duì)ASP.NET2.0、CLR2.0、VB.NET與C#.NET在語(yǔ)言上進(jìn)行強(qiáng)化,提供更好的執(zhí)行效能,并更加注重安全性等方面。數(shù)據(jù)庫(kù)使用Oracle10g,數(shù)據(jù)自動(dòng)鏡像存儲(chǔ)、數(shù)據(jù)閃回功能以及功能強(qiáng)大的數(shù)據(jù)導(dǎo)出工具、大文件表空間以及表空間組管理保證了系統(tǒng)技術(shù)上的可行性[13]。3.2本系統(tǒng)的開發(fā)給用戶帶來(lái)極大的方便,所耗費(fèi)的人力、物力、技術(shù)、資金都大大降低,使用后的開發(fā)效益一定大于開發(fā)成本。本系統(tǒng)投入使用后,可以減輕工作人員的工作強(qiáng)度,提高工作效率。新系統(tǒng)的效益是難以用貨幣形式表現(xiàn)出來(lái)的間接效益,本系統(tǒng)帶來(lái)的間接經(jīng)濟(jì)效益有:改善工作環(huán)境;減少工作強(qiáng)度;提高工作效率;降低銷售成本;擴(kuò)大市場(chǎng)占有量率等。所以說(shuō)在經(jīng)濟(jì)上是可行的[14]。3.2系統(tǒng)處理的準(zhǔn)確性與及時(shí)性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計(jì)與開發(fā)過(guò)程中,充分考慮系統(tǒng)當(dāng)前與將來(lái)可能承受的工作量,使系統(tǒng)的處理能力與響應(yīng)時(shí)間能夠滿足用戶的需求。設(shè)計(jì)開發(fā)中一直注重系統(tǒng)操作的簡(jiǎn)單方便,操作方式都非常簡(jiǎn)單、人性化,相關(guān)的操作方式與用戶已經(jīng)習(xí)慣的各大軟件的用戶操作方式基本相同。所以,操作方式在用戶組織內(nèi)是行得通的[15]。3.3系統(tǒng)架構(gòu)分析系統(tǒng)基于.net開發(fā)模式,采用模型-視圖-控制(Model-View-Control,簡(jiǎn)稱MVC)體系結(jié)構(gòu),運(yùn)用軟件工程的設(shè)計(jì)方法及一些常用模式開發(fā)系統(tǒng),為用戶提供了清新的使用界面和快捷的使用方式。MVC結(jié)構(gòu)是目前最常見的體系結(jié)構(gòu),它主要適用于存在大量交互的情況下,用戶需要多次訪問服務(wù)器,提取相關(guān)數(shù)據(jù)并進(jìn)行顯示。由于本系統(tǒng)的使用人員為各區(qū)塊的聚驅(qū)技術(shù)分析人員,目前存在大量的本地信息,信息共享要求不高;并且在工作過(guò)程中,經(jīng)常需要利用本地信息生成中間報(bào)表和圖幅,以備匯報(bào)工作使用,為此系統(tǒng)開發(fā)采用C/S模式及多層架構(gòu),同時(shí)采用了OLEDB等最新的數(shù)據(jù)訪問技術(shù),底層數(shù)據(jù)庫(kù)采用Oracle,兼容訪問EXCEL、DBF等本地?cái)?shù)據(jù)文件格式,數(shù)據(jù)交換采用了XML等先進(jìn)的國(guó)際標(biāo)準(zhǔn)。多層應(yīng)用框架從體系結(jié)構(gòu)上包括客戶端(clientTier)、中間層(MiddleTier)和企業(yè)信息系統(tǒng)(EISTier,包括數(shù)據(jù)庫(kù)等),并具有以下特點(diǎn):①靈活的客戶端:包括多種類型的客戶端,如上圖所示,在防火墻內(nèi)的可以是Application或?yàn)g覽器方式,在防火墻外主要是瀏覽器方式;②功能強(qiáng)大的中間層:中間層包括業(yè)務(wù)邏輯組件運(yùn)行環(huán)境、應(yīng)用服務(wù)器及各種配套的服務(wù)。③豐富的企業(yè)信息系統(tǒng):后臺(tái)的企業(yè)信息系統(tǒng)可以是各種數(shù)據(jù)庫(kù)、各種辦公自動(dòng)化系統(tǒng)及其他的傳統(tǒng)的信息系統(tǒng)。第4章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)設(shè)計(jì)4.1系統(tǒng)功能模塊設(shè)計(jì)整個(gè)系統(tǒng)分為七個(gè)模塊,如圖4-1所示:動(dòng)態(tài)分析系統(tǒng)動(dòng)態(tài)分析系統(tǒng)井類別標(biāo)識(shí)不同日增油量下降值生產(chǎn)數(shù)據(jù)表不同見效類別井生產(chǎn)情況表不同注采對(duì)應(yīng)提高采收率曲線不同河道砂控制程度含水提高采收率曲線等值圖不同類型井生產(chǎn)狀況表圖4-1系統(tǒng)模塊圖4.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)軟件界面采用主窗口大圖標(biāo)菜單和功能調(diào)用相結(jié)合的方式。界面物理結(jié)構(gòu)為主菜單與大圖標(biāo)菜單欄構(gòu)成,上面菜單欄包含軟件系統(tǒng)的三大部分主要功能:eq\o\ac(○,1)聚驅(qū)區(qū)塊等值圖繪制eq\o\ac(○,2)井類別標(biāo)識(shí)eq\o\ac(○,3)不同日增油量下降值生產(chǎn)數(shù)據(jù)表eq\o\ac(○,4)不同類型井分布圖及生產(chǎn)狀況表eq\o\ac(○,5)不同見效類別井生產(chǎn)情況表eq\o\ac(○,6)不同注采對(duì)應(yīng)提高采收率曲線eq\o\ac(○,7)不同河道砂控制程度含水提高采收率曲線。以下為軟件架構(gòu)圖:主頁(yè)面主頁(yè)面聚驅(qū)區(qū)塊等值圖繪制聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)數(shù)據(jù)庫(kù)井類別標(biāo)識(shí)不同日增油量下降值生產(chǎn)數(shù)據(jù)表不同類型井分布圖及生產(chǎn)狀況表不同見效類別井生產(chǎn)情況表不同注采對(duì)應(yīng)提高采收率曲線不同河道砂控制程度含水提高采收率曲線圖4-2聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)架構(gòu)圖4.3數(shù)據(jù)庫(kù)設(shè)計(jì)從數(shù)據(jù)應(yīng)用系統(tǒng)和開發(fā)的全過(guò)程來(lái)考慮,數(shù)據(jù)庫(kù)的設(shè)計(jì)可以分為六個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)實(shí)施、數(shù)據(jù)庫(kù)的運(yùn)行與維護(hù),按照這樣的設(shè)計(jì)過(guò)程,數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)不同階段可形成數(shù)據(jù)庫(kù)的各級(jí)模式。數(shù)據(jù)庫(kù)的設(shè)計(jì)的核心問題是如何從系統(tǒng)的觀點(diǎn)出發(fā)建立一個(gè)數(shù)據(jù)庫(kù)模式。一個(gè)良好的數(shù)據(jù)庫(kù)應(yīng)用該充分的反映軟件的流程和計(jì)算要求,同時(shí)還應(yīng)該使后繼開發(fā)工作方便、快捷,易于管理和維護(hù)。在物理設(shè)計(jì)階段根據(jù)軟件的特點(diǎn)和處理要求,進(jìn)行物理存儲(chǔ)安排。(1)數(shù)據(jù)庫(kù)需求分析聚驅(qū)區(qū)塊數(shù)據(jù)及文檔管理系統(tǒng)的數(shù)據(jù)庫(kù)主要包括以下幾張表:eq\o\ac(○,1)油井屬性表:標(biāo)準(zhǔn)井號(hào)、井別、區(qū)塊名、區(qū)塊代碼、投產(chǎn)日期、礦名、采油隊(duì)、配置站、注入站、破裂壓力、空隙體積。eq\o\ac(○,2)水井屬性表:標(biāo)準(zhǔn)井號(hào)、井別、區(qū)塊名、區(qū)塊代碼、投產(chǎn)日期、礦名、采油隊(duì)、配置站、注入站、破裂壓力、空隙體積。eq\o\ac(○,3)采油井日數(shù)據(jù):總井?dāng)?shù)、開井?dāng)?shù)、產(chǎn)液、日產(chǎn)油、含水、流壓、礦化度、氯離子含量。eq\o\ac(○,4)注入井日數(shù)據(jù):總井?dāng)?shù)、開井?dāng)?shù)、注入壓力、日配注水量、日配注母液量、日配注液量、日注水量、日注母液量、日注液量。eq\o\ac(○,5)采油井月數(shù)據(jù):總井?dāng)?shù)、開井?dāng)?shù)、日產(chǎn)液、日產(chǎn)油、含水、流壓、月產(chǎn)油量、月產(chǎn)水量、核實(shí)月產(chǎn)油量、核實(shí)月產(chǎn)水量、采聚濃度、采堿濃度、采表活劑濃度、礦化度、沉沒度。eq\o\ac(○,6)注入井月數(shù)據(jù):總井?dāng)?shù)、開井?dāng)?shù)、注入壓力、日配注水量、日配注母液量、日配注液量、日注水量、日注母液量、日注液量、月注水量、月注母液量、月注液量、注入液濃度、注入液粘度。eq\o\ac(○,7)標(biāo)定表:ID、井號(hào)、見效前時(shí)間、見效前產(chǎn)液、見效前產(chǎn)油、見效前含水、見效前產(chǎn)液濃度、最低含水時(shí)間、最低含水產(chǎn)液、最低含水產(chǎn)油、最低含水產(chǎn)水、最低含水產(chǎn)液濃度。eq\o\ac(○,8)靜態(tài)數(shù)據(jù)表1:ID、井名、測(cè)井小隊(duì)、測(cè)井系列、測(cè)井時(shí)間、測(cè)井井深、測(cè)井井段、井底溫度。eq\o\ac(○,9)靜態(tài)數(shù)據(jù)表2:ID、井常用名、井名、井別、鉆井目的、鉆井小隊(duì)、開鉆時(shí)間、套管程序、鉆頭程序、完鉆時(shí)間、完鉆井深、鉆開油層時(shí)間、鉆井液停止循環(huán)時(shí)間、鉆井液密度1、鉆井液密度2、鉆井液黏度1、鉆井液黏度2、失水量、電阻率1、電阻率2。(2)部分?jǐn)?shù)據(jù)表的表結(jié)構(gòu)設(shè)計(jì)如下:eq\o\ac(○,1)油井屬性表ATTDB_OIL,表結(jié)構(gòu)如表2-1所示:表4-1ATTDB_OIL表結(jié)構(gòu)編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空1JH標(biāo)準(zhǔn)井號(hào)VARCHAR2(16)否2QK區(qū)塊名VARCHAR2(20)否3QKDM區(qū)塊代碼VARCHAR2(20)否4JB井別VARCHAR2(2)否5TCRQ投產(chǎn)日期DATE否6KM礦名VARCHAR2(8)否7CYD采油隊(duì)VARCHAR2(20)否8ZRZ注入站VARCHAR2(20)否9PLYL破裂壓力VARCHAR2(20)否10KXTJ空隙體積VARCHAR2(20)否11POLY_STATION配置站VARCHAR2(20)否eq\o\ac(○,2)水井屬性表ATTDB_WATER,表結(jié)構(gòu)如表4-2所示:表4-2ATTDB_WATER表結(jié)構(gòu)編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空1JH標(biāo)準(zhǔn)井號(hào)VARCHAR2(16)否2QK區(qū)塊名VARCHAR2(20)否3QKDM區(qū)塊代碼VARCHAR2(20)否4JB井別VARCHAR2(2)否5TCRQ投產(chǎn)日期DATE否6KM礦名VARCHAR2(8)否7CYD采油隊(duì)VARCHAR2(20)否8ZRZ注入站VARCHAR2(20)否9PLYL破裂壓力VARCHAR2(20)否10KXTJ空隙體積VARCHAR2(20)否11POLY_STATION配置站VARCHAR2(20)否eq\o\ac(○,3)采油井月數(shù)據(jù)DBA04,表結(jié)構(gòu)如下表4-3所示:表4-3DAA04表結(jié)構(gòu)編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空1ZJS總井?dāng)?shù)VARCHAR2(16)否2KJS開井?dāng)?shù)VARCHAR2(20)否3RCYL日產(chǎn)液VARCHAR2(20)否4HS含水VARCHAR2(2)否5LY流壓VARCHAR2(2)否6YCYL月產(chǎn)油量VARCHAR2(8)否7YCSL月產(chǎn)水量VARCHAR2(20)否8HSYCYL核實(shí)月產(chǎn)油量VARCHAR2(20)否9HSYCSL核實(shí)月產(chǎn)水量VARCHAR2(20)否10CCJHWND采聚濃度VARCHAR2(2)否11CCJND采堿濃度VARCHAR2(2)否12CCBHJND采表活劑濃度VARCHAR2(8)否13KHD礦化度VARCHAR2(2)否14CMD沉沒度VARCHAR2(2)否eq\o\ac(○,4)注入井月數(shù)據(jù)DBA05,表結(jié)構(gòu)如下表4-4所示:表4-4DAA05表結(jié)構(gòu)編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空1ZJS總井?dāng)?shù)VARCHAR2(16)否2KJS開井?dāng)?shù)VARCHAR2(20)否3YY注入壓力VARCHAR2(20)否4RPZSL日配注水量VARCHAR2(2)否5RPMYL日配注母液量VARCHAR2(2)否6RPZRYL日配注液量VARCHAR2(8)否7RZSL日注水量VARCHAR2(20)否8RZMYL日注母液量VARCHAR2(20)否9RZRYL日注液量VARCHAR2(20)否10YZSL月注水量VARCHAR2(2)否11YZMYL月注母液量VARCHAR2(2)否12YZYL月注液量VARCHAR2(8)否13ZRYND注入液濃度VARCHAR2(12)否14ZRYND1注入液粘度VARCHAR2(20)否eq\o\ac(○,5)井類別標(biāo)識(shí)數(shù)據(jù)表WELL_BD,表結(jié)構(gòu)如下表4-5所示:表4-5WELL_BD表結(jié)構(gòu)編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空1JH井號(hào)VARCHAR2(16)否2JXQTIME見效前時(shí)間VARCHAR2(6)否3JXQRCYEL見效前產(chǎn)液FLOAT否4JXQRCYL見效前產(chǎn)油FLOAT否5JXQHS見效前含水FLOAT否6JXQND見效前產(chǎn)液濃度FLOAT否7LOWHSTIME最低含水時(shí)間VARCHAR2(6)否8LOWRCYEL最低含水產(chǎn)液FLOAT否9LOWRCYL最低含水產(chǎn)油FLOAT否10LOWRCSL最低含水產(chǎn)水FLOAT否11LOWHS最低含水FLOAT否12LOWND最低含水產(chǎn)液濃度FLOAT否續(xù)表4-5編號(hào)字段名稱中文含義數(shù)據(jù)類型是否為空13HSFALL含水下降FLOAT否14HSVARYTYPE階段含水變化類型VARCHAR2(10)否15JXTYPE見效類型VARCHAR2(20)否16LOWCMD最低含水沉沒度FLOAT否17LOWCCJHWND最低含水采聚濃度FLOAT否4.4系統(tǒng)UI設(shè)計(jì)系統(tǒng)界面整體布局為左右結(jié)構(gòu),左側(cè)為要分析的項(xiàng)目及數(shù)據(jù)選項(xiàng),右側(cè)為分析結(jié)果顯示區(qū),為了增強(qiáng)軟件的人機(jī)交互、操作邏輯,使系統(tǒng)界面簡(jiǎn)潔美觀。我使用DOTNETBAR控件讓系統(tǒng)具有office2007的風(fēng)格,使用Dsoframer控件提供調(diào)用office軟件的接口,支持office文檔的展示功能,并提供打印、編輯、下載和上傳等功能。下圖為系統(tǒng)界面圖及Dsoframer效果展示圖圖4-3動(dòng)態(tài)分析界面設(shè)計(jì)圖圖4-4DSOFRAMER效果圖第5章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)實(shí)現(xiàn)概述系統(tǒng)實(shí)施是繼系統(tǒng)規(guī)劃、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)之后的又一個(gè)重要階段,它將按照系統(tǒng)設(shè)計(jì)選定的方案具體實(shí)施。在系統(tǒng)分析和系統(tǒng)設(shè)計(jì)階段,系統(tǒng)開發(fā)工作主要是集中在邏輯、功能和技術(shù)設(shè)計(jì)上,工作成果是以各種系統(tǒng)分析和設(shè)計(jì)文檔來(lái)體現(xiàn)的。系統(tǒng)實(shí)施階段要繼承此前各階段的工作成果,將技術(shù)設(shè)計(jì)轉(zhuǎn)化為物理實(shí)現(xiàn)。程序設(shè)計(jì)又稱編碼,為了保證編碼工作正確而順利進(jìn)行,一方面程序設(shè)計(jì)人員必須仔細(xì)閱讀系統(tǒng)設(shè)計(jì)的全部文檔資料,充分理解程序模塊的內(nèi)部過(guò)程和外部接口,以保證系統(tǒng)實(shí)施與系統(tǒng)設(shè)計(jì)的一致性。另一方面,程序設(shè)計(jì)人員必須深刻的理解,熟練的掌握和正確的運(yùn)用程序設(shè)計(jì)語(yǔ)言以及軟件開發(fā)環(huán)境和工具,以保證功能的正確實(shí)現(xiàn)。對(duì)程序設(shè)計(jì)的基本質(zhì)量要求是程序的正確性,即一方面正確運(yùn)用程序設(shè)計(jì)語(yǔ)言環(huán)境,以避免語(yǔ)法的錯(cuò)誤。另一方面,程序所描述的過(guò)程和算法要滿足系統(tǒng)設(shè)計(jì)的功能要求,以避免語(yǔ)義錯(cuò)誤。我們盡量使程序不僅能在計(jì)算機(jī)上正確執(zhí)行,而且對(duì)于閱讀人來(lái)說(shuō)猶如一篇好文章,結(jié)構(gòu)清晰,邏輯簡(jiǎn)明,易讀易懂,便于修改和擴(kuò)充。5.2等值圖生成5.2.1等值圖在聚驅(qū)區(qū)塊工作中占有比較重要的地位,等值圖能夠宏觀上的展示在整個(gè)區(qū)塊中各個(gè)井口的工作情況。本系統(tǒng)需要對(duì)以下數(shù)據(jù)繪制等值線:注入壓力、壓力空間、注水量、注入濃度、注入粘度、聚合物用量、注入pv數(shù)、日產(chǎn)液、日產(chǎn)油、含水、采聚濃度、沉沒度、階段提高采收率、含水下降值、含水回升值、日增油量、階段采出程度。5.2.2從庫(kù)中讀取或經(jīng)過(guò)計(jì)算后,得到所需的等值線繪制數(shù)據(jù),由井位橫坐標(biāo)X、縱坐標(biāo)Y和等值線數(shù)據(jù)Value三要素,依據(jù)反距離加權(quán)插值法進(jìn)行插值,然后對(duì)等值線進(jìn)行追蹤、光滑及填充,生成等值線分布圖。1)反距離加權(quán)插值:反距離加權(quán)插值方法是一個(gè)加權(quán)平均插值法,可以進(jìn)行確切的或者圓滑的方式插值。方次參數(shù)控制著權(quán)系數(shù)如何隨著離開一個(gè)格網(wǎng)結(jié)點(diǎn)距離的增加而下降。對(duì)于一個(gè)較大的方次,較近的數(shù)據(jù)點(diǎn)被給定一個(gè)較高的權(quán)重份額,對(duì)于一個(gè)較小的方次,權(quán)重比較均勻地分配給各數(shù)據(jù)點(diǎn)。計(jì)算一個(gè)格網(wǎng)結(jié)點(diǎn)時(shí)給予一個(gè)特定數(shù)據(jù)點(diǎn)的權(quán)值與指定方次的從結(jié)點(diǎn)到觀測(cè)點(diǎn)的該結(jié)點(diǎn)被賦予距離倒數(shù)成比例。當(dāng)計(jì)算一個(gè)格網(wǎng)結(jié)點(diǎn)時(shí),配給的權(quán)重是一個(gè)分?jǐn)?shù),所有權(quán)重的總和等于1.0。當(dāng)一個(gè)觀測(cè)點(diǎn)與一個(gè)格網(wǎng)結(jié)點(diǎn)重合時(shí),該觀測(cè)點(diǎn)被給予一個(gè)實(shí)際為1.0的權(quán)重,所有其它觀測(cè)點(diǎn)被給予一個(gè)幾乎為0.0的權(quán)重。換言之,該結(jié)點(diǎn)被賦給與觀測(cè)點(diǎn)一致的值。這就是一個(gè)準(zhǔn)確插值。確定出網(wǎng)格的坐標(biāo)(x,y)后,使用公式確定各網(wǎng)格點(diǎn)的value:,得出所有網(wǎng)格點(diǎn)的(x,y,value)。2)等值線追蹤:將孤立的等值點(diǎn)連接在一起形成等值線。一般先追蹤開曲線,即起止于網(wǎng)格邊界線上的等值線。追蹤開曲線可以順著四個(gè)邊界進(jìn)行,對(duì)于某個(gè)邊界任意選取一個(gè)等值點(diǎn)作為開始點(diǎn),追蹤下一個(gè)等值點(diǎn),直到追蹤到的下一個(gè)等值點(diǎn)也是邊界上的點(diǎn),就完成了一條等值線的追蹤。要從一個(gè)等值點(diǎn)追蹤到下一個(gè)等值點(diǎn),這通常是利用上一次的追蹤方向來(lái)確定的。對(duì)于矩形網(wǎng)格來(lái)說(shuō)追蹤方向有4種,即向下、向左、向上和向右。如果上一次等值點(diǎn)所在網(wǎng)格的列比本次等值點(diǎn)所在列小于1,則追蹤方向向右。對(duì)于每一種追蹤方向可能出現(xiàn)的情況有兩種。這里以向右追蹤為例進(jìn)行說(shuō)明,其余方向可以類推。向右追蹤時(shí),如果網(wǎng)格其他三個(gè)邊上僅有一邊存在等值點(diǎn).則選擇它作為下一個(gè)點(diǎn);如果其他三邊均存在等值點(diǎn)則從相鄰的上、下邊中選取,計(jì)算上一個(gè)等值點(diǎn)到上、下邊中待選等值點(diǎn)的距離,取距離小的作為下一個(gè)等值點(diǎn)。利用上面的追蹤方法追蹤等值線一般都符合實(shí)際情況,并且不會(huì)出現(xiàn)交叉現(xiàn)象。當(dāng)追蹤出一個(gè)等值點(diǎn)后需要將它刪除,這樣追蹤完一條等值線后就不會(huì)重復(fù)追蹤該等值線上的點(diǎn)了。當(dāng)某一邊界已沒有等值點(diǎn)可以追蹤后,就完成了該邊界的開曲線追蹤,對(duì)于矩形網(wǎng)格需要在四個(gè)邊界上都進(jìn)行開曲線追蹤。開曲線追蹤完畢后,可能還存在一些等值點(diǎn),它們將構(gòu)成封閉的閉曲線,可以任取一點(diǎn)進(jìn)行追蹤,直至回到該點(diǎn)則完成追蹤。如果所有等值點(diǎn)都被追蹤過(guò)了。則關(guān)于該等值的等值線就全部追蹤完畢了。3)等值線光滑利用追蹤算法得到的等值線,在網(wǎng)格比較稀疏的情況下顯得不夠平滑,往往還需要采用一種擬合方法對(duì)等值線進(jìn)行圓滑。這里使用三次參數(shù)樣條曲線來(lái)擬合加密曲線,達(dá)到圓滑的效果。在數(shù)學(xué)上,光滑程度的定量描述是:函數(shù)(曲線)的k階導(dǎo)數(shù)存在且連續(xù),則稱該曲線具有k階光滑性。設(shè)上給出一組節(jié)點(diǎn),若函數(shù)s(x)滿足條件(1);(2)s(x)在每個(gè)小區(qū)間上是三次多項(xiàng)式,則稱s(x)是節(jié)點(diǎn)上的三次樣條函數(shù)。若s(x)在節(jié)點(diǎn)上還滿足插值條件(3),則稱s(x)為上的三次樣條插值函數(shù).經(jīng)積分得,,方程1,其中,分段三次樣條插值(簡(jiǎn)稱Spline插值)是通過(guò)形值點(diǎn)的一條光滑曲線,從數(shù)學(xué)上表示就是由定義1所給出的三條件得到的s(x),它在區(qū)間上是二階連續(xù)的,在每個(gè)小區(qū)間上是三次多項(xiàng)式并通過(guò)給定點(diǎn),若補(bǔ)充上相應(yīng)的邊界條件就可求得s(x),通過(guò)解三彎矩方程2或方程3就可得到方程1所表示的s(x)。彎矩方程:,方程2,方程34)等值線填充圖形學(xué)中填充多邊形的掃描線轉(zhuǎn)換算法需要使用如下數(shù)據(jù)結(jié)構(gòu):等值線Y桶:等值線Y桶用于記錄等值線的基本信息,桶的長(zhǎng)度與掃描線的條數(shù)一樣多,其編號(hào)與掃描線序號(hào)一致。每條等值線都要生成一個(gè)桶記錄項(xiàng),記錄該等值線的最大Y坐標(biāo)ymax、指向等值線的指針和指向該等值線邊Y桶的指針。桶記錄項(xiàng)按等值線的最小Y坐標(biāo)插入到桶中。有效等值線表AIT:該表存儲(chǔ)與當(dāng)前掃描線相交的所有等值線在等值線Y桶中的記錄指針。邊Y桶:每條等值線都由一系列的邊組成,為了利用相關(guān)性,需要建立等值線的邊Y桶,記錄每條邊的基本信息。等值線邊Y桶的長(zhǎng)度等于與該等值線相交的掃描線的條數(shù)。對(duì)于等值線中的每條邊都要產(chǎn)生一個(gè)邊記錄,記錄該邊的最大Y坐標(biāo)ymax,Y值較小端對(duì)應(yīng)的X坐標(biāo)xmin,當(dāng)掃描線增大1時(shí)X坐標(biāo)的增量△x,以及等值線的值value。每一個(gè)邊記錄按該邊的最小Y坐標(biāo)和整條等值線的最小Y坐標(biāo)的差值存人邊桶中。有效邊表AET:該表存儲(chǔ)與當(dāng)前掃描線相交的所有等值線的邊在邊Y桶中的記錄指針。利用上面的數(shù)據(jù)結(jié)構(gòu),一個(gè)完整的掃描線轉(zhuǎn)化填充算法如下:遍歷所有的等值線,為每一條等值線生成一個(gè)等值線Y桶中的記錄,并根據(jù)等值線的最小Y坐標(biāo)將該記錄加入到等值線Y桶中。將有效等值線表AIT和有效邊表AET初始化為空。對(duì)于每一條掃描線i,它從最小值開始,做以下工作。①檢查等值線Y桶對(duì)于掃描線i是否有新的等值線記錄,如果有則生成該掃描線對(duì)應(yīng)的邊Y桶,并在有效等值線表AIT中加入該掃描線的桶記錄。②遍歷AIT中的每一條等值線對(duì)應(yīng)的桶記錄,檢查該等值線對(duì)應(yīng)的邊Y桶對(duì)于掃描線i是否有新的邊記錄加入,如果有則將新的邊記錄按xmin字段的大小加入到有效邊表AET中。③利用有效邊表AET和掃描線填充算法填充該掃描線。④遍歷AET,檢查是否有邊記錄的ymax字段等于i,如果有則刪除該邊記錄,否則令該邊記錄的xmin=xmin+△x。⑤遍歷AIT表,檢查是否有等值線記錄的ymax字段等于i,如果有則刪除該記錄。5.2.3選擇區(qū)塊及對(duì)應(yīng)的數(shù)據(jù)項(xiàng),單擊<等值線>按鈕,則顯示數(shù)據(jù)及等值圖如下所示:圖5-1等值圖模塊截圖其中井位分布圖可根據(jù)需要設(shè)定是否疊加顯示:圖5-2等值圖模塊截圖等值圖可根據(jù)需要選擇不同的顏色方案顯示,單擊<保存>按鈕可將等值圖保存為圖象文件。圖5-3等值圖模塊保存圖片截圖等值圖模塊的核心代碼如下:privateint[]color=newint[]{0xFF0000,0xFFFF00,0x00FF00,0x0000FF,0x8000FF,0xFFFF00,0xFF80FF,0xFF1CAE,0xE6E8FA,0x99CC32};//{0xFF0066,0x000CC,0xFF6600,0x006600,0xCCC33,0xFFFF00,0x23238E,0xFF1CAE,0xE6E8FA,0x99CC32};privatedoublemax=0,min=100000;//存放數(shù)據(jù)的最大最小值privateobject[]hzb=newobject[10000];//橫坐標(biāo),大小在程序中動(dòng)態(tài)確定privateobject[]zzb=newobject[10000];//縱坐標(biāo)privatedouble[]A=newdouble[10000];//數(shù)據(jù)privatestring[]jhs=newstring[10000];//井號(hào)privatefloatxmax,xmin,ymax,ymin;//實(shí)際橫縱坐標(biāo)最大最小值privateobject[]hzb1=newobject[10000];privateobject[]zzb1=newobject[10000];//另一井別縱坐標(biāo)privatestring[]jhs1=newstring[10000];//井號(hào)privateOleDbDataReaderdataReader=null;//臨時(shí)變量privatestringcolumnTitle;//第三列標(biāo)題privatestringjb="";//標(biāo)識(shí)目前看的是哪一種井的數(shù)據(jù)privateArrayListAllItemBlocks=newArrayList();//存放所有圖道的圖元,每個(gè)元素是一個(gè)ItemDetailprivateArrayListfenji1=newArrayList();privateArrayListfenji2=newArrayList();privateArrayListfenjiColor=newArrayList();privateLabel[]fLabels=newLabel[15];privateTextBox[]fColors=newTextBox[15];privateBitmapbitmap;//存放圖像文件privateGraphicsgraphics;//臨時(shí)變量privatevoidstartDraw(){resizeArray();strings=null;if(dateTimePicker1.Value.Month<10){s="0"+dateTimePicker1.Value.Month.ToString();}else{s=dateTimePicker1.Value.Month.ToString();}s=dateTimePicker1.Value.Year.ToString()+s;//時(shí)間"yyyymm"stringselectItem=comboBox4.Text.ToString();stringqk=boBox3.Text;//獲取井號(hào),x,y,數(shù)據(jù)項(xiàng)值setA(selectItem,s,s,qk);if(this.jhs.Length>0){//庫(kù)中有需要的數(shù)據(jù)try{drawContours();if(this.checkWellPos.Checked){this.AllItemBlocks.Clear();drawWellMap();drawWellOtherMap();object[]o;foreach(ItemDetailidinAllItemBlocks){o=id.getAll();walkOut(o,this.graphics);//this.pictureBox1.CreateGraphics());}}this.dataGridViewX1.DataSource=dataTable;this.dataGridViewX1.Columns[0].HeaderText="井號(hào)";this.dataGridViewX1.Columns[3].HeaderText=columnTitle;this.dataGridViewX1.Columns[0].Width=80;this.dataGridViewX1.Columns[1].Width=50;this.dataGridViewX1.Columns[2].Width=50;this.dataGridViewX1.Columns[3].Width=100;tabControl1.SelectedTab=tabItem2;}catch(Exceptione){MessageBox.Show(e.Message);}}else{MessageBox.Show("數(shù)據(jù)庫(kù)中無(wú)該數(shù)據(jù)項(xiàng)在此時(shí)間內(nèi)的數(shù)據(jù),請(qǐng)重新選擇!");}}//畫選擇類別井井位分布圖privatevoiddrawWellMap(){//this.AllItemBlocks.Clear();ItemDetailitem=newItemDetail();ArrayListca=item.Blocks;Coordcord=newCoord(0,0,pictureBox1.Width,pictureBox1.Height,this.xmin,this.ymax,this.xmax-this.xmin,this.ymax-this.ymin);Lanelane=newLane(cord);TaskDrawCuretask=newTaskDrawCure(lane);task.setData(hzb);object[]nzzb=newobject[zzb.Length];for(inti=0;i<nzzb.Length;i++){nzzb[i]=2*ymax-(float)((double)zzb[i]);}task.setDepth(nzzb);PointF[]allPts=task.getAllScreenPoints();//主圖if(allPts.Length>0)for(inti=0;i<allPts.Length;i++){if(jb=="oil"){ca.Add(newPointBlock(Color.Red,5,allPts[i]));}else{ca.Add(newTextBlock("◎",newFont("宋體",5),newSolidBrush(Color.Blue),allPts[i].X,allPts[i].Y));//PointBlock(Color.Red,5,allPts[i]));}ca.Add(newTextBlock(jhs[i],newFont("宋體",7),newSolidBrush(Color.Black),allPts[i].X-15,allPts[i].Y-13));}AllItemBlocks.Add(item);}5.3井類別標(biāo)識(shí)點(diǎn)擊標(biāo)定按鈕,觸發(fā)Click事件,將單井的值cbb_SingleWell.Text傳到要標(biāo)定的井號(hào)。具體代碼如下:privatevoidbuttonX2_Click(objectsender,EventArgse){BindBoxbd;if(cbb_SingleWell.Text==""||cbb_SingleWell.Text=="請(qǐng)選擇井號(hào)")bd=newBindBox();elsebd=newBindBox(cbb_SingleWell.Text);bd.Show();}選擇階段含水變化關(guān)系、見效類型、見效時(shí)間及含水最低時(shí)間的值,點(diǎn)擊確定按鈕,將值插入或更新到WELL_BD表中。如下圖所示:圖5-4井類別標(biāo)識(shí)5.4不同類別井生產(chǎn)狀況表應(yīng)對(duì)聚驅(qū)區(qū)塊工作要求,同級(jí)區(qū)塊內(nèi)下降井、含水回升井、穩(wěn)定井、未見效井的成產(chǎn)情況,按照井別以及日起范圍進(jìn)行統(tǒng)計(jì)。如下圖所示:圖5-5統(tǒng)計(jì)生產(chǎn)數(shù)據(jù)圖實(shí)施方法:采用T_SQL命令通過(guò)提取庫(kù)中數(shù)據(jù),并進(jìn)行統(tǒng)計(jì)合并。所用的T_SQL核心語(yǔ)句如下:select井信息.類別,井信息.井?dāng)?shù),數(shù)據(jù).見效日產(chǎn)液,數(shù)據(jù).見效日產(chǎn)油,數(shù)據(jù).見效含水,數(shù)據(jù).見效沉沒度,數(shù)據(jù).見效采聚濃度,數(shù)據(jù).目前日產(chǎn)液,數(shù)據(jù).目前日產(chǎn)油,數(shù)據(jù).目前含水,數(shù)據(jù).目前沉沒度,數(shù)據(jù).目前采聚濃度f(wàn)rom(selectmt1.類別,mt1.井?dāng)?shù),(mt1.井?dāng)?shù)/mt2.總數(shù))*100井?dāng)?shù)比例from(selectLBas類別,count(JH)as井?dāng)?shù)fromwell_bdgroupbyLBunionallselect'合計(jì)',sum(count(1))fromwell_bdgroupbyLB)mt1,(select總數(shù)as總數(shù)from(select'合計(jì)',sum(count(1))as總數(shù)fromwell_bdgroupbyLB))mt2)井信息,(select見效.類別,見效.日產(chǎn)液見效日產(chǎn)液,見效.日產(chǎn)油見效日產(chǎn)油,見效.含水見效含水,見效.沉沒度見效沉沒度,見效.采聚濃度見效采聚濃度,目前.日產(chǎn)液目前日產(chǎn)液,目前.日產(chǎn)油目前日產(chǎn)油,目前.含水目前含水,目前.沉沒度目前沉沒度,目前.采聚濃度目前采聚濃度f(wàn)rom(select類別,round(AVG(日產(chǎn)油)+AVG(日產(chǎn)水),1)日產(chǎn)液,round(AVG(日產(chǎn)油),1)日產(chǎn)油,round((1-(round(AVG(日產(chǎn)油),1)/round(AVG(日產(chǎn)油)+AVG(日產(chǎn)水),1)))*100,1)含水,round(AVG(泵深)-AVG(動(dòng)液面深度))沉沒度,round(AVG(采聚濃度))采聚濃度f(wàn)rom(selectwell_bd.lb類別,dba04.jh井號(hào),dba04.RCYL日產(chǎn)油,dba04.RCSL日產(chǎn)水,dba04.HS含水,dba04.BS泵深,dba04.DYM動(dòng)液面深度,dba04.CCJHWND采聚濃度f(wàn)romwell_bd,DBA04wherewell_bd.jh=dba04.jhanddba04.ny='200912')mt1groupby類別unionallselect'合計(jì)',round(AVG(RCYL)+AVG(RCSL),1)日產(chǎn)液,round(AVG(RCYL),1)日產(chǎn)油,round((1-round(AVG(RCYL),1)/round(AVG(RCYL)+AVG(RCSL),1))*100,1)含水,round(AVG(BS)-AVG(DYM))沉沒度,fromdba04wheredba04.ny='200912')見效,(select類別,round(AVG(日產(chǎn)油)+AVG(日產(chǎn)水),1)日產(chǎn)液,round(AVG(日產(chǎn)油),1)日產(chǎn)油,round((1-(round(AVG(日產(chǎn)油),1)/round(AVG(日產(chǎn)油)+AVG(日產(chǎn)水),1)))*100,1)含水,round(AVG(泵深)-AVG(動(dòng)液面深度))沉沒度,round(AVG(采聚濃度))采聚濃度f(wàn)rom(selectwell_bd.lb類別,dba04.jh井號(hào),dba04.RCYL日產(chǎn)油,dba04.RCSL日產(chǎn)水,dba04.HS含水,dba04.BS泵深,dba04.DYM動(dòng)液面深度,dba04.CCJHWND采聚濃度f(wàn)romwell_bd,DBA04wherewell_bd.jh=dba04.jhanddba04.ny='201001')mt1groupby類別unionallselect'合計(jì)',round(AVG(RCYL)+AVG(RCSL),1)日產(chǎn)液,round(AVG(RCYL),1)日產(chǎn)油,round((1-round(AVG(RCYL),1)/round(AVG(RCYL)+AVG(RCSL),1))*100,1)含水,round(AVG(BS)-AVG(DYM))沉沒度,round(AVG(CCJHWND))采聚濃度f(wàn)romdba04wheredba04.ny='201001')目前where見效.類別=目前.類別)數(shù)據(jù)where井信息.類別=數(shù)據(jù).類別5.5不同指標(biāo)變化生產(chǎn)數(shù)據(jù)表5.5.1根據(jù)日增油量數(shù)據(jù),按照分級(jí)情況統(tǒng)計(jì)出每一級(jí)別的不同見效時(shí)期的日產(chǎn)液、日產(chǎn)油、含水、沉沒度、采聚濃度等屬性。生成數(shù)據(jù)表后用DSOFRAMER控件展示出來(lái)。如圖5-6所示:圖5-6不同增油量生產(chǎn)數(shù)據(jù)統(tǒng)計(jì)效果圖5.5.2不同含水回升首先給出不同含水回升值的分級(jí)標(biāo)準(zhǔn),然后統(tǒng)計(jì)不同含水分級(jí)井的見效高峰期和目前的生產(chǎn)狀況,如下圖所示。圖5-7不同含水分級(jí)統(tǒng)計(jì)效果圖具體實(shí)現(xiàn):classExcelHelper{定義類的模板路徑templetFile=null;定義類的文件輸出路徑outputFile=null;定義Excel函數(shù)缺省值missing=Missing.Value;publicExcelHelper(stringtempletFilePath,stringoutputFilePath){if模板路徑templetFilePath未賦值拋出"Excel模板文件路徑不能為空"的異常!;if輸出文件路徑outputFilePath未賦值拋出"輸出Excel文件路徑不能為空!"的異常;if模板路徑templetFilePath不存在拋出"指定路徑的Excel模板文件不存在!"的異常;類模板路徑templetFile=templetFilePath;類輸出文件路徑outputFile=outputFilePath;}publicvoidDataTableToExcel(DataTabledt,introws,inttop,intleft,stringsheetPrefixName){定義源DataTable行數(shù)rowCount=dt.Rows.Count;源DataTable列數(shù)colCount=dt.Columns.Count;獲取WorkSheet個(gè)數(shù)sheetCount=this.GetSheetCount(rowCount,rows);進(jìn)程開始時(shí)間beforeTime=DateTime.Now;進(jìn)程結(jié)束時(shí)間afterTime;if工作表前綴名sheetPrefixName未賦值或?yàn)榭談t工作表前綴名sheetPrefixName="sheet";創(chuàng)建一個(gè)Application對(duì)象并使其可見Excel.Applicationapp=newExcel.ApplicationClass();進(jìn)程結(jié)束時(shí)間賦值afterTime=DateTime.Now;打開模板文件,得到工作簿對(duì)象Excel.WorkbookworkBook=app.Workbooks.Open(templetFile);得到工作表對(duì)象Excel.WorksheetworkSheet=(Excel.Worksheet)workBook.Sheets.get_Item(1);復(fù)制sheetCount-1個(gè)工作表對(duì)象for(inti=1;i<sheetCount;i++){((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);}將源DataTable數(shù)據(jù)寫入各Excel工作表中for(inti=1;i<=sheetCount;i++){記錄開始讀datable起始位置startRow=(i-1)*rows;記錄結(jié)束行索引endRow=i*rows;if最后一個(gè)WorkSheet,那么記錄結(jié)束行索引為源DataTable行數(shù))endRow=rowCount;獲取要寫入數(shù)據(jù)的工作表對(duì)象Excel.Worksheetsheet=(Excel.Worksheet)workBook.Worksheets.get_Item(i);重命名sheet.Name=sheetPrefixName+"-"+i.ToString();將datatable中的數(shù)據(jù)寫入工作表for(intj=0;j<endRow-startRow;j++){for(intk=0;k<colCount;k++){sheet.Cells[top+j,left+k]=dt.Rows[startRow+j][k].ToString();}文件保存為outputFile路徑workBook.SaveAs(outputFile);關(guān)閉文件,退出Excel應(yīng)用,回收資源,否則拋出異常判斷進(jìn)程啟動(dòng)時(shí)間,刪除當(dāng)前的Excel進(jìn)程p.Kill();}記錄總行數(shù)對(duì)每個(gè)工作表行數(shù)求余n=rowCount%rows;if余數(shù)為零return記錄總行數(shù)對(duì)工作表行數(shù)求商rowCount/rows;elsereturn記錄總行數(shù)對(duì)工作表行數(shù)求商取整加1(rowCount/rows)+1;}}5.6不同指標(biāo)對(duì)應(yīng)變化曲線5.6.1將邊井、角井、中心井、注采不完善井按照不同的含水分級(jí)作出統(tǒng)計(jì)表,按照不同時(shí)期不同注采的值,用chart插件設(shè)置不同顏色,每個(gè)顏色對(duì)應(yīng)一種注采含水分級(jí)值,用插件描點(diǎn),繪制出不同注采對(duì)應(yīng)含水變化曲線圖5-8不同注采對(duì)應(yīng)關(guān)系含水變化曲線5.6.2根據(jù)不同含水分級(jí)中河道砂的數(shù)量,計(jì)算出不同時(shí)期含水分級(jí)的平均值,計(jì)算相對(duì)應(yīng)時(shí)期提高采收率。以同樣的統(tǒng)計(jì)方法,用chart算好比例,設(shè)置顏色屬性,繪制出曲線。如圖5-9所示:圖5-9不同河道砂控制程度含水變化曲線5.7其他系統(tǒng)還包括不同含水變化類型生產(chǎn)狀況表,不同含水回升值生產(chǎn)數(shù)據(jù)表,不同含水下降值生產(chǎn)數(shù)據(jù)表,不同見效類型生產(chǎn)狀況表,不同含水下降值含水變化,不同含水下降值提高采收率變化曲線,不同含水回升值含水變化,不同含水回升值提高采收率變化曲線,不同注采對(duì)應(yīng)關(guān)系提高采收率變化曲線,不同河道砂控制程度含水變化曲線,不同注聚前含水變化曲線,不同注聚前含水提高采收率變化曲線。第6章聚驅(qū)區(qū)塊動(dòng)態(tài)分析系統(tǒng)測(cè)試6.1測(cè)試方法軟件測(cè)試是保證軟件質(zhì)量的關(guān)鍵步驟,它是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)而后編碼的最后復(fù)審。測(cè)試時(shí)為了發(fā)現(xiàn)程序中的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶。測(cè)試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應(yīng)具有的功能,可以通過(guò)測(cè)試來(lái)檢驗(yàn)是否每個(gè)功能都能正常使用;如果知道產(chǎn)品內(nèi)部工作過(guò)程,可以通過(guò)測(cè)試來(lái)檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書的規(guī)定正常進(jìn)行。前一個(gè)方法稱為黑盒測(cè)試,后一個(gè)稱為白盒測(cè)試。通常在編寫出每個(gè)功能模塊之后就對(duì)它做必要的測(cè)試,稱為單元測(cè)試。這個(gè)階段結(jié)束之后,對(duì)系統(tǒng)還應(yīng)該進(jìn)行各種綜合測(cè)試,這是系統(tǒng)生存周期中一個(gè)獨(dú)立的階段。本系統(tǒng)采用了黑盒測(cè)試(功能測(cè)試)與白盒測(cè)試(結(jié)構(gòu)測(cè)試)相結(jié)合的方式進(jìn)行了測(cè)試。測(cè)試過(guò)程可分為模塊測(cè)試,子系統(tǒng)測(cè)試,系統(tǒng)測(cè)試和驗(yàn)收測(cè)試。以下就本系統(tǒng)在開發(fā)過(guò)程中進(jìn)行測(cè)試的主要環(huán)節(jié)做簡(jiǎn)要介紹。(1)模塊測(cè)試在設(shè)計(jì)好的軟件系統(tǒng)中,每個(gè)模塊完成一個(gè)清晰定義的子功能,而且這個(gè)子功能和同級(jí)其它模塊的功能之間沒有相互依賴關(guān)系。因此,有可能把每個(gè)模塊作為一個(gè)單獨(dú)的實(shí)體來(lái)測(cè)試,通常比較容易設(shè)計(jì)檢驗(yàn)?zāi)K正確性的測(cè)試方案。模塊測(cè)試的目的是保證每個(gè)模塊作為一個(gè)單元能正確運(yùn)行。在這個(gè)測(cè)試步驟中所發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)中的錯(cuò)誤。(2)子系統(tǒng)測(cè)試子系統(tǒng)測(cè)試是把經(jīng)過(guò)單元測(cè)試的模塊放在一起形成一個(gè)子系統(tǒng)來(lái)測(cè)試。模塊相互間的協(xié)調(diào)和通信是這個(gè)測(cè)試過(guò)程中的主要問題,因此
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年滑片輸油泵項(xiàng)目可行性研究報(bào)告
- 訂餐采購(gòu)合同范例
- 公寓車位出售合同范例
- 五年級(jí)數(shù)學(xué)(小數(shù)除法)計(jì)算題專項(xiàng)練習(xí)及答案
- 陽(yáng)澄湖大閘蟹銷售合同范例
- 二年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)
- 窗簾股東合作合同范例
- 酒店上游合同范例
- 家具寄存?zhèn)}庫(kù)出租合同范例
- 2024至2030年亮膚按摩素項(xiàng)目投資價(jià)值分析報(bào)告
- 無(wú)人機(jī)培訓(xùn)教材
- 穿脫隔離衣及注意事項(xiàng)培訓(xùn)課件穿脫隔離衣的注意事項(xiàng)有哪些
- 機(jī)械加工工藝過(guò)程卡片+工序卡
- 家長(zhǎng)會(huì)課件:小學(xué)二年級(jí)家長(zhǎng)會(huì)課件主題
- 子癇應(yīng)急預(yù)案
- 土石方工程挖掘機(jī)人員車輛信息登記表
- 崗位價(jià)值評(píng)估表
- 漢語(yǔ)教程(講課)-第二冊(cè)第01課
- 尋貓啟事標(biāo)準(zhǔn)范文
- 高中音樂-《錦雞出山》教學(xué)課件設(shè)計(jì)
- DB51T3062-2023四川省高標(biāo)準(zhǔn)農(nóng)田建設(shè)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論