22 int nrapx[131][131],nrapy[131][131];
27 char ch, prevchar,pprevchar;
28 int i,
j,n,ihr,iminute,len,
k,kk;
30 char hour[3],minute[3],radar[4],chour[3];
31 unsigned char ncharrows;
32 char param[7],t1[7],t2[7],t3[7];
33 char maxval[7],bias[7],error[7],jdate[7],jmin[7];
34 char outname[81],sjunk[50],lradar[4];
37 unsigned char data[300];
45 unsigned char value[131][131];
46 unsigned char cbytes1,cbytes2;
51 int imonth,iyear,ihour,iday;
55 float hmaxx,hmaxy,hminx,hminy;
56 int imaxx,iminx,imaxy,iminy;
61 float pw,pnexrad[255];
68 afosfile = fopen(argv[1],
"rb");
72 printf(
"could not open %s\n",argv[1]);
78 fread(data,
sizeof(
char),300,afosfile);
82 n=memcmp(&data[
i],
"HDP",3);
90 printf(
"could not find HDP\n");
100 memcpy(radar,&data[
i+3],4);
102 printf(
"decoding of %s started\n",argv[1]);
106 n = fscanf(afosfile,
"%c",&ch);
115 if (ch ==
' ' && prevchar==
'1' && pprevchar ==
'8')
125 n = fscanf(afosfile,
"%7s%8s%6s%2s%2s%2s%2s%2s",clat,clon,
height,
year,
month,
138 n = fscanf(afosfile,
"%6s%6s%6s%6s",param,t1,t2,t3);
148 fscanf(afosfile,
"%6s",param);
150 n = fscanf(afosfile,
"%6s%6s%6s%6s%6s%6s%6s",maxval,bias,error,
151 jdate,jmin,param,param);
165 time = div(atoi(jmin),60);
169 printf(
"%s %02d:%02d max=%6s bias=%6s err=%6s\n",
170 cdate, ihr, iminute, maxval,bias,error);
174 printf(
"%s too old - aborting\n",argv[1]);
183 fread(sjunk,
sizeof(
char),11,afosfile);
187 n = fread(&ncharrows,
sizeof(
char),1,afosfile);
189 for (
i=0;
i<ncharrows;
i++)
193 n = fread(&cbytes1,
sizeof(
char),1,afosfile);
194 n = fread(&cbytes2,
sizeof(
char),1,afosfile);
197 n = fread(data,
sizeof(
unsigned char), nbytes-2,afosfile);
202 printf(
" unexpected EOF encoutered -- ");
203 printf(
" number of bytes expected = %d",nbytes-2);
204 printf(
" number of bytes found =%d \n",n);
211 nruns = (short)((
float)(nbytes-2)/2.);
214 for (
j=0;
j<nruns;
j++)
216 xchar = (
unsigned char)data[
j*2];
217 xrun = (short) xchar;
218 level = (short) data[1+
j*2];
220 for(
k=0;
k<xrun;
k++) {
224 if(
i > 130 || kk > 130) {
232 value[130-
i][kk]=(char)level;
234 if(
value[130-
i][kk] != 255 &&
235 value[130-
i][kk] > maxvalue)
236 maxvalue=
value[130-
i][kk] ;
259 lradar[
i]=tolower(radar[
i]);
264 lradar,iyear,imonth,iday,ihour);
266 fpout=fopen(outname,
"wb");
269 printf(
"could not open %s\n",outname);
275 fwrite(
value,
sizeof(
char),131*131,fpout);
279 printf(
"max value is %d\n",maxvalue);
290 errno=access(dname,R_OK);
294 sprintf(ibuf,
"mkdir -p %s",dname);
297 sprintf(ibuf,
"chmod -R 777 /usr/mapper/nexrad");
302 sprintf(dbuf,
"/usr/mapper/NEXRAD_radars");
308 printf(
"could not open /usr/mapper/NEXRAD_radars\n");
316 printf(
"error in format /usr/mapper/NEXRAD_radars\n");
380 nexname[
i]=calloc(20,1);
386 pw=(-6) +( (
float)(
i-1))*.125;
388 pw=.0397 * pow(10,pw);
399 hminx=9999;hminy=9999;
502 strcpy(nexname[l],
name);
528 for (
i=0;
i < 131;
i++){
529 for (
k=0;
k < 131 ;
k++){
532 irap.
x=cx + (float)(
k - 65);
533 irap.
y=cy + (float)(
i-65);
542 sprintf(
fbuf,
"/usr/mapper/nexrad/raw/%s.%02d-%02d-%02d-%02d",
543 name,iyear,imonth,iday,ihour);
556 fread(&
nexrad,
sizeof(
char),131*131,fq);
560 for (
i=0;
i < 131;
i++) {
561 for (
j=0;
j < 131 ;
j++) {
563 ii=nrapx[
i][
j]-iminx;
564 jj=nrapy[
i][
j]-iminy;
566 if(ii < 0 || ii > maxi ||
588 sprintf(
fbuf,
"/usr/mapper/nexrad/%02d/%02d/ngrid.%02d-%02d-%02d-%02d",
589 iyear,imonth,iyear,imonth,iday,ihour);
595 fprintf(
fp,
"%d %d %d %d 1\n",iminx,iminy,maxi,maxj);
597 for(
i=0;
i<maxi;
i++) {
599 for(
j=0;
j<maxj;
j++) {
603 irain=val[
i][
j]* 100;
617 printf(
"tarbuf %s\n",tarbuf);
619 printf(
"ieris %d %d\n",ier,errno);
628 int days[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
629 int year,
month,ndays,date,total,nyear,leap_year;
646 if (
month==1 && leap_year==
TRUE) ndays++;
647 date=ndays - (total-jdate);
struct HRAP LatLongToHrap(float lat, float lon)
char * pars_line(char *buf, char *s, char *sbuf)
sprintf(fbuf,"/usr/mapper/nexrad/ngrid.%02d-%02d-%02d-%02d", year, month, day, hour)
printf("fbuf is %s\n", fbuf)
fprintf(fp,"%d %d %d %d 1\n", iminx, iminy, maxi, maxj)
char * convertJulianDate()
main(int argc, char **argv)
char database_directory[100]
char nexrad_directory[100]
unsigned char value[131][131]