/* ftosds: convert binary floating point to sds data set ftosds xdim ydim zdim inputfile outputfile */ #include #include int dims[3]; float *array; float min,max; char fname[100]; main(argc, argv) int argc; char **argv; { int ret; int i,j,k; float *arr; FILE *infile; if (argc == 1) { fprintf(stderr, "Usage: ftosds xdim ydim zdim inputfile outputfile\n"); exit(-1); } for (i=0;i<3;i++) dims[i] = atoi(argv[i+1]); /* memory allocation */ if ((array = (float *)calloc(dims[0]*dims[1]*dims[2],sizeof(float))) == NULL) { fprintf(stderr,"could not allocate array\n"); exit(-1); }; /* get data */ infile = fopen(argv[4],"r"); fread(array,sizeof(float),dims[0]*dims[1]*dims[2],infile); /* min and max */ min = 1.0e25; max = -1.0e25; arr = array; for (i=0;i max) max = *arr; arr++; } printf("min %f max %f\n",min,max); /* set up SDS header information */ ret = DFSDsetdims(3, dims); printf("setdims ret = %d\n",ret); ret = DFSDsetdatastrs("SDS","units","E12.2","cartesian"); printf("setdatastrs ret = %d\n",ret); ret = DFSDsetdimstrs(1,"X","units","E12.2"); printf("setdimstrs ret = %d\n",ret); ret = DFSDsetdimstrs(2,"Y","units","E12.2"); printf("setdimstrs ret = %d\n",ret); ret = DFSDsetdimstrs(3,"Z","units","E12.2"); printf("setdimstrs ret = %d\n",ret); ret = DFSDsetmaxmin(max,min); printf("setmaxmin ret = %d, min=%5.2f, max=%5.2f\n",ret,min,max); ret = DFSDputdata(argv[5],3,dims,array); printf("putdata ret = %d\n",ret); }