⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fbt.cpp

📁 读写绿山数据库文件
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
struct Sor{  //定义炮点数据结构
int Source;
int Record_Num;
int Channel_one;
int Before_gap;
int After_gap;
int Last_trace;
int Pattern;
int Near_Station;
int Shot_Depth;
int Uphole_Time;
int X_Coordinate;
int Y_Coordinate;
int Z_Coordinate;
int Refr_Static;
int Time_Break;
int Datum_Static;
int Time_Corr;
int Pick_Flag;
int Low_Station;
int High_Station;
int Branch_Pt1;
int Branch_Pt2; 
int Branch_Pt3; 
int Branch_Pt4; 
int Branch_Pt5; 
int Branch_Pt6; 
int Branch_Pt7; 
int Tomography_Static;
int Delay_Time1;
int Delay_Time2; 
int Delay_Time3; 
int Layer1Elv;
int Layer2Elv; 
int Layer3Elv; 
int Int_Datum; 
int Final_Datum;
int Extra3;
int Extra4;
int Extra5;
int Extra6;
int Extra7;
int Extra8;
int Delta_X;
int Delta_Y;
int Extra11;
int MESA_flag;
int Line_Number;
int Extra14;
int Extra15;
int Water_Depth;
int Weather_Vel;
int Layer1Vel;
int Layer2Vel;
int Layer3Vel;
};
struct Sta{  //定义检波点数据结构
int Station;
int X_Coordinate;
int Y_Coordinate;
int Z_Coordinate;
int Status;
int Refr_Static;
int Datum_Elv; 
int Datum_Static;
int Corr_Vel; 
int Uphole_Time; 
int Shot_Depth; 
int Time_Corr; 
int Layer1Velocity; 
int Layer2Velocity; 
int Layer3Velocity; 
int Layer4Velocity; 
int DelayTime1;
int DelayTime2; 
int DelayTime3; 
int Layer1Elv; 
int Layer2Elv; 
int Layer3Elv; 
int Int_Datum; 
int Extra2;
int Extra3; 
int Extra4; 
int Extra5; 
int Extra6; 
int Extra7; 
int Extra8;
int Extra9; 
int Delta_X;
int Delta_Y;
int MESA_flag; 
int Line_Number; 
int Tomography_Static; 
int Extra15; 
int Water_Depth; 
int Extra16; 
int Extra17; 
int Extra18;
int Extra19;
};
struct Ffbt{  //定义炮点数据结构
int Record_Num;	
int fbt[2560];
};


void main()
{
   int Ns;
 struct  Sor  SSource;
   struct  Sta  SStation[2560];
    struct Ffbt Fbt;
struct  Sta  SStationtmp;  //定义检波点数据数组
int Pattern[2560];//定义关系文件 
 int Record_Num,k,sinline,sinline0;//定义关系文件
  int Rnum,Snum,i,tempi;
   Rnum=878,Snum=7104;
FILE *infile_sor,*infile_sta,*infile_fbt,*infile_pat,*outfile_Record1,*outfile_Record2,*outfile_Records;
  infile_sor=fopen("FFQ117.sor","rb");
   infile_sta=fopen("FFQ117.sta","rb");
   infile_fbt=fopen("FFQ117.fbt","rb");
   infile_pat=fopen("FFQ117.pat","rb");  
   outfile_Record1=fopen("FFQ1171.txt","w");
   outfile_Record2=fopen("FFQ1172.txt","w");
  outfile_Records=fopen("FFQ117s.txt","w");
 for(Record_Num=9;Record_Num<=9;Record_Num++)
 {
fseek(infile_fbt, 0, SEEK_SET);
fseek(infile_sta, 0, SEEK_SET);
fseek(infile_sor, 0, SEEK_SET);
fseek(infile_pat, 0, SEEK_SET);
  (SSource.Source)=99999;
	i=0;
SSource.Pattern=0;
  while(SSource.Pattern!=Record_Num)
    {
      fread(&SSource,sizeof(SSource),1,infile_sor);
	  i++;
        }
      fseek(infile_fbt, sizeof(Fbt)*(i-1), SEEK_SET);
      fread(&Fbt,sizeof(Fbt),1,infile_fbt);
	  fseek(infile_pat, sizeof(Pattern)*(Record_Num-1), SEEK_SET);
      fread(&Pattern,sizeof(Pattern),1,infile_pat);
  tempi=0;
  SStationtmp.Station=0;
  while(SSource.Channel_one!=SStationtmp.Station)
    {
    fread(&SStationtmp,sizeof(SStationtmp),1,infile_sta);
   tempi++;
        }
for(i=0;Pattern[i]>=0&&i<2560;i++)
  {
  fseek(infile_sta, sizeof(SStation[i])*(Pattern[i]+tempi-1), SEEK_SET);
 fread(&SStation[i],sizeof(SStation[i]),1,infile_sta);
 }
Ns=i;
/////////////////////////////////////////////////////////////////////////////
int mint,sline1[8],sline2[8],line[8];
  mint=99999999;
  k=0;
  line[0]=2275,line[1]=2283,line[2]=2291,line[3]=2299,line[4]=2307,line[5]=2315,line[6]=2323,line[7]=2331;
  for(i=0;i<Ns;i++)
  {
  if(int(SStation[i].Station*0.0001)==line[k])
  {
   if(mint>Fbt.fbt[i]&&Fbt.fbt[i]>0)
   {mint=Fbt.fbt[i];sline1[k]=SStation[i].Station;}
if(mint>=Fbt.fbt[i]&&Fbt.fbt[i]>0)
   {mint=Fbt.fbt[i];sline2[k]=SStation[i].Station;}
  }
   else
   {
	k++;
    mint=99999999;
   }
  }
sinline=0;
for(i=0;i<8;i++)
{
sinline=sinline+sline1[i]-int(sline1[i]*0.0001)*10000+sline2[i]-int(sline2[i]*0.0001)*10000;
}
sinline=sinline/16;
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////////通过插值拟合办法求出中心点////////////////////
int ii=0,i1,i2,nline,sline[8];
float a[1000],b[1000],a1,b1,a2,b2;
k=0;
for(i=0;i<Ns;i++)
  {
 if(int(SStation[i].Station*0.0001)!=line[k])
  {
	nline=ii;
	a1=0;
	a2=0;
	b1=0;
	b2=0;
	i1=0;
	i2=0;
	for(ii=0;ii<nline;ii++)
	if((a[ii]<0&&a[ii+1]<0)&&(abs(a[ii]/(a[ii+1]+0.001)-1))<0.3)
    {
    i1++;
	a1=a1+a[ii];
    b1=b1+b[ii];   
	}
	else if((a[ii]>0&&a[ii+1]>0)&&(abs(a[ii]/(a[ii+1]+0.001)-1))<0.3)
	{
      i2++;
	a2=a2+a[ii];
    b2=b2+b[ii];  
	}
	a1=a1/i1;
	b1=b1/i1;
	a2=a2/i2;
	b2=b2/i2;
   sline[k]=int((b2-b1)/(a1-a2));
	k++;
	printf("%f %f %d %d %d %d\n",a1,a2,k,sline[k],i1,i2);
	ii=0;
	}
  if(int(SStation[i].Station*0.0001)==line[k])
  {
 a[ii]=(Fbt.fbt[i+1]-Fbt.fbt[i]);
 b[ii]=(Fbt.fbt[i+1]+Fbt.fbt[i]-a[ii]*((SStation[i].Station-int(SStation[i].Station*0.0001)*10000)*2+1))*0.5;
 ii++;
  }
}
	nline=ii;
	a1=0;
	a2=0;
	b1=0;
	b2=0;
	i1=0;
	i2=0;
	for(ii=0;ii<nline;ii++)
	if((a[ii]<0&&a[ii+1]<0)&&(abs(a[ii]/a[ii+1]-1))<0.2)
    {
    i1++;
	a1=a1+a[ii];
    b1=b1+b[ii];   
	}
	else if((a[ii]>0&&a[ii+1]>0)&&(abs(a[ii]/a[ii+1]-1))<0.3)
	{
      i2++;
	a2=a2+a[ii];
    b2=b2+b[ii];  
	}
	a1=a1/i1;
	b1=b1/i1;
	a2=a2/i2;
	b2=b2/i2;
   sline[k]=int((b2-b1)/(a1-a2));
	ii=0;
sinline0=0;
for(i=0;i<8;i++)
{
sinline0=sinline0+sline[i];
}
sinline0=sinline0/8;
/////////////////////////////////////////////////////////////////////////////////
for(k=0;k<Ns;k++)
{
//fprintf(outfile_Record,"%d %d %d %d %d\n",SStation[k].Station,SStation[k].X_Coordinate,SStation[k].Y_Coordinate,SStation[k].Z_Coordinate,Fbt.fbt[k]);
fprintf(outfile_Record1,"%d %d %d\n",int((SStation[k].Station)*0.0001),SStation[k].Station-int((SStation[k].Station)*0.0001)*10000,Fbt.fbt[k]);
if(Fbt.fbt[k]>0)
fprintf(outfile_Record2,"%d %d %d\n",int((SStation[k].Station)*0.0001),SStation[k].Station-int((SStation[k].Station)*0.0001)*10000,Fbt.fbt[k]);
}
fprintf(outfile_Records,"%d  %d  %d  %d\n",int((SSource.Source)*0.0001),SSource.Source-int((SSource.Source)*0.0001)*10000,sinline,sinline0);
printf("%d %d %d\n",SSource.Source,sinline,sinline0);
 } 

fclose(infile_sor);
fclose(infile_sta);
fclose(infile_fbt);
fclose(infile_pat);
fclose(outfile_Record1);
fclose(outfile_Record2);
fclose(outfile_Records);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -