Mapper
get_station_list_build.c
Go to the documentation of this file.
1 #include "prototypes_new.h"
2 
3 void get_station_list(char *fname,int smonth,int emonth)
4 
5 {
6 
7  extern struct dval dval;
8  extern char station_list_custom_file[100];
9  extern char station_climo_file[100];
10  int i,ier,sflag,field,j,xadd,yadd;
11  extern struct station station[3000];
12  extern int max_stations;
13  FILE *fp;
14  char *p,kbuf[200],hb5[10],parm[10];
15  double dist1,dist2,dist,sorted[30];
16  int m,l,h,k;
17  int kk;
18  float lat,lon;
19  float conv=.0174;
20  long t,u;
21  float f[15];
22  int ifound;
23  int oldk;
24  float elev;
25 
26  max_stations=0;
27 
28  fp=fopen(fname,"r");
29 
30  if(fp==NULL) {
31 
32  printf("could not open %s\n",fname);
33  exit(1);
34 
35  }
36 
37  i=0;
38  for(;;) {
39 
40  p=fgets(kbuf,120,fp);
41  if(p==NULL)
42  break;
43 
44  if(i==3000)
45  break;
46 
47  p=strchr(kbuf,'\n');
48 
49  if(p!=NULL)
50  *p=0;
51 
52  j=0;
53  while(kbuf[j] != 0) {
54 
55  if(kbuf[j]=='\t')
56  kbuf[j]=' ';
57 
58  j++;
59 
60  }
61 
62  station[i].isoh=calloc(24,sizeof(float));
63  station[i].hb5=calloc(10,sizeof(char));
64  station[i].name=calloc(50,sizeof(char));
65  station[i].parm=calloc(10,sizeof(char));
66  station[i].cparm=calloc(10,sizeof(char));
67  station[i].index=calloc(30,sizeof(short int));
68  station[i].zindex=calloc(5,sizeof(short int));
69 
70  ier=sscanf(kbuf,"%s %s %f %f %f %d ",station[i].hb5,
72  &station[i].lon,&elev,&station[i].tip);
73 
74  station[i].elev=(int)elev;
75 
76  if(strncasecmp("PPD",station[i].parm,3)!=0 &&
77  strncasecmp("PPM",station[i].parm,3)!=0 )
78  continue;
79 
80  for(m=0;m<i;m++) {
81 
82  if(strcmp(station[i].hb5,station[m].hb5)==0 &&
83  station[i].parm[4]==station[m].parm[4]){
84 
85  printf("duplicate station %s\n",station[i].hb5);
86  break;
87 
88  }
89 
90  }
91 
92 
93 
94  if(i!=m)
95  continue;
96 
97  if(ier != 6)
98  continue;
99 
100  lat=station[i].lat;
101  lon=station[i].lon;
102 
103  t=dval.a * cos(lat*conv)/(1+sin(lat*conv))
104  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
105 
106  station[i].x=t;
107 
108  u=dval.a * cos(lat*conv)/(1+sin(lat*conv))
109  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
110 
111  station[i].y=u;
112 
113  sflag=1;
114  field=0;
115  for(j=0;j<strlen(kbuf);j++) {
116 
117  if(kbuf[j] !=' ' && sflag==1) {
118  sflag=0;
119  field++;
120 
121  }
122 
123  else if(kbuf[j]==' ')
124  sflag=1;
125 
126  if(field==7) {
127 
128  kbuf[j+49]=0;
129 
130  strcpy(station[i].name,&kbuf[j]);
131  break;
132 
133  }
134 
135  }
136 
137  i++;
138 
139  }
140 
142 
143 fclose(fp);
144 
145 for(i=0;i<max_stations;i++){
146 
147  for(m=0;m<24;m++)
148  station[i].isoh[m]=-99;
149 
150 
151 }
152 
153 fp=NULL;
154 if(station_climo_file[0]!=0)
155  fp=fopen(station_climo_file,"r");
156 
157 if(fp==NULL) {
158 
159  printf("no climo file\n");
160 
161 }
162 
163 else {
164 
165  for(;;) {
166 
167  p=fgets(kbuf,200,fp);
168  if(p==NULL)
169  break;
170 
171  ier=sscanf(kbuf,"%s %s %f %f %f %f %f %f %f %f %f %f %f %f",
172  hb5,parm,&f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],&f[8],
173  &f[9],&f[10],&f[11]);
174 
175  if(ier != 14)
176  continue;
177 
178  for(i=0;i<max_stations;i++) {
179 
180  if(strcmp(station[i].hb5,hb5)==0 &&
181  station[i].parm[4]==parm[4]) {
182 
183  for(m=0;m<12;m++)
184  station[i].isoh[m]=f[m];
185 
186  strcpy(station[i].cparm,parm);
187 
188  }
189 
190  }
191 
192 
193  }
194 
195  rewind(fp);
196 
197  for(;;) {
198 
199  p=fgets(kbuf,200,fp);
200  if(p==NULL)
201  break;
202 
203  ier=sscanf(kbuf,"%s %s %f %f %f %f %f %f %f %f %f %f %f %f",
204  hb5,parm,&f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],&f[8],
205  &f[9],&f[10],&f[11]);
206 
207  if(ier != 14)
208  continue;
209 
210  if(strcmp(parm,"PPMPBCM") != 0 &&
211  strcmp(parm,"PPMRZCM") != 0)
212  continue;
213 
214  for(i=0;i<max_stations;i++) {
215 
216  if(strcmp(station[i].hb5,hb5)==0 &&
217  (station[i].isoh[0] < 0 ||
218  strcmp(station[i].cparm,"PPMPBCM")==0)) {
219 
220  if(strcmp(station[i].cparm,"PPMPBCM")==0)
221  printf("overwrite\n");
222 
223  for(m=0;m<12;m++)
224  station[i].isoh[m]=f[m];
225 
226  strcpy(station[i].cparm,parm);
227 
228 
229  }
230 
231  }
232 
233 
234  }
235 
236 fclose(fp);
237 
238 
239 }
240 
241 }
242 
243 
244 
245 
246 
247 
char name[35][30]
Definition: borshef.c:10
static int i
void get_station_list(char *fname, int smonth, int emonth)
fclose(fp)
printf("fbuf is %s\n", fbuf)
fp
Definition: make_NEXRAD.c:339
int j
Definition: mapp2h.h:48
int elev
Definition: mapp2h.h:48
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
int k
Definition: mapp2h.h:48
int max_stations
Definition: mapper.c:64
char fname[100]
Definition: send_afos.c:6
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:538
Definition: misc.h:296
float lat
Definition: misc.h:303
int x
Definition: misc.h:307
char hb5[10]
Definition: misc.h:299
int tip
Definition: misc.h:306
float isoh[24]
Definition: misc.h:298
float lon
Definition: misc.h:304
char name[50]
Definition: misc.h:300
int y
Definition: misc.h:308
short int index[30]
Definition: misc.h:302
short int * zindex
Definition: misc_new.h:473
int elev
Definition: misc.h:305
char parm[10]
Definition: misc.h:301
char * cparm
Definition: misc_new.h:470