999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

地質地層數據處理的GRID類設計及DLL實現

2016-04-27 06:06:14王保華
長江大學學報(自科版) 2016年7期

王保華 

陸建林,左宗鑫 (中石化石油勘探開發研究院無錫石油地質研究所,江蘇 無錫 214126)

?

地質地層數據處理的GRID類設計及DLL實現

陸建林,左宗鑫(中石化石油勘探開發研究院無錫石油地質研究所,江蘇 無錫 214126)

[摘要]地質工作需要處理大量的三維空間數據,這類三維數據體可以統一到一種通用的三維數據結構——Sufer的GRID格式數據結構。在GRID格式數據基礎上,建立其多種操作方法的GRID類并實現其動態鏈接庫,進而可以方便的實現不同語言平臺的動態調用。闡述了Sufer明碼格網文件結構,介紹了重要屬性、I/O操作、運算符重載、查詢方法等屬性方法的設計,分析了單點查詢流程,并采用C++Builder開發工具中的DLLWizard實現了DLL的建立。在四川盆地川西坳陷海相烴源巖生烴史模擬數據處理及模擬結果分析工作中的應用驗證了其快速、方便、準確的特點。

[關鍵詞]Sufer明碼格網文件;GRID類;動態鏈接庫(DLL)

在地質領域中,大量使用三維體來表示三維空間信息,如平面構造、地層厚度分布、地層剝蝕量、溫度平面分布、RO平面分布、烴源巖厚度分布、有機碳平面分布、生烴強度分布、資源量分布、油氣化探異常分布等。而表現這些信息的數據結構卻不盡相同,要實現這些數據的運算操作必須要將其統一到相同的數據結構中才能實現。Surfer明碼格網文件格式使用單精度值,存儲信息量大、精度高,能在 Surfer工作表或一個文本編輯器中編輯,同時也能實現程序的讀寫。Surfer軟件本身提供的強大的插值功能和繪制圖件能力,使其成為用來處理三維體首選的軟件 。它能迅速地將離散點的測量數據通過插值轉換為連續的數據曲面 ,形成Surfer明碼格網文件。尤其是Surfer8.0,提供了12種內插方法:反距離加權插值法、克里格插值法、最小曲率法、改進謝別德法、自然鄰點插值法、最近鄰點插值法、多元回歸法、徑向基函數法、線性插值三角網法、移動平均法、局部多項式法和數據度量法[1]。

面向對象方法用對象作為實際系統的抽象,作為系統的基本單位,將信息和相關的方法封裝后,使得軟件易于修改、擴充和維護,通過類的繼承關系,簡化系統的構造過程和文檔,并且支持重用,擴大了重用范圍[2]。DLL(動態鏈接庫)可以單獨對庫進行升級,而應用程序也不需要重新編譯就可以使用版本更新的庫。采用動態庫的程序通常占有更少的硬盤空間和更少的系統資源,當多個使用同一個DLL進程執行的時候,此DLL僅載入一次,不同語言編寫的可執行程序可以調用同一個DLL[3~5]。而針對Surfer明碼格網(GRID)數據格式的操作,經常應用于地質數據處理如(盆地模擬數據準備、資源量計算、油氣化探數據處理等)的實際工作中。因此,有必要編寫一個通用的基于Surfer明碼格網(GRID)數據操作的類(GRID類)。

1Surfer明碼格網文件 和GRID類的設計

1.1Surfer明碼格網文件結構

GRID數據接口是一個開放式的軟件數據接口,用戶用其他軟件獲取的數據只要按照明碼格式寫成.grd后綴文件,就可以由Surfer系統讀取。其明碼數據格式是 ASCII碼的文件,包括了平面上的點數、XYZ方向的最大最小值以及規格格網點上的元素屬性值。其線文件結構如下:

DSAA //文件標識

row list //格網行、列數;

xmin xmax //X方向最小最大值;

ymin ymax//Y方向最小最大值;

zmin zmax//Z方向最小最大值;

z11 z21 z31 …。//格網元素屬性值。

該格式數據在有效數據范圍外格網以無窮大數代替(通常為一個很大的數,如1.7e+38)。GRID數據結構徹底改變了XYZ格式的數據結構,節省了存儲平面XY坐標的空間,同時使得對整個數據體快速實現平面的縮放和位移。

1.2GRID類的設計

GRID類的設計必須考慮其數據結構的特性以及其在實際應用中的操作需求。根據GRID數據結構本身的特點,首先需要實現GRID數據的I/O操作、實現對運算符號的重載和實現關于數據體的一般查詢,其次需要考慮對格網的更新和其在資源量計算等實際工作的計算方法。

1.2.1重要屬性設計

GRID類的重要屬性(見表1)保存GRID數據結構的重要信息,其大部分變量是加載數據時直接賦予的,用戶需要獲取這些信息時只能通過類提供的方法來實現,這些屬性的讀取,用戶不能修改這些固有屬性的值。元素屬性和異常代號由于其動態性而必須設置為用戶可讀寫變量。

表1 GRID類的重要屬性表

1.2.2I/O操作設計

I/O操作主要包括對GRID格式數據的讀取和保存,是提供給用戶的基本接口,操作方法為:

Bool LoadFromFile(AnsiString FileName);

//加載數據文件,函數參數為數據文件全路徑文件名,加載成功返回真反之為假

Bool CGrid::SaveToFile(AnsiString FileName);

//保存數據文件,函數參數為數據文件全路徑文件名,保存成功返回真反之為假

1.2.3運算符重載設計

對GRID格式數據的運算符重載是本類的重要方法,方法如下:對+、-、*、/的重載可以實現2個同類型格網(即格網行、列數相同)、格網與數值、數值與格網的算術運算,當2個同類型格網進行算術運算時,如果有效格網區域相同則可直接運算,當格網有效格網區域不同時,為了敘述方便,作網格示意圖(見圖1),格網1和格網2其重疊后被分為A、B1(B2)、C這3塊,其中格網1=A+B1,格網2=B2+C,B1(B2)為2個格網重疊區域。并作出如下約定:當格網1與格網2進行+、-運算時把格網1有效區拓展到C,把格網2有效區拓展到A,并設定拓展區域元素屬性值為0,再進行運算;當進行*、/運算時,把格網1和格網2有效區縮小到B,A、C區域為無效格網區域,再進行運算。&,|分別實現類似于*、/運算區域的加法和減法。對=號的重載實現了格網的賦值功能。

1.2.4查詢方法設計

圖1 格網示意圖

查詢方法也是GRID提供的最基本的方法,主要包括單點查詢、線段查詢、條件區域查詢。

1)單點查詢提供對區域內的任意點格網元素屬性值實現查詢功能,方法名為GetPoint();

2)線段查詢提供對區域內的任意直線段上的元素屬性值查詢,方法名為GetLine(),通過該方法對多個疊加格網進行查詢時可獲得相應的元素屬性值的一條剖面;

3)條件區域查詢提供對某條件下區域內符合該條件的點集合進行查詢,方法名為GetArea(),通過該方法的多種重載可實現不同條件下的區域查詢,以下列出一些重載方法:

GRID GetArea(int 上界限,int下界限);

//實現對給定常數的上下界限進行查詢,返回符合條件的格網;

GRID GetArea(GRID上界限,GRID下界限);

//實現對給定格網的上下界限進行查詢,返回符合條件的格網;

GRID GetArea(int 上界限,GRID下界限)和GRID GetArea(GRID 上界限,int下界限)

//實現對給定常數(格網)的上界限及格網(常數)的下界限進行查詢,返回符合條件的格網;

GRID GetArea(GRID 參照格網,GRID 目標格網,bool 標志);

//實現對目標格網的有效區域的重新定義,該有效區域將是參照格網與目標格網相交的區域,返回操作后的格網,該方法實現類似Surfer中的白化功能;

圖2 單點查詢流程圖

由于查詢條件的不同因此查詢方法也多樣化,但通過對不同查詢條件方法的重載可以實現各種條件的查詢功能。

2查詢操作流程

任意單點查詢提供對區域內的任意點格網元素屬性值實現查詢功能,其實現流程如圖2所示。

單點查詢中,當查詢點不在格網頂點上時,可以采用插值的方式獲得查詢點的屬性值,插值算法可以采用多樣化,以形成不風格的單點查詢方式,常用的方法為網格區域的4點距離平方反比法。

單點查詢是線段查詢和條件查詢的基礎,通過對平面線段的若干個等間距點的單點查詢,可以實現線段屬性的提取;在若干個同坐標體系平面數據上進行線段查詢,可以或關于屬性的一條剖面;同樣通過對平面上各格網點的條件判斷可以實現條件查詢。

3DLL實現及調用

通過DLL實現的GRID類可以被大部分程序設計語言所調用。下面介紹DLL的實現和C++語言調用方法。DLL的實現必須選擇一個宿主語言,筆者采用C++Builder開發工具中的DLLWizard實現了DLL的建立(見圖3、圖4),調用方法一般的語言介紹文獻均有介紹[6],此不贅述。

圖3 選擇DLLWizard對話框                圖4 創建DLL向導

4實際應用

圖5 GRID類查詢方法在盆地模擬數據前處理中的應用

在川西坳陷海相烴源巖生烴史模擬工作中需要大量的平面文件操作,如由地層厚度數據形成構造數據。模擬中設計了20個層位,其各層構造數據通過Sufer軟件手動相加極其繁瑣,其極易出錯。而通過上述GRID類,只須調用相關方法既可實現。通過對構造數據的直線查詢,迅速提取構造剖面與實際地震剖面對比(見圖5),為地質人員提高工作效率。因此,通過GRID類的調用可以將地質研究人員從繁瑣的手動操作中解放出來,節約寶貴的時間用于地質研究。在模擬分析中,通過條件查詢快速計算出源巖各演化階段處于不同成熟階段分布面積和源巖各演化階段生烴強度較大值面積,為更精確的地質分析提供依據。

5結語

地質工作中各類平面數據體,都可以采用格網格式表達。Surfer軟件雖然可以實現對格網格式數據的簡單計算處理,但這種計算處理功能往往局限于固定的格式,遠遠滿足不了實際的應用需求,筆者利用GRID類編寫簡單的應用程序就可以輕而易舉的實現這些功能,且可以在實際應用中,根據實際需要進行添加或修改后只需要編譯一下DLL工程,而不需要重新編譯自己的應用程序,帶來了極大的便利。

[參考文獻]

[1]白世彪,閭國年,楊一鵬.關于ArcGIS和Surfer格網文件的轉換方法 [J].測繪通報,2005,51(2) :48~54.

[2]張麗英.面向對象的軟件開發技術的研究及實現[J] .軟件開發與設計,2009(11):57.

[3]步山岳.動態鏈接庫DLL[J].電腦編程技巧與維護,2002,9(5):50~52.

[4]鄧斌,盛文,陳玉.Borland C++Builder中動態鏈接庫的創建和調用[J].現代電子技術,2003,27(1):15~17.

[5]錢能.C++ 程序設計教程[M].北京:清華大學出版社,1999.

[6]李幼儀.C++Builder高級應用開發指南[M].北京:清華大學出版社,2002.

[編輯]洪云飛

[文獻標志碼]A

[文章編號]1673-1409(2016)07-0063-04

[中圖分類號]TP311.1

[作者簡介]王保華(1981-),男,工程師,碩士生,現主要從事油氣資源評價等方面研究工作;E-mail:wangbh.syky@sinopec.com。

[基金項目]國家科技重大專項(2011ZX05005-001);中國石油化工集團公司科技項目(P13073)。

[收稿日期]2015-11-26

[引著格式]王保華,陸建林,左宗鑫.地質地層數據處理的GRID類設計及DLL實現[J].長江大學學報(自科版),2016,13(7):63~66.

主站蜘蛛池模板: 综合社区亚洲熟妇p| 午夜福利免费视频| 四虎在线高清无码| 欧美精品啪啪一区二区三区| 精品99在线观看| 亚洲三级网站| 日韩福利视频导航| 欧美在线伊人| 国国产a国产片免费麻豆| jijzzizz老师出水喷水喷出| 亚洲av成人无码网站在线观看| 国产麻豆另类AV| 欧美一区二区三区不卡免费| 亚洲天堂精品视频| 亚洲男人在线| 素人激情视频福利| 在线精品亚洲国产| 中文字幕乱码二三区免费| 亚洲欧美不卡视频| 日韩毛片免费| 亚洲人成人伊人成综合网无码| 日韩精品欧美国产在线| 国产高清精品在线91| 国产小视频a在线观看| 日a本亚洲中文在线观看| 欧美yw精品日本国产精品| 亚卅精品无码久久毛片乌克兰 | 国产成在线观看免费视频| 亚洲精品中文字幕午夜| 亚洲天堂网在线播放| 黄色网站在线观看无码| 亚洲天堂网在线播放| 亚洲三级视频在线观看| 欧美日韩免费在线视频| 久久久久亚洲精品无码网站| 亚洲色无码专线精品观看| 欧美日韩激情在线| 欧美啪啪精品| 免费全部高H视频无码无遮掩| 久久网欧美| 92精品国产自产在线观看| a级毛片一区二区免费视频| 天天综合网色中文字幕| 视频二区欧美| 香蕉国产精品视频| 国产毛片不卡| 农村乱人伦一区二区| 亚洲男人的天堂网| 色老二精品视频在线观看| 中文字幕无码中文字幕有码在线| 亚洲中字无码AV电影在线观看| 国产精品部在线观看| 色爽网免费视频| 亚洲精品波多野结衣| 亚洲一区二区三区麻豆| 波多野衣结在线精品二区| av在线无码浏览| 极品国产在线| 在线观看国产精品一区| 国产原创自拍不卡第一页| 精品国产www| 亚洲娇小与黑人巨大交| 色老头综合网| 国产二级毛片| 欧美一区二区三区欧美日韩亚洲| 亚洲三级网站| 亚洲欧美一区二区三区蜜芽| 人妻精品全国免费视频| 日韩午夜片| 国产福利小视频在线播放观看| 91福利免费视频| 无码啪啪精品天堂浪潮av| 中文国产成人精品久久一| 欧美国产综合色视频| 丁香五月亚洲综合在线| 亚洲九九视频| 国产成人无码综合亚洲日韩不卡| 欧美日韩福利| 欧美h在线观看| 国产成人狂喷潮在线观看2345| 97人人模人人爽人人喊小说| 婷婷色狠狠干|