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

基于Qt和動態鏈接庫的SEG-Y格式地震數據讀寫軟件開發

2017-04-14 01:53:27張成云石深涵熊杰夏成靜張伊
長江大學學報(自科版) 2017年1期

張成云,石深涵,熊杰,夏成靜,張伊

(長江大學電子信息學院,湖北 荊州 434023)

基于Qt和動態鏈接庫的SEG-Y格式地震數據讀寫軟件開發

張成云,石深涵,熊杰,夏成靜,張伊

(長江大學電子信息學院,湖北 荊州 434023)

SEG-Y格式是國際通用的地震數據文件格式。針對該格式文件結構復雜、讀取困難的問題,在Qt框架下采用動態鏈接庫技術開發了可重用的SEG-Y格式地震數據讀寫軟件。該軟件首先讀取文件頭和道頭信息,然后以人機交互方式設置相應參數,最后讀取實際地震數據。測試結果表明,該軟件能正確讀寫SEG-Y格式地震數據文件,并以動態鏈接庫的形式供第三方使用,為地震數據處理解釋軟件的國產化提供支持。

SEG-Y格式;地震數據;讀寫軟件;Qt;動態鏈接庫

地震勘探是石油勘探中一種最常見和最重要的方法[1],地震數據一般采用SEG-Y格式存儲,該格式是由SEG(Society of Exploration Geophysicists)提出的國際標準,是石油勘探行業通用的地震數據格式。目前,國外商業軟件對SEG-Y格式文件讀寫支持較好,但其SEG-Y格式讀寫模塊不對外開放,無法重用。因此,有必要開發可重用的SEG-Y格式[1]地震數據讀寫軟件,為地震數據處理解釋軟件國產化提供支持。下面,筆者將先對SEG-Y文件格式進行分析,再在Qt框架[2]下開發SEG-Y格式地震數據讀寫軟件,最后分析在Qt中利用DLL對讀寫代碼封裝的方法及軟件調試結果。

1 SEG-Y格式文件格式

標準SEG-Y格式文件[3]一般包括3部分,第1部分是EBCDIC文本文件頭,第2部分是二進制文件頭,第3部分是地震道數據集。SEG-Y文件格式如圖1所示,其中,文本文件頭長度為3200字節,采用EBCDIC字符編碼,需轉換成ASCII碼后才能在PC上顯示;二進制文件頭長度為400字節,其數據類型是16位或32位整型,記錄SEG-Y文件的格式信息;地震道數據集由各道地震數據組成,每一道地震數據由240字節的二進制道頭和采樣點數據集組成。其中,二進制道頭包含該道的CDP號、XLine號、Line號、采樣點數、采樣間隔、采樣點數據格式等信息。

圖1 SEG-Y文件格式示意圖

2 SEG-Y格式讀寫軟件設計

圖2 SEG-Y格式讀寫軟件結構框圖

SEG-Y格式讀寫軟件采用人機交互方式設置參數,實現地震數據讀取和導出功能。根據SEG-Y格式文件的特點,設計軟件功能模塊框圖如圖2所示。

該軟件模塊由5個模塊組成:工作區管理模塊為新建文件和打開工作區提供支持;地震數據文件信息處理模塊負責讀取文本文件頭、二進制文件頭和各道頭參數,如CDP號、XLine號、Line號、采樣點數、采樣間隔、采樣點數據格式等;地震數據讀取模塊實現SEG-Y文件數據讀取功能;地震數據格式轉換模塊負責IEEE、IBM、PC 3種格式的相互轉換;文件管理模塊實現文件輸入和輸出功能。

3 SEG-Y格式文件讀寫軟件開發

3.1 SEG-Y格式文件讀寫流程

SEG-Y格式文件的讀取過程復雜,包括文本文件頭、二進制文件頭的解析與顯示,人機交互進行參數設置,地震數據的讀取、導出等步驟。SEG-Y格式文件讀寫的流程圖如圖3所示。

圖3 SEG-Y格式文件讀寫流程圖

3.2 數據格式轉換

SEG-Y格式文件支持IEEE、IBM、PC這3種數據格式,軟件可以實現3種格式之間相互轉換的功能。以IBM格式轉換為IEEE格式為例,其轉化代碼如下:

void SEGy::IBM2IEEE(float* data, bool swap)

{

if(swap)

{

tem = cbuf[0]; cbuf[0] = cbuf[3]; cbuf[3] = tem;

tem = cbuf[2]; cbuf[2] = cbuf[1]; cbuf[1] = tem;

}

expp = (unsigned char)(*mantis?24);

*mantis = (*mantis)?8;

shift = 1;

while(*mantis > 0 && shift < 23) {

*mantis = *mantis?1;

shift++;

}

*mantis = *mantis?1;

sign = expp & 0x80;

expp = expp & 0x7F;

if(expp != 0)

{

expp = expp-64;

*umantis = *umantis?9;

expll = 0x7F + (expp*4 - shift);

expll = expll?23;

if(sign) *umantis = expll | *mantis | 0x80000000;

else *umantis = expll | *mantis;

}

}

3.3 Qt框架下DLL開發

DLL可以創建可重用代碼模塊[5,6],通過DLL對代碼進行共享,從而實現SEG-Y格式文件讀寫軟件模塊代碼重用。在Qt中創建DLL工程[4]步驟如下:在Library中選擇C++library,在Type中選擇Shared Library,在Name中命名DLL的工程名。創建完畢之后會生成2個頭文件,一個資源文件,除工程名對應的頭文件跟資源文件之外,還有一個“SEGy_global.h”。DLL的工程編譯,在工程名頭文件中加入需要封裝函數的成員變量和函數,同時還需要獲取封裝類中的對象,代碼如下:

extern “C”{

SEGYSHARED_EXPORT SEGy* getSEGyObject(); //獲取類SEGy的對象

SEGYSHARED_EXPORT void releseSEGyObject(SEGy*); //獲取類SEGy的對象

}

編寫的SEG-Y格式讀寫文件在minGW環境下進行編譯后,在工程的debug文件夾下可以找到“SEGy.dll、SEGy.o、SEGy.a”3個文件。其中,“SEGy.dll”是在Windows下面可調用的動態鏈接庫,“SEGy.o”是在Linux下可調用的動態鏈接庫。如果是在MSVC環境下編譯可以生成“SEGy.lib”和“SEGy.dll”文件,結果如圖4所示。

圖4 DLL編譯結果

4 軟件測試及結果

圖5 測試程序流程圖

在Qt中建立地震數據可視化的測試

程序,進行SEG-Y格式文件可重用模塊的功能檢測。測試程序調用的流程圖如圖5所示。

為在測試程序中實現DLL調用,首先將SEGy.h和SEGy_global.h頭文件放在當前的工程文件夾下,添加到當前工程中;然后設置鏈接庫的路徑;最后在主程序中包含頭文件和宏定義,并導入動態鏈接庫文件。執行結果圖如圖6所示。

庫調用過程中,設置DLL的路徑需要以下代碼:

LIBS +=segy.DLLDESTDIR #很重要!路徑設置問題。

LIBS += 〗 …/…/segy.DLLDESTDIR

通過上述代碼指出庫所在的文件夾位置,路徑設置正確后進行庫調用的下一步操作,代碼如下:

#include

#include “SEGy.h”

typedef SEGy* (*CreatSEGy)();

typedef bool (*ReleSEGyDll)(SEGy*);

圖6(a)是SEG-Y格式文件信息的處理:文件篩選獲取,SEG-Y格式文件道頭的讀取操作及地震數據的平面或立體呈現的選擇,為文件的讀取做準備;圖6(b)是對一個IBM格式文件的識別,讀取結果正確,說明讀寫軟件能正確讀寫SEG-Y格式地震數據;圖6(c)是格式轉換界面,該文件是由IBM格式轉換為IEEE格式,轉換后的SEG-Y格式文件各項參數的變化依次呈現,提供詳細的數據變換結果。

5 結語

利用Qt框架良好的跨平臺特性,編寫了SEG-Y格式地震數據文件讀寫代碼,并通過DLL技術進行封裝實現了軟件模塊的可重用性。軟件測試結果表明,該軟件能正確讀取SEG-Y格式地震數據,且具有跨平臺和可重用特性,能為地震數據處理解釋軟件的國產化提供支持。

圖6 SEG-Y格式文件讀取軟件模塊執行結果圖

[1]劉旭躍,周巍,孔祥寧,等.SEG-Y格式自動轉化軟件的研究與實現[J].物探化探計算技術,2016,38(1):126~127.

[2]王文芳,許文峰,許冰清,等.基于Qt的人機交互2.5維地質建模軟件設計與實現[J].成都大學學報(自然科學版),2013,32(12):371~374.

[3]劉明忱,孫建國.基于C語言的SEG-Y數據格式分析與轉化[J] .地球物理學進展,2016,31(1):0260~0267.

[4]Jasmin Blanchette, Mark Summerfield.C++ GUI Programming with Qt4.Second Edition[M].閆鋒欣,曾泉人,張志強,等譯.北京: 電子工業出版社,2007:174~321.

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

[6] 宋偉聰,李德春,邱開林,等.VB與Fortran混合編程的重磁數據處理可視化系統[J].長江大學學報(自科版),2016,13(17):28~31.

[編輯] 洪云飛

2016-11-12

湖北省教育廳科學技術研究項目(D20131206, B2016034);長江大學創新創業訓練項目(20160042)。

熊杰(1975-),男,博士,副教授,現主要從事科學可視化、云計算、地球物理反演方面的教學與研究工作,xiongjie@yangtzeu.edu.cn。

TP391.9;P631.4

A

1673-1409(2017)01-0012-05

[引著格式]張成云,石深涵,熊杰,等.基于Qt和動態鏈接庫的SEG-Y格式地震數據讀寫軟件開發[J].長江大學學報(自科版),2017,14(1):12~16,74.

主站蜘蛛池模板: 欧美一级在线| 99在线视频精品| 亚洲天堂精品视频| 国产精品一老牛影视频| 波多野结衣的av一区二区三区| 美女啪啪无遮挡| 午夜福利无码一区二区| 国产杨幂丝袜av在线播放| 午夜无码一区二区三区| 国产成人a在线观看视频| 无码啪啪精品天堂浪潮av | 国产91蝌蚪窝| 国产原创第一页在线观看| 亚洲国产成熟视频在线多多| 国产三级韩国三级理| 亚洲IV视频免费在线光看| 亚洲综合网在线观看| 国产亚洲第一页| 国产性爱网站| 91成人在线免费视频| 亚洲国产精品一区二区第一页免| 99国产在线视频| 亚洲国产第一区二区香蕉| 日本亚洲最大的色成网站www| 亚洲欧美日韩另类| 经典三级久久| 午夜视频免费一区二区在线看| 露脸国产精品自产在线播| 久久77777| 69综合网| 亚洲三级电影在线播放| 久久99久久无码毛片一区二区| 中文字幕在线日韩91| 亚洲欧美日韩色图| 欧美成人区| 久久久精品无码一二三区| 国产内射一区亚洲| 亚洲AV电影不卡在线观看| 一区二区三区四区精品视频 | 国产精品一线天| a级毛片免费播放| 日本黄色不卡视频| 99成人在线观看| 天天综合色网| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 欧美国产日韩一区二区三区精品影视| 日韩欧美国产精品| 国产国产人成免费视频77777 | 国产一级精品毛片基地| 亚洲一区免费看| 日本欧美在线观看| 超碰免费91| 99激情网| 为你提供最新久久精品久久综合| 亚洲视频在线网| 亚洲无码A视频在线| 波多野结衣视频网站| 国产自无码视频在线观看| 日韩在线播放中文字幕| 强乱中文字幕在线播放不卡| 青青青伊人色综合久久| 婷婷伊人五月| 国产jizzjizz视频| 狠狠综合久久| 综合成人国产| 日韩欧美国产成人| 园内精品自拍视频在线播放| 久久这里只有精品8| 国产高清无码第一十页在线观看| a级毛片在线免费观看| 久久99国产乱子伦精品免| 伊人久久综在合线亚洲2019| 国产在线视频欧美亚综合| 2021国产精品自拍| 日韩欧美中文| 无码电影在线观看| 思思热精品在线8| 免费又黄又爽又猛大片午夜| 欧美成人免费午夜全| 超碰91免费人妻| 老司机aⅴ在线精品导航| 亚洲精品天堂自在久久77|