陳 寧 鄭永果
(山東科技大學計算機科學與工程學院 山東 青島 266590)
壓裂工藝是石油開采工藝中的重要組成部分,壓裂施工曲線圖是壓裂過程的重要反映,也是壓裂效果評價的重要依據(jù)[1]。根據(jù)曲線的特征可以監(jiān)控作業(yè)施工、判定施工質(zhì)量、分析施工情況[2]。壓裂施工曲線圖通常由三條曲線組成,是以時間為橫坐標,以施工泵壓、施工排量、砂濃度為縱坐標的曲線圖[3],但在實際作業(yè)中壓裂施工曲線圖包含多條壓裂施工參數(shù)曲線。
金字塔模型是一種重要的數(shù)據(jù)組織形式和應(yīng)用模型,眾多學者對其已有廣泛的研究并取得了重要的成果[4]。在遙感影像的應(yīng)用中,金字塔模型的構(gòu)建方法通常分為兩種,一種是根據(jù)數(shù)據(jù)源本身存在的多種分辨率直接構(gòu)建相應(yīng)分辨率的金字塔模型,另一種是只有原始數(shù)據(jù)需利用重采樣的方式建立不同分辨率的金字塔模型[5]。
根據(jù)壓裂工藝中的壓裂施工參數(shù)、數(shù)據(jù)采集頻率和采集周期三個因素的綜合考慮,將這些大數(shù)據(jù)量的曲線數(shù)據(jù)一次性全部加載并繪制出曲線不僅響應(yīng)等待時間過長,而且消耗大量的內(nèi)存。因此如何對海量壓裂施工曲線數(shù)據(jù)進行有效的組織,使其具有高交互性是一個值得研究的問題。在保證曲線形狀特征不變的前提下,結(jié)合Douglas-Peucker算法和金字塔緩存模型的構(gòu)建思想,本文提出一種面向壓裂施工曲線的金字塔模型的構(gòu)建方法,并通過實驗證明了該方法的可行性,實現(xiàn)了海量壓裂施工曲線數(shù)據(jù)高效加載、快速繪制及瀏覽的性能。
金字塔模型在圖像處理、圖像壓縮、圖像檢索方面有著廣泛的應(yīng)用[6]。本文中的曲線數(shù)據(jù)金字塔模型是在分析現(xiàn)有金字塔模型構(gòu)建思想的基礎(chǔ)上提出的一種面向壓裂施工曲線數(shù)據(jù)的多數(shù)據(jù)量級別的層次模型。曲線數(shù)據(jù)金字塔模型是實現(xiàn)海量壓裂施工曲線數(shù)據(jù)可視化的基礎(chǔ)。
從曲線數(shù)據(jù)金字塔模型的頂層到底層,形成數(shù)據(jù)量按比例逐漸增大的多層次集合,越接近底層,所表示的曲線數(shù)據(jù)信息越詳細,但每個層次所表示的曲線形狀特征始終保持不變。如圖1所示,曲線數(shù)據(jù)金字塔模型的底層數(shù)據(jù)量最多,頂層數(shù)據(jù)量最少,并且相鄰兩層的數(shù)據(jù)量為兩倍關(guān)系。采用曲線數(shù)據(jù)金字塔模型存儲壓裂施工數(shù)據(jù)的優(yōu)點是,當對壓裂施工曲線數(shù)據(jù)進行顯示時,能夠快速顯示數(shù)據(jù)量最少的頂層,隨著縮放操作的進行,只需按照顯示的需求選擇最接近的層次進行顯示,不需要讀取整個數(shù)據(jù)集,減少了數(shù)據(jù)的I/O操作和網(wǎng)絡(luò)間的數(shù)據(jù)傳輸,提高了曲線繪制效率及瀏覽速度。
圖1 曲線數(shù)據(jù)金字塔模型
曲線數(shù)據(jù)金字塔模型的構(gòu)建過程中,采用曲線數(shù)據(jù)壓縮算法按照曲線數(shù)據(jù)金字塔模型的層次,自底層逐層向上依次對原始數(shù)據(jù)進行壓縮,以滿足曲線數(shù)據(jù)金字塔模型各層對數(shù)據(jù)量的要求。曲線壓縮對于計算機圖形學、計算機制圖學等有著重要的意義。曲線壓縮也稱為曲線特征點提取,是將曲線近似地表示為一系列點,安全地過濾曲線冗余數(shù)據(jù)點的方法,其實質(zhì)是一個信息的壓縮問題。從組成曲線的數(shù)據(jù)集合中抽取一個子集,該子集能夠從內(nèi)容上近似地反映原集合[7]。
本文中采用較為經(jīng)典的Douglas-Peucker算法對壓裂施工曲線數(shù)據(jù)進行壓縮。Douglas-Peucker算法是通過保留關(guān)鍵點刪除次要點來達到曲線數(shù)據(jù)壓縮的目的[8]。該算法突出的優(yōu)點是它不僅是一個整體算法,可以從整體上有效地保持曲線要素的形態(tài)特征,減少數(shù)據(jù)冗余,而且能夠利用遞歸過程有效地完成算法實現(xiàn)[9-10]。Douglas-Peucker算法的步驟如下:
步驟1將曲線的首末兩點P1、Pn虛連成一條直線。
步驟2計算曲線上除首末兩端點的所有點Pi(i=2,3,…,n-1)與直線P1Pn距離d,選取距離最大的點PM和最大距離dM。
步驟3比較最大距離dM是否小于預(yù)先設(shè)定的閾值D,若是,則將曲線上的中間點全部舍去。
步驟4若否,則點PM為該曲線的特征點,并以該點PM為界,把曲線分為P1PM和PMPn兩部分,分別對這兩部分重復(fù)進行以上步驟,直至無法做進一步的壓縮為止,算法結(jié)束[11]。
壓裂施工曲線圖的繪制顯示效果與繪制方法存在必然聯(lián)系,不同的繪制方法對應(yīng)的最優(yōu)繪制點個數(shù)是不同的,當繪制點個數(shù)達到最優(yōu)時,曲線繪制效率最佳。本文針對壓裂施工曲線圖的繪制特性,采用基于XML的SVG技術(shù)進行繪制。經(jīng)多次實驗得出,當繪制點個數(shù)為2 000時,即所有壓裂施工參數(shù)構(gòu)建的曲線數(shù)據(jù)金字塔型的頂層總數(shù)據(jù)量為2 000時,曲線繪制及瀏覽效率最優(yōu)。
曲線數(shù)據(jù)金字塔模型的頂層數(shù)據(jù)量Mtop可由公式(1)計算得出:
曲線數(shù)據(jù)金字塔模型的最大分層數(shù)level,可根據(jù)曲線數(shù)據(jù)金字塔模型頂層的數(shù)據(jù)量Mtop以及該參數(shù)的原始數(shù)據(jù)量M來確定。level可由式(2)計算得出:
Mtop=M·2-level
(2)
曲線數(shù)據(jù)金字塔模型每一層的理想數(shù)據(jù)量Mideal,可根據(jù)最大分層數(shù)level以及該參數(shù)的原始數(shù)據(jù)量M來確定,Mideal可由式(3)和式(4)計算得出。
Mideal=M·2-k
(3)
式中:1≤k≤level。
Mideal=round(Mideal,-2)
(4)
曲線數(shù)據(jù)金字塔模型的構(gòu)建流程如圖2所示。
圖2 曲線數(shù)據(jù)金字塔模型的構(gòu)建流程
重復(fù)數(shù)據(jù)刪除操作,即刪除數(shù)據(jù)集中的重復(fù)數(shù)據(jù),只保留其中的一份,從而消除冗余數(shù)據(jù)。重復(fù)數(shù)據(jù)刪除操作后再應(yīng)用曲線壓縮算法對壓裂施工曲線數(shù)據(jù)進行壓縮,兩種方法相結(jié)合,以提高數(shù)據(jù)的壓縮效率。
在采用Douglas-Peucker算法對數(shù)據(jù)進行壓縮時,壓縮的結(jié)果與閾值的大小存在直接關(guān)系,壓縮后的數(shù)據(jù)量隨閾值的增大而減少。為了避免因固定閾值以及閾值選取的不確定性而導致壓縮效率降低的情況,本文采用了一種自適應(yīng)閾值的調(diào)節(jié)方法。閾值D的大小自動根據(jù)壓縮后的數(shù)據(jù)量Mdp和理想數(shù)據(jù)量Mideal不斷調(diào)整。自適應(yīng)閾值D可由式(5)計算得出:
式中:D0表示初始閾值。
式中:Ymax、Ymin分別表示壓裂施工參數(shù)的最大值與最小值。
在數(shù)據(jù)壓縮的過程中,除了需要保證曲線形狀特征不變,還需要考慮壓縮后數(shù)據(jù)分布的均勻性以及壓裂施工曲線數(shù)據(jù)展示的高交互性,因此采用了一種均勻化處理的方法。該均勻化處理方法是對壓縮后曲線分布稀疏的間隔進行插值,增強壓裂施工曲線圖的可讀性。本文在均勻化處理操作時,插值的數(shù)據(jù)將從原始數(shù)據(jù)中選取,以保證數(shù)據(jù)的真實性。
曲線數(shù)據(jù)金字塔模型的構(gòu)建算法如下:
輸入數(shù)據(jù):壓裂施工參數(shù)。
輸出數(shù)據(jù):壓裂施工曲線圖。
1. 初始化參數(shù),將參數(shù)值轉(zhuǎn)化為邏輯坐標值。
2. 通過式(1)計算每個壓裂施工參數(shù)所構(gòu)建的曲線數(shù)據(jù)金字塔模型的Mtop。
3. 對原始數(shù)據(jù)進行重復(fù)點刪除,操作后數(shù)據(jù)量為Mde。
4. 通過式(1)的Mtop和式(2)計算曲線數(shù)據(jù)金字塔模型的分層數(shù)。
5.fori=1,2,…,leveldo
6. 依次通過式(3)和式(4)計算曲線數(shù)據(jù)金字塔的Mideal。
7. 依次通過式(5)和式(6)調(diào)整Douglas-Peucker算法中的閾值D進行曲線數(shù)據(jù)特征點提取。
8.ifMdp 9. 均勻化處理。 10.endif 11.endfor 壓裂施工曲線數(shù)據(jù)的組織形式是數(shù)據(jù)存儲過程中的重要環(huán)節(jié),也是曲線數(shù)據(jù)金字塔模型構(gòu)建的重要步驟。曲線數(shù)據(jù)金字塔模型的每個壓裂施工參數(shù)的數(shù)據(jù)分別存儲在單獨的文件中,以參數(shù)名來命名。每個壓裂施工參數(shù)所構(gòu)建的曲線數(shù)據(jù)金字塔模型的每層數(shù)據(jù)分別存儲在不同的自定義元文件中。這個自定義元文件由文件頭和數(shù)據(jù)體構(gòu)成。 該自定義元文件采用二進制形式進行存儲,并添加信息頭進行加密,確保數(shù)據(jù)的安全性。文件頭記錄壓裂施工參數(shù)的最大值、最小值、總數(shù)據(jù)量、時間基值。時間基值指的是壓裂施工的開始日期。數(shù)據(jù)體記錄壓裂施工參數(shù)的數(shù)據(jù)值以及時間差值。時間差值指的是每個壓裂施工參數(shù)的施工日期與時間基值的差。為了便于曲線壓縮算法中的計算,需要將數(shù)據(jù)集中的壓裂施工日期全部轉(zhuǎn)化為毫秒數(shù)。曲線數(shù)據(jù)金字塔數(shù)據(jù)的存儲組織結(jié)構(gòu)如圖3所示。 圖3 數(shù)據(jù)的存儲組織結(jié)構(gòu) 本文提出的曲線數(shù)據(jù)金字塔模型構(gòu)建中,首先計算出該曲線數(shù)據(jù)金字塔模型的最大分層數(shù),其次根據(jù)最大分層數(shù)從金字塔底層至頂層構(gòu)建曲線數(shù)據(jù)金字塔模型。為了驗證算法的可行性,測試曲線數(shù)據(jù)金字塔模型的數(shù)據(jù)處理效率,對本文方法和直接繪制的方法進行對比,得出了壓裂施工曲線在數(shù)據(jù)量、繪制時間、縮放瀏覽性能的實驗對比結(jié)果。 實驗在64位Windows 7系統(tǒng)下,使用處理器為Intel(R)Core(TM)i3-2120M、內(nèi)存為4 GB的計算機,在360瀏覽器的極速模式下進行測試。實驗數(shù)據(jù)為某油田一號井的10個壓裂施工參數(shù)的數(shù)據(jù)信息,實驗結(jié)果如表1所示。 表1 實驗結(jié)果 通過實驗結(jié)果表明,當數(shù)據(jù)量較少時,采用本文方法與直接繪制的方法在繪制時間上差別較小,瀏覽效果流暢;隨著數(shù)據(jù)量的增大,采用本文方法與直接繪制的方法在繪制時間上差別較大,本文方法在對大數(shù)據(jù)量的曲線數(shù)據(jù)進行繪制顯示時更加快速,而直接繪制的方法響應(yīng)等待時間長,甚至在處理大數(shù)據(jù)量的數(shù)據(jù)時會導致瀏覽器崩潰。因此本文提出的曲線數(shù)據(jù)金字塔模型在曲線數(shù)據(jù)的處理、繪制方面更加快速、高效,而且不受數(shù)據(jù)量大小的影響,實現(xiàn)了壓裂施工曲線圖加載、瀏覽的快速響應(yīng)。 本文針對海量壓裂施工曲線數(shù)據(jù)高效加載、快速繪制及瀏覽的性能,對壓裂施工曲線數(shù)據(jù)進行壓縮、分層處理,提出一種面向壓裂施工曲線數(shù)據(jù)的金字塔模型構(gòu)建方法,并通過實驗驗證了方法的可行性,該方法不受數(shù)據(jù)量大小的限制,而且在數(shù)據(jù)處理效率、可操作性和靈活性方面有明顯提高。3 曲線數(shù)據(jù)金字塔的存儲組織結(jié)構(gòu)
4 實驗結(jié)果及分析
5 結(jié) 語