/* noseez.c ne1.bat = cl /AL noseez.c getfile */ #include #include #include "nomouse.h" #define MAX_NUM 1000 #define S_SIZE 40 #define MAX_COL 10000 float FBuff[MAX_COL]; struct im_dat { double crlat,crlon; /* corner lat/lon */ double dellat,dellon; /* delta lat/lon */ int row,col; }Imd; struct file_id { char name[S_SIZE]; long size; unsigned date,time; }; extern struct file_id GF_File[MAX_NUM]; int check_lat_lon(int num,double *maxlat,double *minlat, double *maxlon,double *minlon); int set_image_size(struct im_dat *imd,double maxlat,double minlat, double maxlon,double minlon,char *name); int load_d32(int num,struct im_dat imd,char *name); main(int argc,char argv[]) { int i,j,k; char string[100],name[100]; int num=0; double maxlat,minlat,maxlon,minlon; num=load_File("*.prg"); if(num<=0) { printf("No 'PRG' files found\n\n"); exit(0); } check_lat_lon(num,&maxlat,&minlat,&maxlon,&minlon); printf("max lat = %lf\n",maxlat); printf("min lat = %lf\n",minlat); printf("max lon = %lf\n",maxlon); printf("min lon = %lf\n",minlon); printf("Give output filename.\n\n"); scanf("%s",name); name[8]='\0'; set_image_size(&Imd,maxlat,minlat,maxlon,minlon,name); printf("Image size: %d x %d x 4 = %ld\n",Imd.row,Imd.col, (long)Imd.row*(long)Imd.col*(long)4); load_d32(num,Imd,name); } /********************************************************************** ** ** ** **********************************************************************/ int load_d32(int num,struct im_dat imd,char *name) { int i,j,k,l,m,n; FILE *fp,*fpd32; char string[100],str1[50],str2[50],str3[50],str4[50],str5[50]; double lat,lon,maxlat,minlon; int row,col; long lrow,lcol,offset; float msng=0; char cr=0xd; sprintf(string,"%s.d32",name); fpd32=fopen(string,"wb"); if(!fpd32) { printf("Could not open '%s' to write.\n\n"); exit(0); } if(imd.col>MAX_COL) { printf("image is too wide -- columns = %d\n",imd.col); exit(0); } for(j=0;jmaxlat) maxlat=lat; } } fclose(fp); strcpy(str1,GF_File[n].name); for(k=0;kMAX_COL) { printf("Too many columns in data set.\n"); exit(0); } for(i=0;icrlat=maxlat; imd->crlon=minlon; imd->dellat=1.0/240.0; imd->dellon=1.0/240.0; imd->row=latrange/imd->dellat+1.0; imd->col=lonrange/imd->dellon+1.0; if(imd->col>MAX_COL) { printf("Too many columns in data.\n\n"); exit(0); } sprintf(string,"%s.lbs",name); fplbs=fopen(string,"wt"); if(!fplbs) { printf("Could not open '%s' to read label.\n\n",string); exit(0); } fprintf(fplbs,"FILE_TYPE = ELEVATION_ARRAY\n"); fprintf(fplbs,"IMAGE_LINES = %6d\n",imd->row); fprintf(fplbs,"LINE_SAMPLES = %6d\n",imd->col); fprintf(fplbs,"UPPER_LEFT_LAT = %10.5lf\n",imd->crlat); fprintf(fplbs,"UPPER_LEFT_LON = %10.5lf\n",imd->crlon); fprintf(fplbs,"LOWER_RIGHT_LAT = %10.5lf\n",minlat); fprintf(fplbs,"LOWER_RIGHT_LON = %10.5lf\n",maxlon); fprintf(fplbs,"DELTA_LAT = %10.6lf\n",imd->dellat); fprintf(fplbs,"DELTA_LON = %10.6lf\n",imd->dellon); fprintf(fplbs,"NUMBER_OF_LAT = %6d\n",imd->row); fprintf(fplbs,"NUMBER_OF_LON = %6d\n",imd->col); fprintf(fplbs,"SOURCE_OF_DATA = NOSEEZ\n"); fprintf(fplbs,"DATA_TYPE = float\n"); fprintf(fplbs,"DATA_SIZE = 4 bytes\n"); fprintf(fplbs,"MISSING_DATA_VALUE = 0.000000\n"); fprintf(fplbs,"DATA_FILE_POINTER = '%s.D32'\n",name); fclose(fplbs); } /********************************************************************** ** ** ** **********************************************************************/ int check_lat_lon(int num,double *maxlat,double *minlat, double *maxlon,double *minlon) { int i,j,k; FILE *fp; char string[100],str1[50],str2[50],str3[50],str4[50],str5[50]; double lat,lon; int row,col; *maxlat=-720; *maxlon=-720; *minlat= 720; *minlon= 720; for(i=0;i*maxlon) *maxlon=lon; } if(strcmpi(str5,"LATITUDE")==0) { sscanf(str1,"%lf",&lat); if(lat<*minlat) *minlat=lat; if(lat>*maxlat) *maxlat=lat; } } fclose(fp); } }