Mapper
render_data.c
Go to the documentation of this file.
1 #include "prototypes.h"
2 
3 void render_data(int type,int index)
4 {
5 extern float rainfall_level_1[20];
6 extern float rainfall_level_2[20];
7 extern int hpflag;
8 extern int hgflag;
9 extern int dflag[10];
10 extern struct nexrad nexrad_define[5];
11 extern struct dval dval;
12 extern int regrid_flag;
13 /*
14 extern struct custom custom[6000];
15 */
16 extern struct custom custom[9000];
17 extern struct datalayer *sdatalayer;
18 extern struct saved *fsaved;
19 struct datalayer *datalayer;
20 struct saved *saved;
21 struct saved *ssaved;
22 int xadd,yadd;
23 int first;
24 float lat,lon;
25 int r,s;
26 float conv=.0174;
27 int h;
28 
29 regrid_flag=1;
30 
31 if(fsaved != NULL)
32 {
33  saved=fsaved;
34  while(saved != NULL)
35  {
36  ssaved=saved->next;
37  free(saved);
38  saved=ssaved;
39  }
40 }
41 
42 saved=NULL;
43 fsaved=NULL;
44 first=0;
46 
47 while( datalayer!=NULL)
48 {
49  if(datalayer->type != type)
50  {
52  if(datalayer==NULL)
53  {
54  if(first != 0)
55  saved->next=NULL;
56  break;
57  }
58  continue;
59  }
60 
61  if(type==3 || type==4 || type==5 || type==6)
62  {
63  if((hgflag==-1 &&
64  ((datalayer->pc[0]=='H' && datalayer->pc[1]=='G') ||
65  (datalayer->pc[0]=='Q' && datalayer->pc[1]=='T')))
66  ||
67  (hpflag==-1 &&
68  ((datalayer->pc[0]=='H' && datalayer->pc[1]=='P') ||
69  (datalayer->pc[0]=='Q' && datalayer->pc[1]=='I'))))
70  {
72  if(datalayer==NULL)
73  {
74  if(first != 0)
75  saved->next=NULL;
76  break;
77  }
78  continue;
79  }
80  }
81 
82  if(first==0)
83  {
84  saved=(struct saved *) calloc(1,sizeof(struct saved));
85  fsaved=saved;
86  first=1;
87  }
88  else
89  {
90  saved->next=(struct saved *) calloc(1,sizeof(struct saved));
91  saved=saved->next;
92  }
93 
94  lat=datalayer->lat;
95  lon=datalayer->lon;
96 
97  if(lat <= 0 || lon <= 0)
98  {
99  r=-99;
100  s=-99;
101  }
102  else
103  {
104  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
105  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
106  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
107  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
108  }
109 
110  saved->r=r;
111  saved->s=s;
112  saved->lat=lat;
113  saved->lon=lon;
114 
115  strcpy(saved->name,datalayer->name);
116  strcpy(saved->hb5,datalayer->hb5);
117  strcpy(saved->pc,datalayer->pc);
118  strcpy(saved->snum,datalayer->snum);
119  saved->elev=(int)datalayer->elev;
120  saved->rfs=-1;
121 
122  if(datalayer->lvl4 > 0)
123  saved->rfs=1;
124 
125  if(index >= datalayer->num)
126  saved->data=-9999;
127  else
128  saved->data=datalayer->data[index];
129 
130  saved->parm=0;
131  saved->fparm=0;
132 
133  if(type==14)
134  {
135  if(saved->data >= rainfall_level_1[1])
136  saved->parm=1;
137  if(saved->data >= rainfall_level_2[1])
138  saved->parm=2;
139  }
140 
141  else if(type==15)
142  {
143  if(saved->data >= rainfall_level_1[5])
144  saved->parm=1;
145  if(saved->data >= rainfall_level_2[5])
146  saved->parm=2;
147  }
148 
149  else if(type==16)
150  {
151  if(saved->data >= rainfall_level_1[8])
152  saved->parm=1;
153  if(saved->data >= rainfall_level_2[8])
154  saved->parm=2;
155  }
156 
157  else if(type==13)
158  {
159  if(saved->data >= rainfall_level_1[index])
160  saved->parm=1;
161  if(saved->data >= rainfall_level_2[index])
162  saved->parm=2;
163  }
164 
165  else
166  {
167  if(datalayer->lvl1 > -10 &&
168  datalayer->data[index] >= datalayer->lvl1)
169  saved->parm=1;
170  if(datalayer->lvl2 > -10 &&
171  datalayer->data[index] >= datalayer->lvl2)
172  saved->parm=2;
173  }
174 
175  if(datalayer->lvl3 ==1.0)
176  saved->fparm=1;
177  if(datalayer->lvl3 ==2.0)
178  saved->fparm=2;
179 
180  saved->pparm = -1;
181 
182  if(index < 6 && (type == 3 || type == 4 || type == 5 || type==6) &&
183  datalayer->data[index] < -98)
184  {
185  for(h=index; h < 6; h++)
186  {
187  if(datalayer->data[h] >= 0)
188  {
189  if(datalayer->lvl1 > -10 &&
190  datalayer->data[h] >= datalayer->lvl1)
191  saved->pparm=1;
192 
193  if(datalayer->lvl2 > -10 &&
194  datalayer->data[h] >= datalayer->lvl2)
195  saved->pparm=2;
196 
197  break;
198  }
199  }
200  }
201 
203 
204  saved->xadd=xadd;
205  saved->yadd=yadd;
207 
208  if(datalayer==NULL)
209  {
210  saved->next=NULL;
211  break;
212  }
213 }
214 
215 
216 /*
217 if((type==13 || type==14 || type==15 || type==16) &&
218  dflag[0]==1)
219  read_and_sum_nexrad(type,index);
220 */
221 
222 return;
223 
224 }
225 
226 void get_offset(char *hb5,char *pc,int *xadd,int *yadd)
227 {
228 /*
229 extern struct custom custom[6000];
230 */
231 extern struct custom custom[9000];
232 int i;
233 
234 i=0;
235 
236 while(custom[i].hb5[0]!=0)
237 {
238  if(strcmp(custom[i].hb5,hb5)==0 &&
239  strcmp(custom[i].pc,pc)==0)
240  {
241  *xadd=custom[i].xadd;
242  *yadd=custom[i].yadd;
243  return;
244  }
245  i++;
246 }
247 *xadd=0;
248 *yadd=0;
249 }
static int i
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
float rainfall_level_1[20]
Definition: mapper.c:27
struct datalayer * sdatalayer
Definition: mapper.c:147
struct saved * fsaved
Definition: mapper.c:128
int hgflag
Definition: mapper.c:45
int hpflag
Definition: mapper.c:45
int dflag[10]
Definition: mapper.c:106
struct datalayer * datalayer
Definition: mapper.c:146
static int first
Definition: mapper.c:4141
float rainfall_level_2[20]
Definition: mapper.c:28
int regrid_flag
Definition: mapper.c:53
void get_offset(char *hb5, char *pc, int *xadd, int *yadd)
Definition: render_data.c:226
void render_data(int type, int index)
Definition: render_data.c:3
Definition: misc.h:30
int xadd
Definition: misc.h:34
char hb5[10]
Definition: misc.h:32
int yadd
Definition: misc.h:35
char pc[10]
Definition: misc.h:33
float lvl3
Definition: misc.h:349
float lat
Definition: misc.h:353
char snum[10]
Definition: misc.h:345
float lvl2
Definition: misc.h:348
char name[40]
Definition: misc.h:346
double * data
Definition: misc.h:356
struct datalayer * next
Definition: misc.h:357
float lon
Definition: misc.h:354
int num
Definition: misc.h:355
int type
Definition: misc.h:352
float lvl1
Definition: misc.h:347
float lvl4
Definition: misc.h:350
char hb5[10]
Definition: misc.h:343
float elev
Definition: misc.h:351
char pc[10]
Definition: misc.h:344
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:487
Definition: misc.h:361
int parm
Definition: misc.h:373
int yadd
Definition: misc.h:372
int pparm
Definition: misc.h:375
char hb5[10]
Definition: misc.h:363
int elev
Definition: misc.h:367
char snum[10]
Definition: misc.h:365
int xadd
Definition: misc.h:371
char pc[10]
Definition: misc.h:364
double data
Definition: misc.h:378
float lat
Definition: misc.h:376
int r
Definition: misc.h:369
int s
Definition: misc.h:370
int fparm
Definition: misc.h:374
int rfs
Definition: misc.h:368
struct saved * next
Definition: misc.h:379
char name[40]
Definition: misc.h:366
float lon
Definition: misc.h:377