亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? seg2segy.c

?? 完整的seg2 segy 轉(zhuǎn)換程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
	outhead[keywords[i].segyheader - 1] = 1;  	/* token points to input char. */	token = strtok (NULL, " "); 	if (0 == strcmp ("SEISMIC_DATA", token))		outhead[keywords[i].segyheader - 1] = 1;	else if (0 == strcmp ("DEAD", token))		outhead[keywords[i].segyheader - 1] = 2;	else if (0 == strcmp ("TEST_DATA", token))		outhead[keywords[i].segyheader - 1] = 3;	else if (0 == strcmp ("UPHOLE", token))		outhead[keywords[i].segyheader - 1] = 5;	/* RADAR_DATA not defined in SEG-Y assume it to be normal seismic */	else if (0 == strcmp ("RADAR_DATA", token))		outhead[keywords[i].segyheader - 1] = 1;	break;	}      /* end case 4 */	case 5:	{	/* this case calls for the input data to be inserted into the 	 * sepcified header location of parms 2-10. The normal 	 * 'header' location indicates the type of data, 0=int, 	 * 1=long int, 2=floating point. Parm 1 is the multiplier. */	token = strtok (string1, " ");	/* do the integer case first */	if (keywords[i].segyheader == 0) {		int paramcount = 1;		int headindex;		token = strtok (NULL, " ");    	/* token points to input char. */		while (token != NULL && paramcount < 10) {		headindex = keywords[i].segyparms[paramcount] - 1;		outhead[headindex] = atof (token) * keywords[i].segyparms[0];		paramcount++;		token = strtok (NULL, " ");  /* token points next input char. */		}	}		/* do the long integer case next */	else if (keywords[i].segyheader == 1) {		int paramcount = 1;		int headindex;		long *outpoint;		token = strtok (NULL, " ");    /* token points to input char. */		while (token != NULL && paramcount < 10) {		/* set outpoint to beginning of WORD of interest */		/* need to subtract 2 from the location value. */		headindex = keywords[i].segyparms[paramcount] - 2;		outpoint = (long *) &outhead[headindex];		/* outpoint now points to the area of interest and is 		 * typed correctly. Compute the value, cast it and send it in. */		outpoint[0] = (long) (atof (token) * keywords[i].segyparms[0]);		paramcount++;		token = strtok (NULL, " ");  /* token points next input char. */		}	}	/* finally do floating point case */	else if (keywords[i].segyheader == 2) {		int paramcount = 1;		int headindex;		float *outpoint;		token = strtok (NULL, " ");    /* token points to input char. */		while ((token != NULL) && (paramcount < 10))		{		/* set outpoint to point to beginning of WORD of interest */		/* need to subtract 2 from the location value. */		headindex = keywords[i].segyparms[paramcount] - 2;		outpoint = (float *) &outhead[headindex];		/* outpoint now points to the area of interest and is typed 		 * correctly. Compute the value, cast it and put it in 		 * outhead (using outpoint). */		outpoint[0] = (float) (atof (token) * keywords[i].segyparms[0]);		paramcount++;		/*   ieee2ibm(outpoint,0); *//* convert to ibm format if necessary */		token = strtok (NULL, " ");  /* token points next input char. */		}	}	break;	}      /* end case 5 */	case 6: 	{	short day, year;	token=strtok(string1," "); 	token=strtok(NULL,"/"); 	day=atoi(token);	token=strtok(NULL,"/");	if (0==strcmp("FEB",token) || 0==strcmp("02",token)) day+=31;	else if(0 == strcmp("MAR",token) || 0== strcmp("03",token)) day+=59;	else if(0 == strcmp("APR",token) || 0== strcmp("04",token)) day+=90;	else if(0 == strcmp("MAY",token) || 0== strcmp("05",token)) day+=120;	else if(0 == strcmp("JUN",token) || 0== strcmp("06",token)) day+=151;	else if(0 == strcmp("JUL",token) || 0== strcmp("07",token)) day+=181;	else if(0 == strcmp("AUG",token) || 0== strcmp("08",token)) day+=212;	else if(0 == strcmp("SEP",token) || 0== strcmp("09",token)) day+=243;	else if(0 == strcmp("OCT",token) || 0== strcmp("10",token)) day+=273;	else if(0 == strcmp("NOV",token) || 0== strcmp("11",token)) day+=304;	else if(0 == strcmp("DEC",token) || 0== strcmp("12",token)) day+=334;		token=strtok(NULL," ");/* token points to input char. */	year=atoi(token);	if(!year%4 && day>59) day+=1;  /* Yikes.  This may break! */	outhead[keywords[i].segyheader - 2] = year;	outhead[keywords[i].segyheader - 1] = day;	break; 	} 	default:    /* case where function not found.. should never happen */	{	printf ("Function %d not defined.\n", keywords[i].segyfunction);	break;	}	}            /* end switch */	break;        /* don't go through rest of for() loop, go to next string */	}              /* end if */		      	/* loop through and see if it can be found again */	}                /* end of i loop */	if (!matchfound)      /* did a match occur */	 	printf ("No match found for %s\n", string1);}             /* end of keysegy */ intmain (int argc, char *argv[]){#define NFILECHAR 32	char  prefix[NFILECHAR], seg2file[NFILECHAR], 	segyfile[NFILECHAR], suffix[NFILECHAR], str[NFILECHAR];	char *digits = "1234567890";	char stringtermcount, stringterm1, stringterm2;	char linetermcount, lineterm1, lineterm2;	char reserved[19];	unsigned char datatype;	int i, j, k; 	short int ssn; 	short int reversed = 0;	int curf, lastf;	short int blockid, revnum, pointerbytecount, numtrace, stringlength;	short int first = 1;	size_t l,ln;	unsigned short int blockleng;	long tracepointers[MAXTRACES], outbuf[MAXSAMP];	long *outheadl;	unsigned long numsamples, datalength;	FILE *f1, *f2;	SegyKeyTable keywords[MAXKEYWORDS];	double dinbuf[MAXSAMP];	float *finbuf = (float *)dinbuf;	long *linbuf = (long *)dinbuf;	short int *iinbuf = (short int *)dinbuf;	unsigned char *cinbuf = (unsigned char *)dinbuf;	outheadl = (long *) &outhead[0];	for (i = 0; i < 1800; i++) segyreelheader[i] = 0;	if (argc < 3 || argc > 4) { 	printf("Usage: seg2segy first-seg2file number-of-files [shot-number]\n");	exit(-1);	}	sprintf(seg2file,"%s", argv[1]);	if (strchr(seg2file,'.')==NULL)	strcat(seg2file, ".dat");	l = strcspn(seg2file,".");	strncpy(segyfile, seg2file, l); 	segyfile[l]='\0';	strcpy(suffix,seg2file+l);	l=strcspn(segyfile,digits);	if (l==strlen(segyfile) 	|| strspn(segyfile+l,digits)!=strlen(segyfile+l)){ 	printf("file name seg2 %s invalid\n", seg2file);	exit(-2);	}	strncpy(prefix, segyfile, l); prefix[l]='\0';	curf=atoi(segyfile+l);	ln=strlen(segyfile+l);	strcat(segyfile, ".sgy");	lastf=curf+atoi(argv[2])-1;	if (argc==4) ssn=atoi(argv[3]); else ssn=1;	f2 = fopen(segyfile, "wb");	if (f2 == (FILE *) NULL) {	fprintf (stderr, "**OUTPUT FILE OPEN FAILURE**\n **ABORTING**\n");	  exit (-3);	}	readSegyKeys (keywords);	/* start the big loop ... */	for(; curf<=lastf; curf++) {	strcpy(seg2file,prefix);	sprintf(str,"%d",curf);	l=strlen(str);	while(l<ln) { strcat(seg2file,"0"); l++; }	strcat(seg2file,str);	strcat(seg2file,suffix);	if ((f1=fopen(seg2file,"rb")) == (FILE *)NULL) {	fprintf (stderr, "\n***ERROR OPENING FILE %s***\n", seg2file);	fprintf (stderr, "Skipping to next file number.\n");	continue;    /* go to end of loop, try next file */	}	fread (&blockid, 2, 1, f1);	if (blockid == 0x553a) 	reversed = 1;   	if (blockid != 0x3a55) {	if (!reversed) {	fprintf (stderr, "Not SEG-2 data can not continue\n");	exit (-4);	}	}	fread (&revnum, 2, 1, f1);	fread (&pointerbytecount, 2, 1, f1);	fread (&numtrace, 2, 1, f1);	if (reversed) {	swapshort (&revnum);	swapshort (&pointerbytecount);	swapshort (&numtrace);	}	printf ("File %s, Data Format Revision: %d, Number of traces: %d\n", seg2file, revnum, numtrace);	fread (&stringtermcount, 1, 1, f1);	fread (&stringterm1, 1, 1, f1);	fread (&stringterm2, 1, 1, f1);	fread (&linetermcount, 1, 1, f1);	fread (&lineterm1, 1, 1, f1);	fread (&lineterm2, 1, 1, f1);	fread (reserved, 1, 18, f1);  /* reserved block, not used */	if (numtrace > (pointerbytecount / 4)) {	fprintf (stderr, "Number of traces greater than number of trace pointers\n");	fprintf (stderr, "Number of pointers = %d\n", pointerbytecount / 4);	fprintf (stderr, "Due to this inconsistency processing must stop\n");	exit (-5);	}	fread (tracepointers, 4, numtrace, f1);	if (reversed) {	for (i = 0; i < numtrace; i++)	swaplong (&tracepointers[i]);	}	/* now read file descriptor block.  */	fread (&stringlength, 2, 1, f1);	if (reversed)	swapshort (&stringlength);	while (0 != stringlength) {	  fread (string1, 1, stringlength - 2, f1);	  keycheck (keywords);	  fread (&stringlength, 2, 1, f1);	  if (reversed) swapshort (&stringlength);	}	for (j = 0; j < numtrace; j++) {	  for (i = 0; i < 120; i++)	    outhead[i] = 0;	  printf ("trace-%d-\r", j + 1); fflush(stdout);	  fseek (f1, tracepointers[j], SEEK_SET);	  fread (&blockid, 2, 1, f1);	  if (reversed)	    swapshort (&blockid);	  if (blockid == 0x2244) {	    /* reversed=1; should already know this */	    fprintf (stderr, "Opps, I've blown it here.... (line:%d)\n", __LINE__);	    exit (-6);	  }	  if (blockid != 0x4422) {	    fprintf (stderr, "Not a SEG-2 trace header.  Can not process %x (line %d)\n", blockid, __LINE__);	    exit (-7);	  }	  fread (&blockleng, 2, 1, f1);	  if (reversed)	    swapshort ((short *) &blockleng);	  fread (&datalength, 4, 1, f1);	  if (reversed)	    swaplong ((long *) &datalength);	  fread (&numsamples, 4, 1, f1);	  if (reversed)	   swaplong ((long *) &numsamples);	if (numsamples >= MAXSAMP){ 	fprintf(stderr, "Your data contains more samples than I can handle\n");	exit(-8);	}	  fread (&datatype, 1, 1, f1);	  if (datatype > 5 || datatype < 1) {	    fprintf (stderr,"Data type %d not available/valid\n", (int) datatype);	    break;	  }	  outhead[57] = numsamples;	  fread (reserved, 1, 19, f1);	  fread (&stringlength, 2, 1, f1);	  if (reversed)	    swapshort (&stringlength);	  while (0 != stringlength) {	    fread (string1, 1, stringlength - 2, f1);	    keycheck (keywords);	    fread (&stringlength, 2, 1, f1);	    if (reversed)	      swapshort (&stringlength);	  }		  fseek (f1, blockleng + tracepointers[j], SEEK_SET);	  switch ((int) datatype)	  {	case 1:		fread (iinbuf, 2, (int) numsamples, f1);		if (reversed) {		for (i = 0; i < (int) numsamples; i++)		swapshort (&iinbuf[i]);		}		for (k = 0; k < numsamples; k++)		outbuf[k] = iinbuf[k];		break;	case 2:		fread (linbuf, 4, (int) numsamples, f1);		if (reversed) {		for (i = 0; i < (int) numsamples; i++)		swaplong (&linbuf[i]);		}		for (k = 0; k < numsamples; k++)		  outbuf[k] = linbuf[k];		break;	case 3:	{		unsigned long totalbytes, subpointer;		unsigned int expo;		long longdat;		short int sdata; /*modified version by PM */		totalbytes = (numsamples * 5) / 2;		fread (cinbuf, 1, (size_t) totalbytes, f1);		/*  Original Code SU-36 3rd Party		for (k = 0; k < (numsamples);) {		subpointer = (k / 4) * 5;		expo = (unsigned) iinbuf[subpointer++];		for (i = 0; i < 4; i++) {		if (0x8000 & iinbuf[subpointer]) 		longdat = 0xffff8000;		else 		longdat = 0;		longdat = longdat | ((long) iinbuf[subpointer++] << (0x000f & expo));		expo >>= 4;		outbuf[k++] = longdat;		}		}		*/	/*modified version by P.Michaels <pm@cgiss.boisestate.edu> */	/*fixes sawtooth conversion error on large negative values */		for (k = 0; k < (numsamples);) {		subpointer = (k / 4) * 5;		expo = (unsigned) iinbuf[subpointer++];		for (i = 0; i < 4; i++) {	                sdata=iinbuf[subpointer++];                     		 if (sdata>0)                          	  	{                                       	longdat=(long) sdata;                                	longdat=longdat << (0x000f & expo);                        	   	}                       	        	else                             	{                                      	 	longdat=(long) -sdata;                                 	longdat=longdat <<  (0x000f & expo);                              	  	longdat = -longdat;                          	 	} /* endif */                 		expo >>= 4;		outbuf[k++] = longdat;                	} /* next i */        	} /* next k */		/* end of modifications */		if (reversed) {		for (i = 0; i < numsamples; i++)		swaplong (&outbuf[i]);		}	}	break;	case 4:	fread (finbuf, 4, (int) numsamples, f1);		if (reversed) {		long *buf = (long *) dinbuf;		for (i = 0; i < numsamples; i++)		swaplong (&buf[i]);		}		for (k = 0; k < numsamples; k++)		outbuf[k] = finbuf[k];		break;	case 5:	fread (dinbuf, 8, (int) numsamples, f1);		if (reversed) {		long *buf = (long *) dinbuf;		for (i = 0; i < numsamples * 2; i++)		swaplong (&buf[i]);		}		for (k = 0; k < numsamples; k++)		outbuf[k] = dinbuf[k];		break;	}      /* end switch */	/* set vertical stack traces=1 *//* 	if(outhead[15]==0) outhead[15]=1; 	if(outheadf[59]==0.0) gain=1.; else gain=outheadf[59];	for(i=0;i<numsamples;i++)outbuf[i]*=gain/outhead[15];*/	/* assign the original field record number as the current file number */	if (outheadl[2] == 0) outheadl[2] = (long) curf;	/* set trace type  as  sesmic data */	if (outhead[14] == 0) outhead[14] = 1;	/* set last trace flag (modified segy) */	if (j == numtrace - 1 && outhead[87] == 0) {	outhead[87] = 1;	ssn = ssn + 1;	}	/* from rec-station-number and source-station-number (93 and 94) */	/* distance from source to receiver */	/* outheadl[9]=(long)(abs(outhead[93]-outhead[92])); */	/* set group for trace one and roll switch position  */	outhead[85] = outhead[86] = 	(int) (1 + labs ((long) outhead[92] - outheadl[3]));	/* special case, execute on first pass only... */	if (first == 1) {	first = 0;	segyreelheader[1606] = numtrace;	segyreelheader[1608] = outhead[58];	segyreelheader[1609] = outhead[58];	segyreelheader[1610] = numsamples;	segyreelheader[1611] = numsamples;	segyreelheader[1612] = 2;	if (!reversed) /* swap only if we are on a little endian  machine */	{  		for (k = 1600; k < 1606; k += 2)		swaplong ((long *)&segyreelheader[k]);	  for (k = 1606; k < 1630; k++)	    swapshort((short *)&segyreelheader[k]);	}	fwrite (segyreelheader, 1, 3600, f2);  /*  create the segy headers */	}	if (!reversed) { /* swap only if we are on a little endian  machine */	/* first swap longs */	for (k = 0; k < 7; k++)		swaplong((long *)&outheadl[k]);	for (k = 9; k < 17; k++)	  swaplong((long *)&outheadl[k]);	for (k = 18; k < 22; k++)	  swaplong((long *)&outheadl[k]);	/* now swap the shorts */ 	for (k = 14; k < 18; k++)	  swapshort((short *)&outhead[k]);	for (k = 34; k < 36; k++)	  swapshort((short *)&outhead[k]);	/* for(k=44;k<90;k++)  *//* error: should have gone beyond 95 word */	for (k = 44; k < 95; k++)	  swapshort((short *)&outhead[k]);	}	if (120 != (k = fwrite (outhead, 2, 120, f2))) {      /* write header */	fprintf (stderr,"\nWrite failure during header write\n");	exit (-9);	}	if (!reversed) {	for (k = 0; k < numsamples; k++)		swaplong ((long *)&outbuf[k]);	}	if ((int) numsamples != (k = fwrite (outbuf, 4, (int) numsamples, f2))) {	fprintf (stderr,"Write failure during trace write\n");	exit (-10);	}	}      /* end trace loop */	fclose (f1);	outhead[87] = 0;    /* reset last trace flag. */	}        /* end kk loop */	fclose(f2);	return 0;}        /* end main */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人伦禁忌dvd放荡欲情| 国产高清精品在线| 欧美人妖巨大在线| 日韩国产欧美三级| 久久亚洲精精品中文字幕早川悠里 | 欧美精品乱码久久久久久按摩| 亚洲综合成人网| 欧美日韩成人在线| 欧美日韩国产一区二区三区地区| 亚洲一级电影视频| 日韩丝袜情趣美女图片| 国产精品自拍网站| 亚洲女人的天堂| 欧美男生操女生| 国产一区二区看久久| 国产精品网站在线观看| 欧美在线999| 国内精品伊人久久久久av影院| 欧美国产日韩一二三区| 欧美性xxxxxx少妇| 国产一本一道久久香蕉| 一区二区三区在线观看网站| 欧美一区午夜视频在线观看| 国产成人av一区二区| 亚洲午夜一区二区三区| 久久美女高清视频| 欧美日韩一区二区电影| 国产成人综合在线观看| 亚洲一区二区三区中文字幕| 久久亚洲一级片| 欧美日韩一区二区在线观看视频 | 国产精品久久夜| 91精品视频网| 91亚洲精品一区二区乱码| 人人超碰91尤物精品国产| 中文字幕欧美区| 538prom精品视频线放| 成+人+亚洲+综合天堂| 蜜臀av性久久久久蜜臀aⅴ | 欧美福利视频一区| 成人高清免费观看| 午夜激情综合网| 亚洲天堂免费看| 久久精品一区二区三区不卡| 欧美高清hd18日本| 欧美激情一二三区| 日韩亚洲欧美一区| 欧美视频在线播放| 一本大道av伊人久久综合| 国产精品一区二区免费不卡 | 99久久精品免费精品国产| 久久国产精品99久久久久久老狼| 亚洲精品中文在线| 中文字幕免费观看一区| 日韩女优电影在线观看| 欧美片网站yy| 欧美在线制服丝袜| 99国产麻豆精品| 成人毛片老司机大片| 精品一区二区三区av| 美女视频黄免费的久久| 日韩黄色在线观看| 天堂精品中文字幕在线| 亚洲图片自拍偷拍| 亚洲精品免费在线| 亚洲三级免费电影| 国产精品美女久久久久aⅴ| 久久影院视频免费| 精品少妇一区二区三区在线播放 | 欧美日本高清视频在线观看| 日本精品一区二区三区四区的功能| 成人丝袜18视频在线观看| 国产v综合v亚洲欧| 成人动漫视频在线| 99久久久免费精品国产一区二区| 久久不见久久见免费视频7| 美女视频第一区二区三区免费观看网站 | 国产精品久久久久7777按摩| 精品国产91乱码一区二区三区| 日韩一区二区在线看| 日韩精品一区在线| 欧美精品一区二区三区高清aⅴ| 日韩欧美国产电影| 2020国产精品自拍| 国产午夜精品在线观看| 中文子幕无线码一区tr| 自拍偷拍亚洲激情| 亚洲午夜一区二区三区| 偷窥少妇高潮呻吟av久久免费| 午夜激情一区二区三区| 极品少妇xxxx精品少妇偷拍| 国产精品99久久久久久久女警| 国产成人免费视| 91亚洲精品久久久蜜桃| 欧美日韩日日摸| 日韩色在线观看| 中文字幕免费不卡在线| 亚洲女人****多毛耸耸8| 亚洲成av人片在线| 狠狠色丁香九九婷婷综合五月| 高清免费成人av| 欧美在线观看一二区| 日韩一级片网站| 中文字幕免费不卡| 亚洲国产日韩综合久久精品| 日韩激情中文字幕| 丁香一区二区三区| 欧美视频三区在线播放| 日韩免费在线观看| 综合av第一页| 久久精品72免费观看| 成人av免费在线观看| 8x8x8国产精品| 国产精品久久一卡二卡| 青青草视频一区| 波多野结衣中文一区| 日韩一区二区免费在线观看| 国产精品久久久久久久久果冻传媒| 午夜精品视频一区| 国产99久久久久| 欧美一区二区三区免费| 国产精品区一区二区三| 日本成人在线不卡视频| 成人深夜在线观看| 制服.丝袜.亚洲.中文.综合| 国产精品久久久久一区二区三区| 午夜伦理一区二区| 91免费看片在线观看| 精品国产第一区二区三区观看体验 | 91麻豆产精品久久久久久 | 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲精品免费在线观看| 国产精品综合一区二区| 欧美精品三级日韩久久| 亚洲精品免费视频| 成人午夜在线视频| 欧美电视剧免费全集观看| 亚洲国产日韩综合久久精品| 成人av小说网| 国产亚洲污的网站| 老司机一区二区| 欧美理论电影在线| 亚洲黄色片在线观看| 暴力调教一区二区三区| 久久综合资源网| 久久精品99国产国产精| 欧美精品xxxxbbbb| 亚洲午夜精品在线| 91免费版在线| 国产精品久99| 国产91丝袜在线播放| 久久久av毛片精品| 精品在线视频一区| 精品美女一区二区| 老司机免费视频一区二区| 欧美精品一二三四| 午夜精品福利一区二区蜜股av| 一本在线高清不卡dvd| 一区在线观看视频| 国产v日产∨综合v精品视频| 久久九九久久九九| 国产专区欧美精品| 久久综合久久鬼色中文字| 国产中文字幕精品| 久久久久国产精品厨房| 国产成+人+日韩+欧美+亚洲| 久久久精品日韩欧美| 国产99久久久国产精品免费看 | aaa欧美大片| 亚洲欧美偷拍三级| 欧美最猛性xxxxx直播| 亚洲sss视频在线视频| 69堂亚洲精品首页| 六月丁香婷婷色狠狠久久| 26uuu另类欧美亚洲曰本| 国产精一区二区三区| 国产精品视频在线看| 一本一本大道香蕉久在线精品 | 26uuu欧美日本| 国产成人自拍高清视频在线免费播放| 久久综合视频网| 成人黄色在线看| 一区二区三区四区中文字幕| 欧美日韩国产高清一区二区三区 | 国产99久久久国产精品免费看| 中文字幕永久在线不卡| 91亚洲精品乱码久久久久久蜜桃| 一区二区三区.www| 91精品国产91久久综合桃花| 国产主播一区二区| 亚洲欧美一区二区三区久本道91| 欧美日韩免费在线视频| 经典三级视频一区| 亚洲欧洲综合另类在线| 欧美精品在线视频| 国产成人在线视频播放| 一区二区三区电影在线播| 日韩欧美在线网站| 成人av免费在线观看| 日韩影院在线观看|