#include#include #include #include #include #include #include #include #include #include #define NS 21 //道数 #define NT 426//采样点数 #define pi 3.1415926 using namespace std; int main() { ifstream FP1; ofstream FP2; FP1.open("D:\Multiple\Job-05\Untitled+GathAP-Z.sgy", ios::in|ios::binary); FP2.open("D:\Visual_Stdio_Code\real_seismic\FFTW.sgy", ios::out|ios::binary|ios::binary); char Head[3600];//卷头 char tracehead[NS][240];//道头数据 float ** seis = new float* [NT];//用于临时存储地震数据 for (int i = 0; i < NT; i++) { seis[i] = new float[NS]; for (int j = 0; j < NS; j++) { seis[i][j] = 0.00; } } for (int i = 0; i < NS; i++) { for (int j = 0; j < 240; j++) { tracehead[i][j] =' '; } } for (int i = 0; i < 3600; i++) { Head[i] = '0'; } FP1.seekg(0, 0); FP1.read(Head, 3600); FP2.write(Head, 3600); for (int i = 0; i < NS;i++) { FP1.read(tracehead[i],240); FP2.write(tracehead[i], 240); for (int j = 0; j < NT; j++) { FP1.read((char*) &seis[j][i], sizeof(float)); FP2.write( (char*) &seis[j][i], sizeof(float)); } } FP1.close(); FP2.close(); system("pause"); return 0; }
地震数据的处理首先是能够正确的读写地震数据,本文就SEGY文件的读写做了一点描述,源代码做了分享,虽然很简单,但是有些时候就是不好解决。



