資源簡(jiǎn)介
能夠準(zhǔn)確讀取segy文件,并從中提取裸數(shù)據(jù)、文件頭、道頭等重要信息,還能存儲(chǔ)成多種文件格式

代碼片段和文件信息
#include?
#include
#include
#include?
using?namespace?std;
int?read_Si(char*?Segy_filename)
{
//Function:從Segy文件中提取segy文件的道數(shù)Si
//INPUTS:輸入
//Segy_filename--文件名
//OUTPUTS:輸出
//data--處理后的到的裸數(shù)據(jù)
//INPUTS:輸出
//Si?????????采樣點(diǎn)數(shù)
int?Trace;
short?int?Si;
//打開文件
FILE?*?fp;
fp=fopen(Segy_filename“rb+“);
if(fp==NULL)?
{
cout<<“error!cant?open?file“< ????????exit;
????};
cout<<“加載文件“< //讀取采樣點(diǎn)數(shù)Si
fseek(fp32190);
fread(&Si21fp);
Si=Si+111;
cout<<“采樣點(diǎn)數(shù)“< return?Si;
}
int?read_Trace(char*?Segy_filename)
{
//Function:從Segy文件中提取segy文件的道數(shù)Trace
//INPUTS:輸入
//Segy_filename--文件名
//OUTPUTS:輸出
//data--處理后的到的裸數(shù)據(jù)
//INPUTS:輸出
//Trace??????道數(shù)
int?Trace;
short?int?Si;
//打開文件
FILE?*?fp;
fp=fopen(Segy_filename“rb+“);
if(fp==NULL)?
{
cout<<“error!cant?open?file“< ????????exit;
????};
cout<<“加載文件“< //讀取采樣點(diǎn)數(shù)Si
fseek(fp32190);
fread(&Si21fp);
Si=Si+111;
cout<<“采樣點(diǎn)數(shù)“< //文件總字節(jié)數(shù)file_n
int?file_n;
float?buffer; //緩存
fseek(fp0L2);
file_n=ftell(fp); //函數(shù)?ftell?用于得到文件位置指針當(dāng)前位置相對(duì)于文件首的偏移字節(jié)數(shù)。
//計(jì)算道數(shù)Trace
Trace=(file_n-3600)/(240+Si*4);
cout<<“道數(shù)“< return?Trace;
}
void?Convert_Sgy_To_Raw(char*?Segy_filenameint?ntrint?ns)
{
//輸入:
//ntr---?Segy文件總道數(shù)
//ns---?Segy文件的采樣點(diǎn)
//Segy_filename---?讀入文件的路徑 ‘
??vector?data;
?//?vector::iterator?it;
??ifstream?infile;
??infile.open(Segy_filenameios::binary);
//讀取地震裸數(shù)據(jù)
??infile.seekg(3600ios::beg);????//跳過(guò)3600字節(jié)的卷頭
??for(int?i=0;i ??{
??????infile.seekg(240ios::cur);??//跳過(guò)240字節(jié)的道頭
??????for(int?j=0;j ??{
??float?buffer;
??????????infile.read((char*)&buffersizeof(float));//讀取每個(gè)采樣點(diǎn)的數(shù)據(jù)格式為float類型????????
??data.push_back(buffer);
??????}
??}
?//?for(it=data.begin();it!=data.end();++it)
?//?{ cout<<*it< ??FILE?*?fs;
fs=fopen(“C:/Users/ljc/Desktop/data.txt““wb+“);
for(int?m=0;m {
fwrite(&data[m]sizeof(float)1fs);
}
fclose(fs);
infile.close();
}
//raw?to?segy
void?SaveSegyFile(char*?Segy_filenameint?Traceshort?int?Si)???
{
//打開原始數(shù)據(jù)的文件取文件頭和道頭
????ifstream??fp1?;
fp1.open(Segy_filenameios::binary);
if(!fp1)
{
cout<<“Open?file?falid“< return;
}
//打開已存處理后的裸數(shù)據(jù)的文件
ifstream?fp2;
fp2.open(“C:/Users/ljc/Desktop/data.txt“std::ios::binary);
if(!fp2)
{
cout<<“Open?file?falid“< return;
}
//打開新的文件,用于存放處理后的segy
ofstream?fp3;
fp3.open(“C:/Users/ljc/Desktop/NewSegy.segy“ios::binary);
if(!fp3)
{
cout<<“Open?file?falid“< return;
}
float?buffer; ????//緩存
int?ijk; //用于for循環(huán)
for(?i=0;i<(3600/sizeof(float));i++) //從Segy_filename中讀取文件頭
{
fp1.read((char*)&buffersizeof(float));
fp3.write((char*)&buffersizeof(float));
}
for(?i=0;i {
for(j=0;j<(240/sizeof(float));j++) //從Seg
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????97792??2015-07-18?16:18??test\Debug\test.exe
?????文件?????704068??2015-07-18?16:18??test\Debug\test.ilk
?????文件?????945152??2015-07-18?16:18??test\Debug\test.pdb
?????文件???23724032??2015-07-19?21:22??test\ipch\test-31d20948\test-2434c52c.ipch
?????文件????????610??2015-07-18?16:18??test\test\Debug\cl.command.1.tlog
?????文件???????8604??2015-07-18?16:18??test\test\Debug\CL.read.1.tlog
?????文件????????276??2015-07-18?16:18??test\test\Debug\CL.write.1.tlog
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件??????????2??2015-07-18?16:18??test\test\Debug\li
?????文件???????1356??2015-07-18?16:18??test\test\Debug\li
?????文件???????2828??2015-07-18?16:18??test\test\Debug\li
?????文件????????618??2015-07-18?16:18??test\test\Debug\li
?????文件????????346??2015-07-18?16:18??test\test\Debug\mt.command.1.tlog
?????文件????????266??2015-07-18?16:18??test\test\Debug\mt.read.1.tlog
?????文件????????266??2015-07-18?16:18??test\test\Debug\mt.write.1.tlog
?????文件????????458??2015-07-18?16:13??test\test\Debug\rc.command.1.tlog
?????文件????????238??2015-07-18?16:13??test\test\Debug\rc.read.1.tlog
?????文件????????246??2015-07-18?16:13??test\test\Debug\rc.write.1.tlog
?????文件????????406??2015-07-18?16:13??test\test\Debug\test.exe.em
?????文件????????472??2015-07-18?16:13??test\test\Debug\test.exe.em
?????文件????????381??2015-07-18?16:18??test\test\Debug\test.exe.intermediate.manifest
?????文件?????????53??2015-07-18?16:18??test\test\Debug\test.lastbuildstate
?????文件???????1522??2015-07-18?16:18??test\test\Debug\test.log
?????文件?????254173??2015-07-18?16:18??test\test\Debug\test.obj
?????文件??????????0??2015-07-18?16:13??test\test\Debug\test.write.1.tlog
?????文件????????198??2015-07-18?16:13??test\test\Debug\test_manifest.rc
............此處省略18個(gè)文件信息
評(píng)論
共有 條評(píng)論