• 大小: 133KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-10-10
  • 语言: C/C++
  • 标签: SEG2  

资源简介

地震数据SEG-2文件读取和写入的C++源代码,供大家学习和参考

资源截图

代码片段和文件信息

// seg2读取程序.cpp : Defines the entry point for the console application.
//
// 读取seg2.cpp : Defines the entry point for the console application.
//

#include “stdafx.h“
#include
#include
#include
#include
#include 
//#include
//#include 

 
using namespace std;

vector > tb_all ;//存储多道数据的容器
vectortb;          //存储单道数据的容器
vector > tb_st_all;//存储道头中字符串
vector c;           //单个字符串中的字符
vectortp;            //存储道头(trace pointer)指针的容器
vector::iterator tp_iter;    //容器的指针
//map sb ;  //存储道头中的字符串
//map::const_iterator it_note ;//map的指针
 int data[]={0};
int jksum;
long int d;
char chdata_format ;
short block_id=0x3a55;
unsigned short int n_traces ;        //道数
unsigned short int sizeof_tdb;     //道头的尺寸
unsigned long int sizeof_db;
unsigned short int n_sample;         //采样点数
unsigned short int shot_number;      //炮号
double dt ;                      // 采样间距 (seconds).
int rec_location;                    //检波点位置
int soc_location;                    //炮点位置 


int main()
{
//在文件头读取道数和道指针
    ifstream infile(“a.sg2“ios::binary|ios::in);
ofstream ofile(“a.txt“ios::out);

infile.seekg(0ios_base::beg);

  infile.read( (char*) &block_id sizeof(block_id) );//读取道头标志
  if(block_id!=0x553A)
      {
  cout<< “In the file descriptor block the block id is incorrect.“
       <<“it isn‘t seg2 fomate“<   }

   //  else
// {

   infile.seekg(6ios_base::beg);
   infile.read( (char*) &n_traces sizeof(n_traces) ) ;//读取道数
        
   //读取道头指针
      infile.seekg(32ios_base::beg);
  for(unsigned short int i=0;i < n_traces;i++)
  {
infile.read( (char*) &j sizeof(j) );
            tp.push_back(j);
}

 cout<<“the number of traces is:“<
   //  infile.close();

   //----------------------------------------------------------------------------------
 //下面进入道头块读取数据
    //  infile.open(“e030c.dat“ios::in);

  
     for(i=0;i<6;i++)
 {

    infile.seekg(tp[i]ios_base::beg);//道头开始位置
        infile.seekg(2+tp[i]ios_base::beg);//道头尺寸块起始位置
        infile.read((char*) &sizeof_tdbsizeof(sizeof_tdb));//读取道头i+1的尺寸
    infile.read( (char*) &sizeof_db sizeof(sizeof_db) ) ;//读取数据段的长度
        infile.seekg(8+tp[i]ios_base::beg);
        infile.read( (char*) &n_sample sizeof(n_sample) ) ;//读取采样点数(/道)
       // infile.read((char*)&data_format sizeof(data_format) ) ;//读取数据格式(0x01、0x02)

       
  /*  infile.seekg(32+tp[i]ios_base::beg);
        streampos here = infile.tellg();
cout<<“trace  “< while(static_cast(here)<(sizeof_tdb+tp[i]))
{
          streampos here = infile.tellg();
  infile.read((char *) &chsizeof(ch));
  cout< }
cout<     */


//读取道头中字符串
  infile.seekg(32+tp[i]ios_base::beg);
  streampos 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-09-02 18:32  seg2读取程序\
     目录           0  2011-09-02 18:32  seg2读取程序\Debug\
     文件      569427  2011-08-17 15:36  seg2读取程序\Debug\seg2读取程序.exe
     文件        1244  2010-04-30 15:27  seg2读取程序\ReadMe.txt
     文件        5096  2011-08-17 15:06  seg2读取程序\seg2读取程序.cpp
     文件        4608  2011-08-17 15:54  seg2读取程序\seg2读取程序.dsp
     文件         532  2010-04-30 15:27  seg2读取程序\seg2读取程序.dsw
     文件       50176  2011-08-17 15:54  seg2读取程序\seg2读取程序.ncb
     文件       54784  2011-08-17 15:54  seg2读取程序\seg2读取程序.opt
     文件        2028  2011-08-17 15:36  seg2读取程序\seg2读取程序.plg
     文件         299  2010-04-30 15:27  seg2读取程序\StdAfx.cpp
     文件         667  2010-04-30 15:27  seg2读取程序\StdAfx.h

评论

共有 条评论

相关资源