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

📄 suaddxy.c

📁 seismic software,very useful
💻 C
字号:
/* add x and y to the trace header from trace-line numbers */#include "usu.h"#include "velo.h"char *sdoc = "suaddxy - calculate x and y from trace and line number 	\n""\n""suaddxy [parameters] <input >output 		\n" "\n""Required parameters:						 	\n""input         input data set name \n" "output        output data set name \n" "x1=           x coordinate of 1st corner of the 3D master grid \n""y1=           y coordinate of 1st corner of the 3D master grid \n""trace1=       trace number of 1st corner of the 3D master grid \n""line1=        line number of 1st corner of the 3D master grid \n""x2=           x coordinate of 2nd corner of the 3D master grid \n""y2=           y coordinate of 2nd corner of the 3D master grid \n""trace2=       trace number of 2nd corner of the 3D master grid \n""line2=        line number of 2nd corner of the 3D master grid \n""x3=           x coordinate of 3rd corner of the 3D master grid \n""y3=           y coordinate of 3rd corner of the 3D master grid \n""trace3=       trace number of 3rd corner of the 3D master grid \n""line3=        line number of 3rd corner of the 3D master grid \n""\n""Optional parameters:						 	\n""tracekey=ep   segy key word for trace number \n""linekey=fldr  segy key word for line number \n""xkey=sx       segy key word for x \n""ykey=sy       segy key word for y \n""\n""Notes: \n"" 1. Output x and y are truncated to the nearest integer and stored at \n""    xkey and ykey locations. \n"" 2. When sx,sy,gx,gy are used for xkey or ykey, scalco is not modified.\n" "    Reset scalco=0 is recommeded either before or after suaddxy. \n"" 3. When gelev,selev,sdepth,gdel,sdel,swdep,gwdep are used for xkey \n""    or ykey, scalel is not modified. Reset scalel=0 is recommended \n""    either before or after suaddxy. \n""AUTHOR:		Zhiming Li,       ,	4/22/02   		\n"    ;void changeval(String type, Value *val, int f);main(int argc, char **argv){   	FILE *infp=stdin,*outfp=stdout;	float x, y, line, trace;	double xx, yy, ttrace, lline;	float x1,x2,x3,y1,y2,y3,trace1,trace2,trace3,line1,line2,line3;	double xx1,xx2,xx3,yy1,yy2,yy3,ttrace1,ttrace2,ttrace3,lline1,lline2,lline3;	int iline, itrace;	int itmp;	String tracekey="ep", linekey="fldr", trktype, lnktype;	String xkey="sx", ykey="sy", xktype, yktype;	Value trkval, lnkval, xkval, ykval;	int indxtrk, indxlnk;	int indxxk, indxyk;	segytrace tr;   	/* get parameters */   	initargs(argc,argv);   	askdoc(1);	if (!getparfloat("x1",&x1)) err("must specify x1");	if (!getparfloat("x2",&x2)) err("must specify x2");	if (!getparfloat("x3",&x3)) err("must specify x3");	if (!getparfloat("y1",&y1)) err("must specify y1");	if (!getparfloat("y2",&y2)) err("must specify y2");	if (!getparfloat("y3",&y3)) err("must specify y3");	if (!getparfloat("line1",&line1)) err("must specify line1");	if (!getparfloat("line2",&line2)) err("must specify line2");	if (!getparfloat("line3",&line3)) err("must specify line3");	if (!getparfloat("trace1",&trace1)) err("must specify trace1");	if (!getparfloat("trace2",&trace2)) err("must specify trace2");	if (!getparfloat("trace3",&trace3)) err("must specify trace3");	/* optional parameters */	getparstring("tracekey",&tracekey);	getparstring("linekey",&linekey);	getparstring("xkey",&xkey);	getparstring("ykey",&ykey);	trktype = hdtype(tracekey);	lnktype = hdtype(linekey);	xktype = hdtype(xkey);	yktype = hdtype(ykey);	indxtrk = getindex(tracekey);	indxlnk = getindex(linekey);	indxxk = getindex(xkey);	indxyk = getindex(ykey);	xx1 = x1; xx2 = x2; xx3 = x3;	yy1 = y1; yy2 = y2; yy3 = y3;	ttrace1 = trace1; ttrace2 = trace2; ttrace3 = trace3;	lline1 = line1; lline2 = line2; lline3 = line3;	file2g(infp);	file2g(outfp);	if (!fgettr(infp,&tr))  err("can't get first trace");/*  loop over input traces */	do {		gethval(&tr,indxtrk,&trkval);		itmp = vtoi(trktype,trkval);		ttrace = itmp;		gethval(&tr,indxlnk,&lnkval);		itmp = vtoi(lnktype,lnkval);		lline = itmp;		sl2xydb(ttrace1,lline1,xx1,yy1,ttrace2,lline2,xx2,yy2,			ttrace3,lline3,xx3,yy3,ttrace,lline,&xx,&yy);		itmp = xx;		changeval(xktype,&xkval,itmp);		puthval(&tr, indxxk, &xkval);		itmp = yy;		changeval(yktype,&ykval,itmp);		puthval(&tr, indxyk, &ykval);		fputtr(outfp,&tr);	} while(fgettr(infp,&tr));	return 0;}void changeval(String type, Value *val, int f) {	switch (*type) {	case 's':		err("can't change char header word");	break;	case 'h':		val->h = f;	break;	case 'u':		val->u = f;	break;	case 'l':		val->l = f;	break;	case 'v':		val->v = f;        break;	case 'i':		val->i = f;	break;        case 'p':		val->p = f;	break;	case 'f':		val->f = f;	break;	case 'd':		val->d = f;	break;	default:		err("unknown type %s", type);	break;	}}

⌨️ 快捷键说明

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