Daily_QC
jnk.c
Go to the documentation of this file.
1 read_maps((char *)data,smonth,emonth);
2 
3 basin_file[0]=0;hrap_file[0]=0;
4 grid_file[0]=0;
9 topo_buf[0]=0;
12 type[0]=0;
13 gif_file[0]=0;
14 gifbuf[0]=0;
16 
17 fr=fopen((char *)data,"r");
18 
19 for(;;) {
20 
21  p=fgets(ibuf,80,fr);
22 
23  if(p==NULL)
24  break;
25 
26  p=strchr(ibuf,'\n');
27  if(p!=NULL)
28  *p=0;
29  p=pars_line(ibuf,"station_climo_list=",station_climo_file);
30  p=pars_line(ibuf,"rfc=",rfc);
31  p=pars_line(ibuf,"obs_archive_directory=",obs_archive_file);
32  p=pars_line(ibuf,"scratch_directory=",scratch_file);
33 
34  p=pars_line(ibuf,"station_list=",station_list_file);
35  p=pars_line(ibuf,"stationz_list=",zstation_list_file);
36  p=pars_line(ibuf,"hrap_gage_grid=",hrap_gage_file);
37  p=pars_line(ibuf,"hrap_zgage_grid=",hrap_zgage_file);
38  p=pars_line(ibuf,"basins=",basin_file);
39  p=pars_line(ibuf,"hrap=",hrap_file);
40  p=pars_line(ibuf,"type=",type);
41  p=pars_line(ibuf,"OPOINT_out=",dbase_out);
42  p=pars_line(ibuf,"OMAP_out=",map_out);
43  p=pars_line(ibuf,"freezing_level_directory=",freezing_level_directory);
44  p=pars_line(ibuf,"topo_scale=",topo_buf);
45  p=pars_line(ibuf,"hrap_grid_mask=",hrap_grid_mask_file);
46  p=pars_line(ibuf,"gif_directory=",gif_file);
47 
48  if((p=pars_line(ibuf,"gif_location=",gifbuf))!=NULL)
49  strcpy(gifbuf,p);
50 
51  if((p=pars_line(ibuf,"type_source=",dbuf))!=NULL) {
52 
53  q=strchr(p,',');
54 
55  if(q==NULL)
56  continue;
57 
58  *q=0;
59 
60  strcpy(ts[tsmax].abr,p);
61 
62  strcpy(ts[tsmax].name,q+1);
63 
64  tsmax++;
65 
66  }
67 
68 
69  }
70 
71 if(gifbuf[0]!=0) {
72 
73  m=0;
74  while(gifbuf[m]!=0) {
75 
76  if(gifbuf[m]==',')
77  gifbuf[m]=' ';
78 
79  m++;
80 
81  }
82 
83  ier=sscanf(gifbuf,"%f %f %f %f %f %f",
84  &giflat[1],&giflon[1],
85  &giflat[2],&giflon[2],
86  &giflat[3],&giflon[3]);
87 
88  maxgif=ier/2;
89 
90  }
91 
92 
93 if(gif_file[0]==0)
94  strcpy(gif_file,scratch_file);
95 if(type[0]==0)
96  strcpy(type,"2");
97 
98 if(topo_buf[0] != 0)
99  topo_scale=atof(topo_buf);
100 
101 fclose(fr);
102 
103 sprintf(pcpn_file,"%s/opoint.%s.",scratch_file,rfc);
104 sprintf(proc_pcpn_file,"%s/opoint2.%s.",scratch_file,rfc);
105 sprintf(snow_file,"%s/snopoint.%s.",scratch_file,rfc);
106 
107 sprintf(map_file,"%s/omap.%s.",scratch_file,rfc);
108 sprintf(grid_file,"%s/ogrid.%s.",scratch_file,rfc);
109 sprintf(ngrid_file,"%s/ngrid.",scratch_file);
110 
111 sprintf(zpoint1_file,"%s/zpoint.%s.",scratch_file,rfc);
112 sprintf(zpoint2_file,"%s/zpoint2.%s.",scratch_file,rfc);
113 sprintf(zgrid_file,"%s/zgrid.%s.",scratch_file,rfc);
114 
115 if(station_list_file[0] != 0) {
116 
117  strcpy(dbuf,"reading station list\n");
118  posit=posit+strlen(dbuf);
119  XmTextInsert(s_text,posit,dbuf);
120 
121  XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
122  XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
123  &increment,&page_increment);
124  XmScrollBarSetValues(scrollbar,scrollm-slider_size,
125  slider_size,increment,page_increment,True);
126 
127  XmUpdateDisplay(top_level);
129 
130  }
131 
132 /*if(zstation_list_file[0] != 0) {
133 
134  strcpy(dbuf,"reading zstation list\n");
135  posit=posit+strlen(dbuf);
136  XmTextInsert(s_text,posit,dbuf);
137 
138  XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
139  XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
140  &increment,&page_increment);
141  XmScrollBarSetValues(scrollbar,scrollm-slider_size,
142  slider_size,increment,page_increment,True);
143 
144  XmUpdateDisplay(top_level);
145  get_zstation_list(zstation_list_file);
146 
147  }
148 
149 */
151 
153 printf("pcp %d\n",pcp_in_use[103]);
154 
155 /*get_zgage_grid(max_lat,min_lat,cen_lon); */
156 
158 printf("2pcp %d\n",pcp_in_use[103]);
159 
161  method=1;
162 
163 items[0].label=NULL;
164 items[0].callback=NULL;
165 items[0].callback_data=NULL;
166 
167 main_bar=BuildPulldownPushMenu(menu_bar,"File",'M',items);
168 jwidget=AttachToCascade(menu_bar,"File",main_bar);
169 
170 argcount=0;
171 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
172 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
173 
174 pbutton=XmCreatePushButton(main_bar,"Send to Database",args,argcount);
175 XtAddCallback(pbutton,XmNactivateCallback,send_dbase,NULL);
176 XtManageChild(pbutton);
177 
178 argcount=0;
179 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
180 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
181 
182 pbutton=XmCreatePushButton(main_bar,"Make GIF",args,argcount);
183 XtAddCallback(pbutton,XmNactivateCallback,make_gif,NULL);
184 XtManageChild(pbutton);
185 
186 argcount=0;
187 
188 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
189 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
190 
191 pbutton=XmCreatePushButton(main_bar,"Quit",args,argcount);
192 XtAddCallback(pbutton,XmNactivateCallback,quit_all,NULL);
193 XtManageChild(pbutton);
194 
195 strcpy(dbuf,"reading basin data\n");
196 posit=posit+strlen(dbuf);
197 XmTextInsert(s_text,posit,dbuf);
198 
199 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
200 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
201  &increment,&page_increment);
202 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
203  slider_size,increment,page_increment,True);
204 
205 XmUpdateDisplay(top_level);
206 
208 
209 strcpy(dbuf,"reading Precipitation data\n");
210 posit=posit+strlen(dbuf);
211 XmTextInsert(s_text,posit,dbuf);
212 
213 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
214 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
215  &increment,&page_increment);
216 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
217  slider_size,increment,page_increment,True);
218 
219 XmUpdateDisplay(top_level);
220 
221 ier=chdir(scratch_file);
222 
223 if(ier==0) {
224 
225 
226  }
227 
228 else {
229 
230  printf("could not change directory to %s\n",scratch_file);
231 
232  exit(1);
233 
234  }
235 
236 for(m=0;m<maxdays;m++) {
237 
238  tget=btim - 24L*3600L*(long)m;
239 
241 
243 
244  for(k=0;k<5;k++) {
245 
246  if(k < 2)
247  sget=tget-84600L;
248 
249  else
250  sget=tget;
251 
252  gmtim=gmtime(&sget);
253 
254  kk=3-k;
255 
256  sprintf(dbuf,"%s%02d-%02d-%02d.%s",ngrid_file,
257  gm->tm_mon+1,gm->tm_mday,gm->tm_year,timefile[k]);
258 
259  if(k < 4)
260  num=50+m*4+kk;
261 
262  else
263  num=90+m;
264 
265  mer=read_qpf_grids(num,dbuf);
266 
267 
268 
269  }
270 
271  pdata[m].stddev=3.0;
272 
273  tget=btim - 24L*3600L*(long)m;
274 
275  gm=gmtime(&tget);
276 
277  sprintf(preca,"%s%02d-%02d-%02d",
278  pcpn_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
279  sprintf(precb,"%s%02d-%02d-%02d",
280  proc_pcpn_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
281  sprintf(precc,"%sdev.%02d-%02d-%02d",
282  proc_pcpn_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
283  sprintf(precd,"%sbad.%02d-%02d-%02d",
284  proc_pcpn_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
285  sprintf(prece,"%s%02d-%02d-%02d",
286  snow_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
287  sprintf(zpointa,"%s%02d-%02d-%02d",
288  zpoint1_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
289  sprintf(zpointb,"%s%02d-%02d-%02d",
290  zpoint2_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
291 
292  sprintf(databuf,"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
293 
294  sprintf(buf,"cp %s/opoint.%s.%02d-%02d-%02d %s",obs_archive_file,rfc,
295  gm->tm_mon+1,gm->tm_mday,gm->tm_year,scratch_file);
296 
297  system(buf);
298 
299  sprintf(buf,"cp %s/snopoint.%s.%02d-%02d-%02d %s",obs_archive_file,rfc,
300  gm->tm_mon+1,gm->tm_mday,gm->tm_year,scratch_file);
301 
302  system(buf);
303 
304  sprintf(buf,"cp %s/zpoint.%s.%02d-%02d-%02d %s",obs_archive_file,rfc,
305  gm->tm_mon+1,gm->tm_mday,gm->tm_year,scratch_file);
306 
307  system(buf);
308 
309 /* read_snow(prece,m); */
310 
311  mer=read_precip_a(preca,tget,m);
312 
313  read_bad_values(precd,m);
314 
315  ier=read_precip_b(precb,tget,m);
316 
317 /*
318  zier=-1;
319 
320  zier=read_zlevel_a(zpointa,tget,m);
321 
322  zier=read_zlevel_b(zpointb,tget,m);
323 printf("pcp %d\n",pcp_in_use[103]);
324 
325  */
326  fp=fopen(precc,"r");
327  if(fp!=NULL) {
328 
329  p=fgets(ibuf,80,fp);
330 
331  pdata[m].stddev=atof(ibuf);
332 
333  if(pdata[m].stddev != 1.0 &&
334  pdata[m].stddev != 3.0 &&
335  pdata[m].stddev != 5.0)
336  pdata[m].stddev=3.0;
337 
338  fclose(fp);
339 
340  }
341 
342  if(ier==1)
343  sprintf(dbuf,"%s - level 2 data\n",databuf);
344 
345  else if(ier==-1 && mer==1)
346  sprintf(dbuf,"%s - level 1 data\n",databuf);
347 
348  else if(ier==-2 && mer==1)
349  sprintf(dbuf,"%s - level 1 data overwrite\n",databuf);
350 
351  else
352  sprintf(dbuf,"%s - no data\n",databuf);
353  posit=posit+strlen(dbuf);
354  XmTextInsert(s_text,posit,dbuf);
355 
356  XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
357  XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
358  &increment,&page_increment);
359  XmScrollBarSetValues(scrollbar,scrollm-slider_size,
360  slider_size,increment,page_increment,True);
361 
362  XmUpdateDisplay(top_level);
363 
364 /* get_frzlvl_data(m); */
365 
367 
369 
371 
373 
374  /* read in grids and make maps if level 2 found */
375 
376  if(ier==1) {
377 
378  for(k=0;k<5;k++) {
379 
380  if(k < 2)
381  sget=tget-84600L;
382 
383  else
384  sget=tget;
385 
386  gmtim=gmtime(&sget);
387 
388  kk=3-k;
389 
390  sprintf(dbuf,"%s%02d-%02d-%02d.%s",ngrid_file,
391  gm->tm_mon+1,gm->tm_mday,gm->tm_year,timefile[k]);
392 
393  if(k < 4)
394  num=50+m*4+kk;
395 
396  else
397  num=90+m;
398 
399  mer=read_qpf_grids(num,dbuf);
400 
401  sprintf(dbuf,"%s%02d-%02d-%02d.%s",grid_file,
402  gm->tm_mon+1,gm->tm_mday,gm->tm_year,timefile[k]);
403 
404 
405  if(k < 4)
406  num=m*4+kk;
407 
408  else
409  num=40+m;
410 
411  mer=read_qpf_grids(num,dbuf);
412 
413  if(mer==-1) {
414 
415  if(k==4)
416  mk=1;
417 
418  else
419  mk=0;
420 
421  if(pdata[m].used[k]!=0) {
422 
423  render_pcp(m,k,mk);
424 
425  write_qpf_grids(dbuf);
426 
427  }
428 
429  }
430 
431  make_map(num);
432 
433 
434  }
435 
436  }
437  printf("pcp %d\n",pcp_in_use[103]);
438  if(zier==1) {
439 
440  for(k=0;k<4;k++) {
441 
442  if(k < 2)
443  sget=tget-84600L;
444 
445  else
446  sget=tget;
447 
448  gmtim=gmtime(&sget);
449 
450  kk=3-k;
451 
452  sprintf(dbuf,"%s%02d-%02d-%02d.%s",zgrid_file,
453  gm->tm_mon+1,gm->tm_mday,gm->tm_year,ztimefile[k]);
454 
455  num=100+m*4+kk;
456 
457  mer=read_qpf_grids(num,dbuf);
458 
459  if(mer==-1)
460  render_z(pcpn_day,k,0);
461 
462  make_rsel(num);
463 
464  }
465 
466  }
467 
468 
469  }
470 
471 printf("pcp %d\n",pcp_in_use[103]);
472 /*get_bad_snotel(); */
473 
474 if(menu_flag==1)
475  XtDestroyWidget(save_widget);
476 
477 /* edit menus */
478 
479 items[0].label="Precipitation";
480 items[0].callback=change_edit_stations;
481 items[0].callback_data=NULL;
482 items[1].label="Freezing level";
483 items[1].callback=change_zedit_stations;
484 items[1].callback_data=NULL;
485 items[2].label=NULL;
486 
487 main_bar=BuildPulldownPushMenu(menu_bar,"Edit",'M',items);
488 jwidget=AttachToCascade(menu_bar,"Edit",main_bar);
489 
490 main_bar=BuildPulldownToggleMenu(menu_bar,"Backgrounds",'M',ktems);
491 jwidget=AttachToCascade(menu_bar,"Backgrounds",main_bar);
492 
493 items[0].label="Find station";
494 items[0].callback=other_pcpn_options;
495 items[0].callback_data=(XtPointer)1;
496 items[1].label=NULL;
497 
498 main_bar=BuildPulldownPushMenu(menu_bar,"Options",'M',items);
499 jwidget=AttachToCascade(menu_bar,"Options",main_bar);
500 
501 /* products menu */
502 
503 XtManageChild(menu_bar);
504 
505 XmMainWindowSetAreas(main_window,menu_bar,NULL,NULL,NULL,drawing_area);
506 
507 menu_flag=1;
508 
509 strcpy(dbuf,"Done!!\n");
510 posit=posit+strlen(dbuf);
511 XmTextInsert(s_text,posit,dbuf);
512 
513 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
514 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
515  &increment,&page_increment);
516 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
517  slider_size,increment,page_increment,True);
518 
519 get_legend();
520 
521 XmUpdateDisplay(top_level);
522 
523 XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON),True);
524 
525 }
526 void kill_dialog(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
527 {
528 
529 first_through=1;
530 XtDestroyWidget(w);
531 send_expose();
void restore_bad_values(int iday)
Definition: bad_values.c:242
void read_bad_values(char *fname, int m)
Definition: bad_values.c:4
void quality_control_stations(int j)
Definition: bu.c:4
Widget main_window
Definition: daily_qc.c:214
float stddev
Definition: daily_qc.c:273
double cen_lon
Definition: daily_qc.c:190
unsigned long mmap[16]
Definition: daily_qc.c:226
int maxgif
Definition: daily_qc.c:89
int pcp_in_use[500]
Definition: daily_qc.c:243
void change_edit_stations()
Definition: daily_qc.c:3077
Widget BuildPulldownPushMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
Definition: daily_qc.c:1115
int maxdays
Definition: daily_qc.c:85
Widget top_level
Definition: daily_qc.c:214
double min_lat
Definition: daily_qc.c:190
char obs_archive_file[1000]
Definition: daily_qc.c:136
int pcpn_day
Definition: daily_qc.c:248
void quit_all()
char scratch_file[1000]
Definition: daily_qc.c:137
float topo_scale
Definition: daily_qc.c:122
Widget scrollbar
Definition: daily_qc.c:215
time_t btim
Definition: daily_qc.c:140
int isohyets_used
Definition: daily_qc.c:192
int posit
Definition: daily_qc.c:255
int emonth
Definition: daily_qc.c:142
char * ztimefile[]
Definition: daily_qc.c:146
int first_through
Definition: daily_qc.c:166
Widget menu_bar
Definition: daily_qc.c:214
char proc_pcpn_file[1000]
Definition: daily_qc.c:175
char pcpn_file[1000]
Definition: daily_qc.c:175
void make_gif()
Definition: daily_qc.c:8403
void send_expose()
Definition: daily_qc.c:6117
char zpoint2_file[1000]
Definition: daily_qc.c:177
char zpoint1_file[1000]
Definition: daily_qc.c:177
Widget AttachToCascade(Widget parent, char *label, Widget sub_menu)
Definition: daily_qc.c:1225
void send_dbase()
Definition: daily_qc.c:6490
char dbase_out[1000]
Definition: daily_qc.c:179
char map_file[1000]
Definition: daily_qc.c:179
float giflat[5]
Definition: daily_qc.c:90
struct MenuItem ktems[100]
Definition: daily_qc.c:240
char * timefile[]
Definition: daily_qc.c:144
int tsmax
Definition: daily_qc.c:87
Widget drawing_area
Definition: daily_qc.c:214
char zgrid_file[1000]
Definition: daily_qc.c:177
Widget s_text
Definition: daily_qc.c:214
void change_zedit_stations()
Definition: daily_qc.c:4113
Widget BuildPulldownToggleMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
Definition: daily_qc.c:1143
int method
Definition: daily_qc.c:254
void kill_dialog()
int smonth
Definition: daily_qc.c:142
char snow_file[1000]
Definition: daily_qc.c:70
float giflon[5]
Definition: daily_qc.c:90
void other_pcpn_options()
double max_lat
Definition: daily_qc.c:190
void estimate_daily_stations(int j)
void estimate_partial_stations(int j)
read_maps((char *) data, smonth, emonth)
gif_file[0]
Definition: jnk.c:13
gifbuf[0]
Definition: jnk.c:14
fr
Definition: jnk.c:17
map_out[0]
Definition: jnk.c:7
topo_buf[0]
Definition: jnk.c:9
printf("pcp %d\n", pcp_in_use[103])
hrap_grid_mask_file[0]
Definition: jnk.c:11
grid_file[0]
Definition: jnk.c:4
station_list_file[0]
Definition: jnk.c:5
type[0]
Definition: jnk.c:12
get_hrap_coord(max_lat, min_lat, cen_lon, smonth, emonth)
hrap_file[0]
Definition: jnk.c:3
freezing_level_directory[100]
Definition: jnk.c:7
exit(1)
zstation_list_file[0]
Definition: jnk.c:6
get_hrap_mask(hrap_grid_mask_file)
hrap_zgage_file[0]
Definition: jnk.c:8
hrap_gage_file[0]
Definition: jnk.c:8
station_climo_file[0]
Definition: jnk.c:15
rfc[0]
Definition: jnk.c:5
max_zstations
Definition: jnk.c:150
ngrid_file[0]
Definition: jnk.c:10
basin_file[0]
Definition: jnk.c:3
void make_map(int)
void get_station_list(char *)
int read_precip_a(char *, time_t, int)
Definition: read_precip_a.c:3
void render_pcp(int, int, int)
char * pars_line(char *, char *, char *)
void get_basin_data(char *, char *)
int read_precip_b(char *, time_t, int)
Definition: read_precip_b.c:4
void read_archived_data(char *, char *, char *, time_t, char *)
int read_qpf_grids(int k, char *fname)
void write_qpf_grids(char *fname)
void render_z(int pcpn_day, int pcpn_time, int pcpn_time_step)
Definition: render_z.c:12
Definition: misc.h:216
float stddev
Definition: misc.h:220
Definition: misc_new.h:35