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

📄 gridclip.c

📁 seismic software,very useful
💻 C
字号:
/* GRIDCLIP grid clip program */#include "usgrid.h"#include "par.h"char *sdoc = "GRIDCLIP - grid clip program				\n""\n""gridrvse [parameters] <grid.input >grid.output			\n" "\n""Required parameters:							\n""None									\n""Optional parameters:							\n""pclip=       maximum positive clip value (default to grid max positive)\n""nclip=       maximum negative clip value (default to grid max negative)\n""zero=0.0     vaule to be used outside the passing zone defined by 	\n""             (min1, max1, min2, max2, min3, max3, min4, max4, min5, max5) \n""min1=1       minimum 1st index of the passing zone	\n" "max1=n1      maximum 1st index of the passing zone	\n" "min2=1       minimum 2nd index of the passing zone	\n" "max2=n2      maximum 2nd index of the passing zone	\n" "min3=1       minimum 3rd index of the passing zone	\n" "max3=n3      maximum 3rd index of the passing zone	\n" "min4=1       minimum 4th index of the passing zone	\n" "max4=n4      maximum 4th index of the passing zone	\n" "min5=1       minimum 5th index of the passing zone	\n" "max5=n5      maximum 5th index of the passing zone	\n" "Notes:									\n""Notes:									\n"" 1. This program will check grid values and clip data within		\n""    (nclip,nclip) range						\n"" 2. gmin and gmax will be computed and updated in the output grid 	\n""    header								\n""\n""AUTHOR:		Zhiming Li,       ,	8/16/94   		\n"    ;main(int argc, char **argv){	FILE *infp=stdin, *outfp=stdout;    	int n1,n2,n3,n4,n5;		float *trace;	int ierr, i2, n, i1;	float pclip, nclip;	int ip=1, in=1;	int i3, i4, i5;	float gmin, gmax, zero;	int min1, min2, min3, min4, min5;	int max1, max2, max3, max4, max5;	usghed usgh;    	/* initialization */    	initargs(argc,argv);    	askdoc(1);	if(!getparfloat("pclip",&pclip)) ip = 0;	if(!getparfloat("nclip",&nclip)) in = 0;	/* get input grid parameters */	ierr = fgetusghdr(infp,&usgh);        if(ierr!=0) err(" nonstandard grid file ");	n1 = usgh.n1;        n2 = usgh.n2;        n3 = usgh.n3;        n4 = usgh.n4;        n5 = usgh.n5;	if(n2==0) n2=1;	if(n3==0) n3=1;	if(n4==0) n4=1;	if(n5==0) n5=1;	if(!getparint("min1",&min1)) min1 = 1;	if(!getparint("min2",&min2)) min2 = 1;	if(!getparint("min3",&min3)) min3 = 1;	if(!getparint("min4",&min4)) min4 = 1;	if(!getparint("min5",&min5)) min5 = 1;	if(!getparint("max1",&max1)) max1 = n1;	if(!getparint("max2",&max2)) max2 = n2;	if(!getparint("max3",&max3)) max3 = n3;	if(!getparint("max4",&max4)) max4 = n4;	if(!getparint("max5",&max5)) max5 = n5;	if(!getparfloat("zero",&zero)) zero = 0.;	min1 = min1 - 1;	min2 = min2 - 1;	min3 = min3 - 1;	min4 = min4 - 1;	min5 = min5 - 1;	max1 = max1 - 1;	max2 = max2 - 1;	max3 = max3 - 1;	max4 = max4 - 1;	max5 = max5 - 1;	n = n2 * n3 * n4 * n5;	trace = (float*) emalloc(n1*sizeof(float));	efseek(infp,0,0);	for(i5=0;i5<n5;i5++) {	for(i4=0;i4<n4;i4++) {	for(i3=0;i3<n3;i3++) {	for(i2=0;i2<n2;i2++) {		efread(trace,sizeof(float),n1,infp);		if(in==1 && ip==1) {			for(i1=0;i1<n1;i1++) {				if(trace[i1]<nclip) trace[i1] = nclip;				if(trace[i1]>pclip) trace[i1] = pclip;			}		} else if(in==1 && ip==0) {			for(i1=0;i1<n1;i1++) {				if(trace[i1]<nclip) trace[i1] = nclip;			}		} else if(in==0 && ip==1) {			for(i1=0;i1<n1;i1++) {				if(trace[i1]>pclip) trace[i1] = pclip;			}		}		if(i5<min5 || i5>max5 || 		   i4<min4 || i4>max4 ||		   i3<min3 || i3>max3 ||		   i2<min2 || i2>max2 ) {			for(i1=0;i1<n1;i1++) trace[i1] = zero;		} else {			for(i1=0;i1<min1;i1++) trace[i1] = zero;			for(i1=max1+1;i1<n1;i1++) trace[i1] = zero;		}		if(i2==0 && i3==0 && i4==0 && i5==0 ) {			gmin = trace[0];			gmax = trace[0];		}		for(i1=0;i1<n1;i1++) {			if(trace[i1]>gmax) gmax = trace[i1];			if(trace[i1]<gmin) gmin = trace[i1];		}		efwrite(trace,sizeof(float),n1,outfp);	}	}	}	}		usgh.gmin = gmin;	usgh.gmax = gmax;	ierr = fputusghdr(outfp,&usgh);        if(ierr!=0) err("error in output gridheader");	efclose(outfp);	efclose(infp);	free(trace);	exit(0);}

⌨️ 快捷键说明

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