Daily_QC
edit_maxminstations.c
Go to the documentation of this file.
1 #include "prototypes_new.h"
2 
3 Widget textz;
4 Widget cons_dialog;
5 int isave;
7 void time_series();
8 int new_qual;
10 extern int func[];
11 
12 void edit_maxminstations(int win_x,int win_y,unsigned int win_button)
13 
14 {
15 extern float filter_value;
16 extern struct ts ts[20];
17 extern int tsmax;
18 extern Widget edit_dialog;
19 extern int isom;
20 extern int gage_char[2];
21 extern int method;
22 extern int qflag[10];
23 extern struct tdata tdata[10];
24 extern unsigned long cmap[16];
25 extern Widget drawing_area;
26 extern struct station tstation[1000];
27 extern int max_tstations;
28 extern Font font[10];
29 extern int npoint[2],zoom;
30 extern struct display_set display_set[4];
31 extern Display *display;
32 extern GC gc;
33 extern int mmap[16];
34 extern void kill_widget();
35 extern struct dval dval;
36 extern int dflag[10];
38 void change_tcustom_file();
41 void cancel_tedit();
42 extern int pcpn_day,pcpn_time;
43 extern int pcpn_time_step;
44 Widget rowcol,rowcol3,pbutton,rowcol1,sep;
45 float conv=.0174;
46 int MY=10;
47 Arg args[10];
48 Cardinal argcount;
49 int i;
50 double testdist,maxdist;
51 int x,y;
52 XmString t;
53 Dimension width,height;
54 signed long XSIZE,YSIZE;
55 float xrat,yrat,mult;
56 int xmin,xmax,ymin,ymax,display_flag,xcen,ycen,h;
57 long lint1,lint2;
58 float dmult,lat,lon;
59 char *st[10],buf[100],muf[10];
60 long r,s;
61 int time_pos,naflag,m;
62 XmString help_string;
63 void tgraph_file();
64 
65 if(pcpn_time_step==0)
66  time_pos=pcpn_time;
67 
68 else if(pcpn_time_step==1)
69  time_pos=4;
70 
71 else if(pcpn_time_step==2)
72  time_pos=5;
73 
74 XSetFont(display,gc,font[3]);
75 
76 /* need to set flag to plot */
77 
78 /* need to set resource in widget also */
79 
80 XSetFunction(display,gc,GXcopy);
81 
82 XtSetArg(args[0],XtNwidth,&width);
83 XtSetArg(args[1],XtNheight,&height);
84 XtGetValues(drawing_area,args,2);
85 
86 XSIZE=(long)width*10L;
87 YSIZE=(long)height*10L;
88 
89 xrat=(float)XSIZE/(float)12800;
90 yrat=(float)YSIZE/(float)9600;
91 
92 if(xrat < yrat)
93  mult=xrat;
94 
95 else
96  mult=yrat;
97 
98 display_flag=0;
99 h=0;
100 
101 dmult=display_set[display_flag].dmult[h];
102 xmin= display_set[display_flag].xmin[h];
103 xmax= display_set[display_flag].xmax[h];
104 ymin= display_set[display_flag].ymin[h];
105 ymax= display_set[display_flag].ymax[h];
106 xcen= display_set[display_flag].xcen[h];
107 ycen= display_set[display_flag].ycen[h];
108 
109 lint1=(long)npoint[0]*(long)MY;
110 lint2=(long)npoint[1]*(long)MY;
111 
112 x=win_x;
113 y=win_y;
114 
115 if(zoom==1) {
116 
117  win_x=x*MY/mult;
118  win_y=y*MY/mult;
119 
120  }
121 
122 else {
123 
124 
125  win_x=((x*MY-xcen)/zoom + lint1)/mult;
126  win_y=((y*MY-ycen)/zoom + lint2)/mult;
127 
128  }
129 
130 
131 if(zoom==1) {
132 
133  x=(win_x*mult)/MY;
134  y=(win_y*mult)/MY;
135 
136  }
137 
138 else {
139 
140  x=(((win_x*mult)-lint1)*zoom+xcen)/MY;
141  y=(((win_y*mult)-lint2)*zoom+ycen)/MY;
142 
143  }
144 
145 isave=-1;
146 maxdist=9999;
147 
148 for(i=0;i<max_tstations;i++){
149 
150  if(tdata[pcpn_day].stn[i].tlevel2[time_pos].data ==-999 )
151  continue;
152 
153  lat=tstation[i].lat;
154  lon=tstation[i].lon;
155 
156  for(m=0;m<tsmax;m++) {
157 
158  if(strncmp(&tstation[i].parm[4],&ts[m].abr[1],1)==0 && dflag[m+1] == 1)
159  break;
160 
161  }
162 
163 
164  if(m==tsmax)
165  continue;
166 
167 
168  for(m=0;m<9;m++) {
169 
170  if(m==tdata[pcpn_day].stn[i].tlevel2[time_pos].qual &&
171  qflag[m]==1)
172  break;
173 
174  }
175 
176  if(m==9)
177  continue;
178 
179  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
180  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
181 
182  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
183  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
184 
185  testdist= pow((double)(win_x-r),2) + pow((double)(win_y-s),2);
186  testdist= pow(testdist,.5);
187 
188  if(testdist < maxdist) {
189 
190  isave=i;
191  maxdist=testdist;
192 
193  }
194 
195  }
196 
197 if(isave==-1)
198  return;
199 
200 reset_value=0;
201 
203 
205 
206 if(initial_qual==6) {
207 
209  "You cannot quality control a time distributed tstation");
210 
211  return;
212 
213  }
214 
215 help_string=XmStringCreateLocalized("graph");
216 
217 argcount=0;
218 XtSetArg(args[argcount],XmNdeleteResponse,XmDO_NOTHING);argcount++;
219 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
220 XtSetArg(args[argcount],XmNwidth, 300);argcount++;
221 XtSetArg(args[argcount],XmNheight,500);argcount++;
222 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
223 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
224 
225 XtSetArg(args[argcount],XmNhelpLabelString,help_string);argcount++;
226 edit_dialog=XmCreateMessageDialog(drawing_area,"Edit tstations",args,argcount);
227 
228 XtAddCallback(edit_dialog,XmNokCallback,change_tcustom_file,(XtPointer)isave);
229 
230 XtAddCallback(edit_dialog,XmNhelpCallback,tgraph_file,(XtPointer)isave);
231 
232 XtAddCallback(edit_dialog,XmNcancelCallback,cancel_tedit,NULL);
233 
234 argcount=0;
235 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
236 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
237 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
238 rowcol=XmCreateRowColumn(edit_dialog,"Edit tstations",args,argcount);
239 
240 strcpy(buf,tstation[isave].hb5);
241 strcat(buf," ");
242 
243 strcat(buf,tstation[isave].parm);
244 t=XmStringCreateLocalized(buf);
245 
246 argcount=0;
247 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
248 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
249 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
250 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
251 XtManageChild(pbutton);
252 XmStringFree(t);
253 
254 strcpy(buf,tstation[isave].name);
255 t=XmStringCreateLocalized(buf);
256 argcount=0;
257 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
258 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
259 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
260 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
261 XtManageChild(pbutton);
262 XmStringFree(t);
263 
264 sprintf(buf,"%d",tstation[isave].elev);
265 strcat(buf," ft");
266 
267 t=XmStringCreateLocalized(buf);
268 argcount=0;
269 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
270 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
271 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
272 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
273 XtManageChild(pbutton);
274 XmStringFree(t);
275 
276 if(tstation[isave].max[isom] > -99) {
277 
278  sprintf(buf,"monthly average high %5.1f low %5.1f",
280  t=XmStringCreateLocalized(buf);
281  argcount=0;
282  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
283  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
284  XtSetArg(args[argcount],XmNlabelString,t);argcount++;
285  pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
286  XtManageChild(pbutton);
287  XmStringFree(t);
288 
289  }
290 
291 if(tdata[pcpn_day].stn[isave].tlevel2[time_pos].data > -50) {
292 
293  sprintf(buf,"estimate %d ",
294  tdata[pcpn_day].stn[isave].tlevel2[time_pos].estimate);
295 
296  t=XmStringCreateLocalized(buf);
297  argcount=0;
298  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
299  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
300  XtSetArg(args[argcount],XmNlabelString,t);argcount++;
301  pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
302  XtManageChild(pbutton);
303  XmStringFree(t);
304 
305  }
306 
307 if(tdata[pcpn_day].stn[isave].tlevel2[time_pos].data < -50)
308  strcpy(muf,"M");
309 else
310  sprintf(muf,"%d",tdata[pcpn_day].stn[isave].tlevel2[time_pos].data);
311 
312 argcount=0;
313 XtSetArg(args[argcount],XmNvalue,muf);argcount++;
314 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
315 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
316 textz=XmCreateTextField(rowcol,"Point QPF",args,argcount);
317 XtManageChild(textz);
318 
319 if(initial_qual != 5) {
320 
321 t=XmStringCreateLocalized("tstation quality");
322 
323 argcount=0;
324 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
325 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
326 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
327 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
328 XtManageChild(pbutton);
329 XmStringFree(t);
330 
331 }
332 
333 if(initial_qual < 0 || tdata[pcpn_day].stn[isave].tlevel2[time_pos].data < -500)
334  naflag=1;
335 
336 else
337  naflag=0;
338 
339 argcount=0;
340 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
341 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
342 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
343 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
344 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
345 rowcol1=XmCreateRadioBox(rowcol,"Edit tstations",args,argcount);
346 
347 if(initial_qual==2) {
348 
349  st[0]="Manual";
350  st[1]="Reset to Original";
351 
352  for(i=0;i<2;i++) {
353 
354  argcount=0;
355  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
356  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
357  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
358 
359  if(i==0)
360  XtSetArg(args[argcount],XmNset,True);
361 
362  else
363  XtSetArg(args[argcount],XmNset,False);
364 
365  argcount++;
366 
367  pbutton=XmCreateToggleButton(rowcol1,st[i],args,argcount);
368  XtAddCallback(pbutton,XmNvalueChangedCallback,reset_tstation_quality,
369  (XtPointer)i);
370 
371  XtManageChild(pbutton);
372 
373 
374  }
375 
376 
377 }
378 
379 
380 else if(initial_qual != 5) {
381 
382 st[0]="Verified";
383 st[1]="Screened (Force)";
384 st[2]="Questionable";
385 st[3]="Bad";
386 
387 for(i=0;i<4;i++) {
388 
389  argcount=0;
390  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
391  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
392  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
393 
394  if(func[i]==initial_qual && naflag != 1)
395  XtSetArg(args[argcount],XmNset,True);
396 
397  else
398  XtSetArg(args[argcount],XmNset,False);
399 
400  argcount++;
401 
402  pbutton=XmCreateToggleButton(rowcol1,st[i],args,argcount);
403  XtAddCallback(pbutton,XmNvalueChangedCallback,change_tstation_quality,
404  (XtPointer)(i));
405  XtManageChild(pbutton);
406 
407  if(naflag==1)
408  XtSetSensitive(pbutton,False);
409 
410  }
411 
412 }
413 
414 if(tstation[isave].xadd==-1 && tstation[isave].yadd==-1)
415  initial_pos=0;
416 
417 else if(tstation[isave].xadd==0 && tstation[isave].yadd==-1)
418  initial_pos=2;
419 
420 else if(tstation[isave].xadd==-1 && tstation[isave].yadd==0)
421  initial_pos=1;
422 
423 else if(tstation[isave].xadd==0 && tstation[isave].yadd==0)
424  initial_pos=3;
425 if(initial_qual != 5 && initial_qual != 4) {
426 
427 sep=XmCreateSeparator(rowcol,"swp",NULL,0);
428 
429 XtManageChild(sep);
430 
431 }
432 
433 t=XmStringCreateLocalized("Station Location");
434 argcount=0;
435 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
436 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
437 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
438 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
439 XtManageChild(pbutton);
440 XmStringFree(t);
441 
442 argcount=0;
443 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
444 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
445 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
446 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
447 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
448 rowcol3=XmCreateRadioBox(rowcol,"Edit tstations",args,argcount);
449 
450 st[0]="upper left";
451 st[1]="lower left";
452 st[2]="upper right";
453 st[3]="lower right";
454 
455 for(i=0;i<4;i++) {
456 
457  argcount=0;
458  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
459  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
460  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
461 
462  if(i==initial_pos)
463  XtSetArg(args[argcount],XmNset,True);
464 
465  else
466  XtSetArg(args[argcount],XmNset,False);
467 
468  argcount++;
469 
470  pbutton=XmCreateToggleButton(rowcol3,st[i],args,argcount);
471  XtAddCallback(pbutton,XmNvalueChangedCallback,change_tstation_location,
472  (XtPointer)(i));
473  XtManageChild(pbutton);
474 
475  }
476 
477 XtManageChild(rowcol1);
478 XtManageChild(rowcol3);
479 XtManageChild(rowcol);
480 XtManageChild(edit_dialog);
481 
482 }
483 
484 void change_tstation_location(Widget w,XtPointer data,XtPointer call_data)
485 
486 {
487 
488 extern struct station tstation[1000];
489 
490 if((int)data==0) {
491 
492  tstation[isave].xadd=-1;
493  tstation[isave].yadd=-1;
494 
495  }
496 
497 else if((int)data==2) {
498 
499  tstation[isave].xadd=0;
500  tstation[isave].yadd=-1;
501 
502  }
503 
504 else if((int)data==1) {
505 
506  tstation[isave].xadd=-1;
507  tstation[isave].yadd=0;
508 
509  }
510 
511 else if((int)data==3) {
512 
513  tstation[isave].xadd=0;
514  tstation[isave].yadd=0;
515 
516  }
517 
518 return;
519 
520 }
521 
522 void change_tcustom_file(Widget w,XtPointer data, XtPointer call_data)
523 
524 {
525 
526 extern Widget rowcol1;
527 extern int map_flag;
528 extern int grids_flag;
529 extern int points_flag;
530 extern int pcp_flag;
531 extern Widget drawing_area;
532 extern Widget edit_dialog;
533 extern Widget diswidget[6];
534 extern struct tdata tdata[10];
535 extern int pcpn_time;
536 extern int pcpn_time_step;
537 extern int pcpn_day;
538 extern Display *display;
539 extern Window window;
540 extern Widget top_level;
541 extern Cursor watch_cursor;
542 extern char tstation_list_custom_file[100];
543 extern char *timefile[];
544 int i;
545 extern int max_tstations;
546 extern struct station tstation[1000];
547 FILE *fp;
548 Cardinal argcount;
549 Arg args[10];
550 int time_pos;
551 char *p;
552 int idif;
553 int ival;
554 char *cstr;
555 int k;
556 extern int pcp_in_use[500];
557 Boolean bval;
558 float rtotal;
559 int m;
560 Widget rowcol;
561 XmString t;
562 extern int mmap[16];
563 Widget pbutton;
564 char muf[50];
565 extern Widget rpbutton;
566 extern int tcmode;
567 
568 if(pcpn_time_step==0)
569  time_pos=pcpn_time;
570 
571 else if(pcpn_time_step==1)
572  time_pos=4;
573 
574 else if(pcpn_time_step==2)
575  time_pos=5;
576 
577 XDefineCursor(display,window,watch_cursor);
578 XmUpdateDisplay(top_level);
579 
580 fp=fopen(tstation_list_custom_file,"w");
581 
582 if(fp != NULL) {
583 
584 for(i=0;i<max_tstations;i++)
585  fprintf(fp,"%s %s %d %d\n",tstation[i].hb5,tstation[i].parm,
586  tstation[i].xadd,tstation[i].yadd);
587 
588 fclose(fp);
589 
590 }
591 
592 argcount=0;
593 XtSetArg(args[argcount],XmNvalue,&cstr);argcount++;
594 XtGetValues(textz,args,argcount);
595 
596 ival=atoi(cstr);
597 p=strchr(cstr,'M');
598 XtFree(cstr);
599 
600 /* use manually entered data */
601 
602 idif=fabs(ival-tdata[pcpn_day].stn[isave].tlevel2[time_pos].data);
603 
604 if(idif > 1 && p == NULL && reset_value==0) {
605 
606  tdata[pcpn_day].stn[isave].tlevel2[time_pos].data=ival;
607  tdata[pcpn_day].stn[isave].tlevel2[time_pos].qual=2;
608 
609  }
610 
611 else {
612 
614 
615 
616 }
617 
618 if(tdata[pcpn_day].used[time_pos]!=0)
619  tdata[pcpn_day].used[time_pos]=2;
620 
621 if(pcpn_time_step==0)
622  time_pos=150+pcp_flag;
623 
624 else if(pcpn_time_step==1)
625  time_pos=190+pcpn_day;
626 
627 else if(pcpn_time_step==2)
628  time_pos=200+pcpn_day;
629 
630 pcp_in_use[time_pos]=-1;
631 
632 for(k=0;k<4;k++) {
633 
634  time_pos=150+pcpn_day*4+k;
635 
636  pcp_in_use[time_pos]=-1;
637 
638  if(tdata[pcpn_day].used[k]!=0)
639  tdata[pcpn_day].used[k]=2;
640  }
641 
642 for(k=1;k<5;k++)
643  XtSetSensitive(diswidget[k],False);
644 
645 if(pcpn_time_step==0)
646  time_pos=150+pcp_flag;
647 
648 else if(pcpn_time_step==1)
649  time_pos=190+pcpn_day;
650 
651 else if(pcpn_time_step==2)
652  time_pos=200+pcpn_day;
653 
654 if(points_flag==1 && pcp_in_use[time_pos]==-1)
655  k=0;
656 
657 else if(points_flag==1 && grids_flag==-1 && map_flag==-1)
658  k=0;
659 
660 else if(points_flag==-1 && grids_flag==1 && map_flag==-1)
661  k=1;
662 
663 else if(points_flag==-1 && grids_flag==-1 && map_flag==1)
664  k=2;
665 
666 else if(points_flag==1 && grids_flag==1 && map_flag==-1)
667  k=3;
668 
669 else if(points_flag==1 && grids_flag==-1 && map_flag==1)
670  k=4;
671 
672 else if(points_flag==-1 && grids_flag==-1 && map_flag==-1)
673  k=5;
674 
675 XtSetArg(args[0],XmNmenuHistory,diswidget[k]);
676 XtSetValues(rowcol1,args,1);
677 
678 XtSetSensitive(rpbutton,True);
679 
681 
682 printf("estimate\n");
683 
685 
686 printf("qc\n");
687 
689 
690 printf("restore\n");
691 
693 
694 XtDestroyWidget(edit_dialog);
695 
696 edit_dialog=NULL;
697 
698 write_screen();
699 
700 return;
701 
702 }
703 
704 static int hmflag=0;
705 
706 void change_tstation_quality(Widget w,XtPointer data, XtPointer call_data)
707 
708 {
709 
710 
711 extern int pcpn_day;
712 extern struct tdata tdata[10];
713 extern int pcpn_time;
714 extern int pcpn_time_step;
715 extern struct station tstation[1000];
716 int time_pos;
717 int k;
718 Arg args[10];
719 
720 hmflag++;
721 if(hmflag==1)
722  return;
723 
724 hmflag=0;
725 
726 new_qual=func[(int)data];
727 
728 
729 
730 }
731 
732 
733 void tgraph_file(Widget w,XtPointer data, XtPointer call_data)
734 
735 {
736 extern char scratch_file[100];
737 extern struct station tstation[1000];
738 char pc[10];
739 time_t ctime;
740 struct tm *gm;
741 int isave;
742 extern struct tdata tdata[10];
743 extern int pcpn_time_step;
744 
745 isave=(int)data;
746 
747 strcpy(pc,tstation[isave].parm);
748 
749 pc[3]='R';
750 
751 if(pc[4]!='Z' && pc[4]!='M')
752  pc[5]='Z';
753 
754 else {
755 
756  if(pcpn_time_step==0)
757  pc[5]='Z';
758  else if(pcpn_time_step==1)
759  pc[5]='X';
760  else if(pcpn_time_step==2)
761  pc[5]='N';
762 
763  }
764 
765 ctime=tdata[0].data_time;
766 
767 gm=gmtime(&ctime);
768 
769 display_data(tstation[isave].hb5,pc,gm->tm_mon+1,gm->tm_mday,gm->tm_year+1900,12,15,scratch_file);
770 
771 
772 }
773 
775 
776 {
777 
778 extern Widget edit_dialog;
779 
780 XtDestroyWidget(edit_dialog);
781 
782 edit_dialog=NULL;
783 
784 }
785 
786 void reset_tstation_quality(Widget w,XtPointer data, XtPointer call_data)
787 
788 {
789 
790 extern int pcpn_day;
791 extern struct tdata tdata[10];
792 extern int pcpn_time;
793 extern int pcpn_time_step;
794 int time_pos;
795 int k;
796 
797 if(pcpn_time_step==0)
798  time_pos=pcpn_time;
799 
800 else if(pcpn_time_step==1)
801  time_pos=4;
802 
803 else if(pcpn_time_step==2)
804  time_pos=5;
805 
806 if((int)data==1) {
807 
808  for(k=0;k<6;k++) {
809 
810  tdata[pcpn_day].stn[isave].tlevel2[time_pos].qual=
811  tdata[pcpn_day].stn[isave].tlevel1[time_pos].qual;
812 
813  tdata[pcpn_day].stn[isave].tlevel2[time_pos].data=
814  tdata[pcpn_day].stn[isave].tlevel1[time_pos].data;
815 
816  }
817 
818  reset_value=1;
820 
821  }
822 
823 else
824  reset_value=0;
825 
826 
827 }
828 
struct station tstation[1000]
Definition: daily_qc.c:197
void update_bad_tvalues(int iday)
Definition: bad_tvalues.c:181
void restore_bad_tvalues(int iday)
Definition: bad_tvalues.c:247
int max_tstations
Definition: daily_qc.c:46
char s
Definition: build_list.c:122
char t
Definition: build_list.c:122
int points_flag
Definition: daily_qc.c:283
void berror(Widget widget, char *string)
Definition: daily_qc.c:6411
int tcmode
Definition: daily_qc.c:29
int pcpn_time
Definition: daily_qc.c:248
Widget rowcol1
Definition: daily_qc.c:53
int pcpn_time_step
Definition: daily_qc.c:238
unsigned long mmap[16]
Definition: daily_qc.c:226
void kill_widget(Widget widget, XtPointer client_data, XtPointer call_data)
Definition: daily_qc.c:6473
int pcp_in_use[500]
Definition: daily_qc.c:243
Widget diswidget[6]
Definition: daily_qc.c:218
Widget top_level
Definition: daily_qc.c:214
void write_screen()
Definition: daily_qc.c:1623
int dflag[10]
Definition: daily_qc.c:293
int pcpn_day
Definition: daily_qc.c:248
GC gc
Definition: daily_qc.c:224
int pcp_flag
Definition: daily_qc.c:246
char scratch_file[1000]
Definition: daily_qc.c:137
Display * display
Definition: daily_qc.c:228
Font font[10]
Definition: daily_qc.c:231
int map_flag
Definition: daily_qc.c:283
unsigned long cmap[16]
Definition: daily_qc.c:226
float filter_value
Definition: daily_qc.c:119
int qflag[10]
Definition: daily_qc.c:293
char tstation_list_custom_file[1000]
Definition: daily_qc.c:174
int gage_char[2]
Definition: daily_qc.c:161
int zoom
Definition: daily_qc.c:289
char * timefile[]
Definition: daily_qc.c:144
int tsmax
Definition: daily_qc.c:87
Widget rpbutton
Definition: daily_qc.c:52
Window window
Definition: daily_qc.c:229
Widget drawing_area
Definition: daily_qc.c:214
int npoint[2]
Definition: daily_qc.c:289
int isom
Definition: daily_qc.c:141
Widget edit_dialog
Definition: daily_qc.c:100
int method
Definition: daily_qc.c:254
int grids_flag
Definition: daily_qc.c:283
Cursor watch_cursor
Definition: daily_qc.c:220
int display_flag
Definition: daily_qc.c:268
void display_data(char *hb5, char *pc, int dmonth, int dday, int dyear, int dhour, int ddays)
Definition: display_data.c:32
char qual[10]
Definition: display_data.c:29
Widget cons_dialog
int initial_qual
int new_qual
void time_series()
static int hmflag
int isave
void change_tcustom_file(Widget w, XtPointer data, XtPointer call_data)
int initial_pos
void reset_tstation_quality(Widget w, XtPointer data, XtPointer call_data)
void cancel_tedit()
void tgraph_file(Widget w, XtPointer data, XtPointer call_data)
void change_tstation_location(Widget w, XtPointer data, XtPointer call_data)
void edit_maxminstations(int win_x, int win_y, unsigned int win_button)
void change_tstation_quality(Widget w, XtPointer data, XtPointer call_data)
int func[]
Definition: daily_qc.c:159
int reset_value
Widget textz
void estimate_daily_tstations(int j)
printf("pcp %d\n", pcp_in_use[103])
void quality_control_tstations(int j)
static int max
Definition: rat.c:141
float dmult[4]
Definition: misc.h:540
long xmin[4]
Definition: misc.h:534
long xmax[4]
Definition: misc.h:536
long ymax[4]
Definition: misc.h:537
long ymin[4]
Definition: misc.h:535
long ycen[4]
Definition: misc.h:539
long xcen[4]
Definition: misc.h:538
Definition: misc.h:397
double lo
Definition: misc.h:402
double a
Definition: misc.h:399
double yo
Definition: misc.h:401
double xo
Definition: misc.h:400
Definition: misc.h:232
float lat
Definition: misc.h:239
float lon
Definition: misc.h:240
char parm[10]
Definition: misc.h:237
int yadd
Definition: misc.h:246
char hb5[10]
Definition: misc.h:235
int xadd
Definition: misc.h:245
Definition: misc.h:200
time_t data_time
Definition: misc_new.h:447
int used[6]
Definition: misc_new.h:449
struct ttn stn[1000]
Definition: misc_new.h:452
char qual
Definition: misc_new.h:401
short int data
Definition: misc_new.h:400
Definition: misc_new.h:35
struct tlevel * tlevel2
Definition: misc_new.h:411
struct tlevel * tlevel1
Definition: misc_new.h:410