/* glum_bin.c gb1.bat = cl /AL glum_bin.c getfile */ #include #include #include "getfile.h" #include "nomouse.h" #define MaxSeg 10000 #define MaxPts 1000 int MaxNum=10; float LatLon[MaxPts][2]; float Lat1[MaxSeg],Latn[MaxSeg],Lon1[MaxSeg],Lonn[MaxSeg]; long Atr[MaxSeg],Ptr[MaxSeg]; int Num[MaxSeg],Order[1000],Used[MaxSeg]; int check_num(int num,FILE *fpbin,FILE *fphdr,FILE *fpatr); int set_glum(int num,int numseg); int process(char *name,int *oldnum,int *newnum); int Auto=0; main(int argc,char *argv[]) { int i,j,k,n; char string[100],name[100]; FILE *fpbin=NULL,*fpbat,*fptxt; int num=0,oldnum,newnum,maxnum,numfile,totseg=0,glumnum=0,tnum=0; float ftotold=0.0,ftotnew; if(argc>1&&sscanf(argv[1],"%d",&maxnum)==1) MaxNum=maxnum; else if(argc>2&&sscanf(argv[2],"%d",&maxnum)==1) MaxNum=maxnum; if(argv[1][0]=='*') { Auto=1; strcpy(name,"*.bin"); } else { for(k=0;k0) { strcpy(string,argv[1]); for(k=0;k0) { numfile=load_names(name); if(numfile<=0) { printf("All Process chosen but no BIN files in directory.\n\n"); exit(0); } printf("There are %d files for Auto Processing.\n",numfile); } else { if(argc>1) { sprintf(name,"%s.bin",argv[1]); fpbin=fopen(name,"rb"); } if(!fpbin&&argc>2) { sprintf(name,"%s.bin",argv[2]); fpbin=fopen(name,"rb"); } if(!fpbin) { if(get_file_name("*.bin",name,num)<0) exit(0); } fpbin=fopen(name,"rb"); if(!fpbin) { printf("Could not open '%s'\n\n",name); exit(0); } fclose(fpbin); } if(Auto==0) process(name,&oldnum,&newnum); else { fpbat=fopen("glum.bat","wt"); if(fpbat) { printf("\nSee file GLUM.BAT for combining RAW files.\n\n"); fprintf(fpbat,"del glum*.raw\n"); fprintf(fpbat,"copy "); } fptxt=fopen("glum.txt","wt"); if(fptxt) { printf("\nSee file GLUM.TXT for summary of processing.\n\n"); } for(n=0;n0) avid=id; else avid=-id; avid-=1; offset=Ptr[avid]; fseek(fpbin,offset,SEEK_SET); fread((char *)&numpt,sizeof(int),1,fpbin); fread((char *)mll,sizeof(float),4,fpbin); fread((char *)LatLon,sizeof(float),numpt*2,fpbin); if(id>0) { if(j==0) { fprintf(fpraw,"\n%10.6lf %11.6lf",LatLon[0][0],LatLon[0][1]); n+=1; } for(k=1;k=0;k--) { if(n%3==0) fprintf(fpraw,"\n"); else fprintf(fpraw," "); n+=1; fprintf(fpraw,"%10.6lf %11.6lf",LatLon[k][0],LatLon[k][1]); } } } fprintf(fpraw,"//\n"); } fprintf(fpraw,"\n"); fclose(fpdir); } /********************************************************************** ** ** ** **********************************************************************/ int set_glum(int num,int numseg) { int i,j,k; int hit=0,glum; float mll[4]; int newseg=numseg,n,count=0; FILE *fpdir; char cr=0xd; fpdir=fopen("glum_bin.dir","wt"); if(!fpdir) { printf("Could not open 'glum_bin.dir'\n\n"); exit(0); } for(i=0;i0;k--) Order[k]=Order[k-1]; Order[0]=j+1; n+=1; Lat1[i]=Lat1[j]; Lon1[i]=Lon1[j]; Used[j]=1; } /* add to beginning -- reverse */ if(Used[j]==0&&Lat1[i]==Lat1[j]&&Lon1[i]==Lon1[j]) { hit+=1; newseg-=1; for(k=n;k>0;k--) Order[k]=Order[k-1]; Order[0]=-(j+1); n+=1; Lat1[i]=Latn[j]; Lon1[i]=Lonn[j]; Used[j]=1; } } } }while(hit>0); } count+=1; fprintf(fpdir,"%d %d %ld\n",count,n,Atr[i]); for(k=0;kMaxSeg) { printf("Too many segments.\n"); exit(0); } for(i=0;iMaxPts) { printf("Too many points in segment %d\n",i+1); exit(0); } Num[i]=numpt; fread((char *)mll,sizeof(float),4,fpbin); fread((char *)LatLon,sizeof(float),numpt*2,fpbin); if(numpt<=num) hit+=1; Lat1[i]=LatLon[0][0]; Lon1[i]=LatLon[0][1]; Latn[i]=LatLon[numpt-1][0]; Lonn[i]=LatLon[numpt-1][1]; } return(hit); }