Mapper
time_series.c
Go to the documentation of this file.
1 #include "prototypes.h"
2 
3 void time_series(int win_x,int win_y,unsigned int win_button,char *disp)
4 
5 {
6 extern Cursor watch_cursor;
7 extern Cursor dotbox_cursor;
8 extern Widget top_level;
9 extern Window window;
10 extern Widget drawing_area;
11 extern Display *display;
12 int isave;
13 extern struct pdata pdata[10];
14 extern int qflag[10];
15 extern struct station station[3000];
16 extern int max_stations;
17 extern int npoint[2],zoom;
18 extern struct display_set display_set[4];
19 extern struct dval dval;
20 extern int dflag[10];
21 extern int pcpn_day,pcpn_time;
22 extern int pcpn_time_step;
23 Widget rowcol,rowcol3,pbutton,rowcol1,dialog,sep;
24 float conv=.0174;
25 int MY=10;
26 Arg args[10];
27 Cardinal argcount;
28 int i;
29 double testdist,maxdist;
30 int x,y;
31 XmString t;
32 Dimension width,height;
33 signed long XSIZE,YSIZE;
34 float xrat,yrat,mult;
36 long lint1,lint2;
37 float dmult,lat,lon;
38 char cmd[100],pc[10],buf[100],muf[10];
39 long r,s;
40 int time_pos,naflag,m;
41 char tbuf[100];
42 
43 if(pcpn_time_step==0)
44  time_pos=pcpn_time;
45 
46 else
47  time_pos=4;
48 
49 /* need to set flag to plot */
50 
51 /* need to set resource in widget also */
52 
53 XtSetArg(args[0],XtNwidth,&width);
54 XtSetArg(args[1],XtNheight,&height);
55 XtGetValues(drawing_area,args,2);
56 
57 XSIZE=(long)width*10L;
58 YSIZE=(long)height*10L;
59 
60 xrat=(float)XSIZE/(float)12800;
61 yrat=(float)YSIZE/(float)9600;
62 
63 if(xrat < yrat)
64  mult=xrat;
65 
66 else
67  mult=yrat;
68 
69 display_flag=0;
70 h=0;
71 
79 
80 lint1=(long)npoint[0]*(long)MY;
81 lint2=(long)npoint[1]*(long)MY;
82 
83 x=win_x;
84 y=win_y;
85 
86 if(zoom==1) {
87 
88  win_x=x*MY/mult;
89  win_y=y*MY/mult;
90 
91  }
92 
93 else {
94 
95 
96  win_x=((x*MY-xcen)/zoom + lint1)/mult;
97  win_y=((y*MY-ycen)/zoom + lint2)/mult;
98 
99  }
100 
101 
102 if(zoom==1) {
103 
104  x=(win_x*mult)/MY;
105  y=(win_y*mult)/MY;
106 
107  }
108 
109 else {
110 
111  x=(((win_x*mult)-lint1)*zoom+xcen)/MY;
112  y=(((win_y*mult)-lint2)*zoom+ycen)/MY;
113 
114  }
115 
116 isave=-1;
117 maxdist=9999;
118 
119 for(i=0;i<max_stations;i++){
120 
121  lat=station[i].lat;
122  lon=station[i].lon;
123 
124  if(strncmp(&station[i].parm[4],"P",1)==0 && dflag[1] != 1)
125  continue;
126 
127  if(strncmp(&station[i].parm[4],"M",1)==0 && dflag[2] != 1)
128  continue;
129 
130  if(strncmp(&station[i].parm[4],"R",1)==0 && dflag[3] != 1)
131  continue;
132 
133  if(strncmp(&station[i].parm[4],"G",1)==0 && dflag[4] != 1)
134  continue;
135 
136  if(strncmp(&station[i].parm[4],"Z",1)==0 && dflag[5] != 1)
137  continue;
138 
139  for(m=0;m<8;m++) {
140 
141  if((m==pdata[pcpn_day].stn[i].frain[time_pos].qual &&
142  qflag[m]==1) ||
143  (m==(pdata[pcpn_day].stn[i].frain[time_pos].qual-100) &&
144  qflag[m]==1) )
145  break;
146 
147  }
148 
149  if(m==8)
150  continue;
151 
152  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
153  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
154 
155  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
156  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
157 
158  testdist= pow((double)(win_x-r),2) + pow((double)(win_y-s),2);
159  testdist= pow(testdist,.5);
160 
161  if(testdist < maxdist) {
162 
163  isave=i;
164  maxdist=testdist;
165 
166  }
167 
168  }
169 
170 if(isave==-1)
171  return;
172 
173 strcpy(cmd,"rsh wasatch -l oper /usr/local/bin/subdisplay ");
174 strcat(cmd,station[isave].hb5);
175 strcat(cmd," ");
176 strcpy(pc,station[isave].parm);
177 
178 pc[3]='R';
179 if(pc[4]!='Z') {
180 
181  pc[1]='C';
182  pc[2]='I';
183 
184  }
185 
186 else
187  pc[2]='D';
188 
189 strcat(cmd,pc);
190 strcat(cmd," ");
191 
192 strcat(cmd,"15 ");
193 sprintf(tbuf,"-display %s",disp);
194 strcat(cmd,tbuf);
195 
196 XDefineCursor(display,window,watch_cursor);
197 XmUpdateDisplay(top_level);
198 
199 XUndefineCursor(display,window);
200 XDefineCursor(display,window,dotbox_cursor);
201 system(cmd);
202 
203 }
204 
205 
206 
static int i
Display * display
Definition: mapper.c:159
char qual[10]
Definition: subdisplay.c:33
Widget top_level
Definition: display_rec.c:5
Widget dialog
Definition: display_rec.c:5
int isave
Definition: edit_stations.c:8
float mult
Definition: edit_stations.c:6
struct stat buf
Definition: is_file_closed.c:8
void time_series(int win_x, int win_y, unsigned int win_button, char *disp)
Definition: time_series.c:3
sprintf(fbuf,"/usr/mapper/nexrad/ngrid.%02d-%02d-%02d-%02d", year, month, day, hour)
system(tarbuf)
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
int pcpn_time
Definition: mapper.c:83
int pcpn_time_step
Definition: mapper.c:75
int max_stations
Definition: mapper.c:64
int dflag[10]
Definition: mapper.c:106
int pcpn_day
Definition: mapper.c:83
Cursor dotbox_cursor
Definition: mapper.c:155
Window window
Definition: mapper.c:190
Cursor watch_cursor
Definition: mapper.c:153
int display_flag
Definition: mapper.c:100
float xrat
long xmax
float yrat
long ymax
long lint1
signed long xcen
Dimension height
signed long ycen
Dimension width
long lint2
Arg args[10]
long xmin
unsigned long XSIZE
int MY
int zoom
float dmult
Widget drawing_area
Definition: mapper.c:185
int npoint[2]
Definition: mapper.c:105
long ymin
unsigned long YSIZE
char cmd[100]
Definition: send_afos.c:7
float dmult[4]
Definition: misc.h:613
long xmin[4]
Definition: misc.h:607
long xmax[4]
Definition: misc.h:609
long ymax[4]
Definition: misc.h:610
long ymin[4]
Definition: misc.h:608
long ycen[4]
Definition: misc.h:612
long xcen[4]
Definition: misc.h:611
Definition: misc.h:470
double lo
Definition: misc.h:475
double a
Definition: misc.h:472
double yo
Definition: misc.h:474
double xo
Definition: misc.h:473
Definition: misc.h:280
struct stn stn[1500]
Definition: misc.h:286
short int qual
Definition: misc.h:258
Definition: misc.h:296
float lat
Definition: misc.h:303
float lon
Definition: misc.h:304
Definition: misc.h:264
struct rain frain[5]
Definition: misc.h:267