陳 寧 鄭永果
(山東科技大學計算機科學與工程學院 山東 青島 266590)
壓裂工藝是石油開采工藝中的重要組成部分,壓裂施工曲線圖是壓裂過程的重要反映,也是壓裂效果評價的重要依據[1]。根據曲線的特征可以監(jiān)控作業(yè)施工、判定施工質量、分析施工情況[2]。壓裂施工曲線圖通常由三條曲線組成,是以時間為橫坐標,以施工泵壓、施工排量、砂濃度為縱坐標的曲線圖[3],但在實際作業(yè)中壓裂施工曲線圖包含多條壓裂施工參數曲線。
金字塔模型是一種重要的數據組織形式和應用模型,眾多學者對其已有廣泛的研究并取得了重要的成果[4]。在遙感影像的應用中,金字塔模型的構建方法通常分為兩種,一種是根據數據源本身存在的多種分辨率直接構建相應分辨率的金字塔模型,另一種是只有原始數據需利用重采樣的方式建立不同分辨率的金字塔模型[5]。
根據壓裂工藝中的壓裂施工參數、數據采集頻率和采集周期三個因素的綜合考慮,將這些大數據量的曲線數據一次性全部加載并繪制出曲線不僅響應等待時間過長,而且消耗大量的內存。因此如何對海量壓裂施工曲線數據進行有效的組織,使其具有高交互性是一個值得研究的問題。在保證曲線形狀特征不變的前提下,結合Douglas-Peucker算法和金字塔緩存模型的構建思想,本文提出一種面向壓裂施工曲線的金字塔模型的構建方法,并通過實驗證明了該方法的可行性,實現(xiàn)了海量壓裂施工曲線數據高效加載、快速繪制及瀏覽的性能。
金字塔模型在圖像處理、圖像壓縮、圖像檢索方面有著廣泛的應用[6]。本文中的曲線數據金字塔模型是在分析現(xiàn)有金字塔模型構建思想的基礎上提出的一種面向壓裂施工曲線數據的多數據量級別的層次模型。曲線數據金字塔模型是實現(xiàn)海量壓裂施工曲線數據可視化的基礎。
從曲線數據金字塔模型的頂層到底層,形成數據量按比例逐漸增大的多層次集合,越接近底層,所表示的曲線數據信息越詳細,但每個層次所表示的曲線形狀特征始終保持不變。如圖1所示,曲線數據金字塔模型的底層數據量最多,頂層數據量最少,并且相鄰兩層的數據量為兩倍關系。采用曲線數據金字塔模型存儲壓裂施工數據的優(yōu)點是,當對壓裂施工曲線數據進行顯示時,能夠快速顯示數據量最少的頂層,隨著縮放操作的進行,只需按照顯示的需求選擇最接近的層次進行顯示,不需要讀取整個數據集,減少了數據的I/O操作和網絡間的數據傳輸,提高了曲線繪制效率及瀏覽速度。

圖1 曲線數據金字塔模型
曲線數據金字塔模型的構建過程中,采用曲線數據壓縮算法按照曲線數據金字塔模型的層次,自底層逐層向上依次對原始數據進行壓縮,以滿足曲線數據金字塔模型各層對數據量的要求。曲線壓縮對于計算機圖形學、計算機制圖學等有著重要的意義。曲線壓縮也稱為曲線特征點提取,是將曲線近似地表示為一系列點,安全地過濾曲線冗余數據點的方法,其實質是一個信息的壓縮問題。從組成曲線的數據集合中抽取一個子集,該子集能夠從內容上近似地反映原集合[7]。
本文中采用較為經典的Douglas-Peucker算法對壓裂施工曲線數據進行壓縮。Douglas-Peucker算法是通過保留關鍵點刪除次要點來達到曲線數據壓縮的目的[8]。該算法突出的優(yōu)點是它不僅是一個整體算法,可以從整體上有效地保持曲線要素的形態(tài)特征,減少數據冗余,而且能夠利用遞歸過程有效地完成算法實現(xiàn)[9-10]。Douglas-Peucker算法的步驟如下:
步驟1將曲線的首末兩點P1、Pn虛連成一條直線。
步驟2計算曲線上除首末兩端點的所有點Pi(i=2,3,…,n-1)與直線P1Pn距離d,選取距離最大的點PM和最大距離dM。
步驟3比較最大距離dM是否小于預先設定的閾值D,若是,則將曲線上的中間點全部舍去。
步驟4若否,則點PM為該曲線的特征點,并以該點PM為界,把曲線分為P1PM和PMPn兩部分,分別對這兩部分重復進行以上步驟,直至無法做進一步的壓縮為止,算法結束[11]。
壓裂施工曲線圖的繪制顯示效果與繪制方法存在必然聯(lián)系,不同的繪制方法對應的最優(yōu)繪制點個數是不同的,當繪制點個數達到最優(yōu)時,曲線繪制效率最佳。本文針對壓裂施工曲線圖的繪制特性,采用基于XML的SVG技術進行繪制。經多次實驗得出,當繪制點個數為2 000時,即所有壓裂施工參數構建的曲線數據金字塔型的頂層總數據量為2 000時,曲線繪制及瀏覽效率最優(yōu)。
曲線數據金字塔模型的頂層數據量Mtop可由公式(1)計算得出:

曲線數據金字塔模型的最大分層數level,可根據曲線數據金字塔模型頂層的數據量Mtop以及該參數的原始數據量M來確定。level可由式(2)計算得出:
Mtop=M·2-level
(2)

曲線數據金字塔模型每一層的理想數據量Mideal,可根據最大分層數level以及該參數的原始數據量M來確定,Mideal可由式(3)和式(4)計算得出。
Mideal=M·2-k
(3)
式中:1≤k≤level。
Mideal=round(Mideal,-2)
(4)
曲線數據金字塔模型的構建流程如圖2所示。

圖2 曲線數據金字塔模型的構建流程
重復數據刪除操作,即刪除數據集中的重復數據,只保留其中的一份,從而消除冗余數據。重復數據刪除操作后再應用曲線壓縮算法對壓裂施工曲線數據進行壓縮,兩種方法相結合,以提高數據的壓縮效率。
在采用Douglas-Peucker算法對數據進行壓縮時,壓縮的結果與閾值的大小存在直接關系,壓縮后的數據量隨閾值的增大而減少。為了避免因固定閾值以及閾值選取的不確定性而導致壓縮效率降低的情況,本文采用了一種自適應閾值的調節(jié)方法。閾值D的大小自動根據壓縮后的數據量Mdp和理想數據量Mideal不斷調整。自適應閾值D可由式(5)計算得出:
式中:D0表示初始閾值。
式中:Ymax、Ymin分別表示壓裂施工參數的最大值與最小值。
在數據壓縮的過程中,除了需要保證曲線形狀特征不變,還需要考慮壓縮后數據分布的均勻性以及壓裂施工曲線數據展示的高交互性,因此采用了一種均勻化處理的方法。該均勻化處理方法是對壓縮后曲線分布稀疏的間隔進行插值,增強壓裂施工曲線圖的可讀性。本文在均勻化處理操作時,插值的數據將從原始數據中選取,以保證數據的真實性。
曲線數據金字塔模型的構建算法如下:
輸入數據:壓裂施工參數。
輸出數據:壓裂施工曲線圖。
1. 初始化參數,將參數值轉化為邏輯坐標值。
2. 通過式(1)計算每個壓裂施工參數所構建的曲線數據金字塔模型的Mtop。
3. 對原始數據進行重復點刪除,操作后數據量為Mde。
4. 通過式(1)的Mtop和式(2)計算曲線數據金字塔模型的分層數。
5.fori=1,2,…,leveldo
6. 依次通過式(3)和式(4)計算曲線數據金字塔的Mideal。
7. 依次通過式(5)和式(6)調整Douglas-Peucker算法中的閾值D進行曲線數據特征點提取。
8.ifMdp 9. 均勻化處理。 10.endif 11.endfor 壓裂施工曲線數據的組織形式是數據存儲過程中的重要環(huán)節(jié),也是曲線數據金字塔模型構建的重要步驟。曲線數據金字塔模型的每個壓裂施工參數的數據分別存儲在單獨的文件中,以參數名來命名。每個壓裂施工參數所構建的曲線數據金字塔模型的每層數據分別存儲在不同的自定義元文件中。這個自定義元文件由文件頭和數據體構成。 該自定義元文件采用二進制形式進行存儲,并添加信息頭進行加密,確保數據的安全性。文件頭記錄壓裂施工參數的最大值、最小值、總數據量、時間基值。時間基值指的是壓裂施工的開始日期。數據體記錄壓裂施工參數的數據值以及時間差值。時間差值指的是每個壓裂施工參數的施工日期與時間基值的差。為了便于曲線壓縮算法中的計算,需要將數據集中的壓裂施工日期全部轉化為毫秒數。曲線數據金字塔數據的存儲組織結構如圖3所示。 圖3 數據的存儲組織結構 本文提出的曲線數據金字塔模型構建中,首先計算出該曲線數據金字塔模型的最大分層數,其次根據最大分層數從金字塔底層至頂層構建曲線數據金字塔模型。為了驗證算法的可行性,測試曲線數據金字塔模型的數據處理效率,對本文方法和直接繪制的方法進行對比,得出了壓裂施工曲線在數據量、繪制時間、縮放瀏覽性能的實驗對比結果。 實驗在64位Windows 7系統(tǒng)下,使用處理器為Intel(R)Core(TM)i3-2120M、內存為4 GB的計算機,在360瀏覽器的極速模式下進行測試。實驗數據為某油田一號井的10個壓裂施工參數的數據信息,實驗結果如表1所示。 表1 實驗結果 通過實驗結果表明,當數據量較少時,采用本文方法與直接繪制的方法在繪制時間上差別較小,瀏覽效果流暢;隨著數據量的增大,采用本文方法與直接繪制的方法在繪制時間上差別較大,本文方法在對大數據量的曲線數據進行繪制顯示時更加快速,而直接繪制的方法響應等待時間長,甚至在處理大數據量的數據時會導致瀏覽器崩潰。因此本文提出的曲線數據金字塔模型在曲線數據的處理、繪制方面更加快速、高效,而且不受數據量大小的影響,實現(xiàn)了壓裂施工曲線圖加載、瀏覽的快速響應。 本文針對海量壓裂施工曲線數據高效加載、快速繪制及瀏覽的性能,對壓裂施工曲線數據進行壓縮、分層處理,提出一種面向壓裂施工曲線數據的金字塔模型構建方法,并通過實驗驗證了方法的可行性,該方法不受數據量大小的限制,而且在數據處理效率、可操作性和靈活性方面有明顯提高。3 曲線數據金字塔的存儲組織結構

4 實驗結果及分析

5 結 語