• 大小: 5.29MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-18
  • 语言: 其他
  • 标签: segy  文件读取  存储  

资源简介

能够准确读取segy文件,并从中提取裸数据、文件头、道头等重要信息,还能存储成多种文件格式

资源截图

代码片段和文件信息


#include 
#include
#include
#include 
using namespace std;

int read_Si(char* Segy_filename)
{
//Function:从Segy文件中提取segy文件的道数Si
//INPUTS:输入
//Segy_filename--文件名
//OUTPUTS:输出
//data--处理后的到的裸数据
//INPUTS:输出
//Si         采样点数
int Trace;
short int Si;
//打开文件
FILE * fp;
fp=fopen(Segy_filename“rb+“);
if(fp==NULL) 
{
cout<<“error!cant open file“<        exit;
    };
cout<<“加载文件“<//读取采样点数Si
fseek(fp32190);
fread(&Si21fp);
Si=Si+111;
cout<<“采样点数“< return Si;
}

int read_Trace(char* Segy_filename)
{
//Function:从Segy文件中提取segy文件的道数Trace
//INPUTS:输入
//Segy_filename--文件名
//OUTPUTS:输出
//data--处理后的到的裸数据
//INPUTS:输出
//Trace      道数
int Trace;
short int Si;
//打开文件
FILE * fp;
fp=fopen(Segy_filename“rb+“);
if(fp==NULL) 
{
cout<<“error!cant open file“<        exit;
    };
cout<<“加载文件“<//读取采样点数Si
fseek(fp32190);
fread(&Si21fp);
Si=Si+111;
cout<<“采样点数“<//文件总字节数file_n
int file_n;
float buffer; //缓存
fseek(fp0L2);
file_n=ftell(fp); //函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数。
//计算道数Trace
Trace=(file_n-3600)/(240+Si*4);
cout<<“道数“< return Trace;
}



void Convert_Sgy_To_Raw(char* Segy_filenameint ntrint ns)
{
//输入:
//ntr--- Segy文件总道数
//ns--- Segy文件的采样点
//Segy_filename--- 读入文件的路径 ‘
  vector data;
 // vector::iterator it;

  ifstream infile;
  infile.open(Segy_filenameios::binary);
//读取地震裸数据
  infile.seekg(3600ios::beg);    //跳过3600字节的卷头
  for(int i=0;i  {
      infile.seekg(240ios::cur);  //跳过240字节的道头
      for(int j=0;j   {
  float buffer;
          infile.read((char*)&buffersizeof(float));//读取每个采样点的数据格式为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)   
{
//打开原始数据的文件取文件头和道头
    ifstream  fp1 ;
fp1.open(Segy_filenameios::binary);
if(!fp1)
{
cout<<“Open file falid“< return;
}
//打开已存处理后的裸数据的文件
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循环
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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      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\link-cvtres.read.1.tlog

     文件          2  2015-07-18 16:18  test\test\Debug\link-cvtres.write.1.tlog

     文件          2  2015-07-18 16:18  test\test\Debug\link.5964-cvtres.read.1.tlog

     文件          2  2015-07-18 16:18  test\test\Debug\link.5964-cvtres.write.1.tlog

     文件          2  2015-07-18 16:18  test\test\Debug\link.5964.read.1.tlog

     文件          2  2015-07-18 16:18  test\test\Debug\link.5964.write.1.tlog

     文件       1356  2015-07-18 16:18  test\test\Debug\link.command.1.tlog

     文件       2828  2015-07-18 16:18  test\test\Debug\link.read.1.tlog

     文件        618  2015-07-18 16:18  test\test\Debug\link.write.1.tlog

     文件        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.embed.manifest

     文件        472  2015-07-18 16:13  test\test\Debug\test.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论