Mapper
get_basin_data.c
Go to the documentation of this file.
1 #include "prototypes.h"
2 
3 void get_basin_data(char *basin_file,char *hrap_file)
4 
5 {
6 
7 extern struct map map[500];
8 extern struct dval dval;
9 FILE *fr,*fp;
10 char *p,ibuf[100];
11 int ib,ier,l,numpts,ip,x,y,ip2,ip3,ip4,zones,i,maxib,dum,mm;
12 double lat,lon;
13 long r,s;
14 float conv=.0174;
15 
16 if(basin_file[0]==0 ) {
17 
18  printf("no basin_file specified\n");
19  exit(1);
20 
21  }
22 
23 if(hrap_file[0]==0 ) {
24 
25  printf("no basin_file specified\n");
26  exit(1);
27 
28  }
29 
30 fr=fopen(basin_file,"r");
31 
32 if(fr==NULL) {
33 
34  printf("could not open basin_file %s\n",basin_file);
35 
36  exit(1);
37 
38  }
39 
40 fp=fopen(hrap_file,"r");
41 
42 if(fp==NULL) {
43 
44  printf("could not open hrap_file %s\n",hrap_file);
45 
46  exit(1);
47 
48  }
49 
50 ib=0;
51 
52 for(;;) {
53 
54  p=fgets(ibuf,80,fr);
55 
56  if(p==NULL)
57  break;
58 
59  p=strchr(ibuf,'\n');
60  if(p!=NULL)
61  *p=0;
62 
63  ier=sscanf(ibuf,"%d %d %s",&numpts,&dum,map[ib].hb5);
64 
65  map[ib].basin_points=numpts;
66 
67  map[ib].basin=calloc(numpts,sizeof(XPoint));
68 
69  for(l=0;l<numpts;l++) {
70 
71  p=fgets(ibuf,80,fr);
72 
73  if(p==NULL)
74  break;
75 
76  ier=sscanf(ibuf,"%lf %lf",&lon,&lat);
77 
78  lon=-lon;
79 
80  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
81  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
82 
83  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
84  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
85 
86  map[ib].basin[l].x=r;
87  map[ib].basin[l].y=s;
88 
89  }
90 
91  p=fgets(ibuf,80,fr);
92 
93  ib++;
94 
95  }
96 
97 map[ib].hb5[0]=0;
98 maxib=ib;
99 
100 for(ib=0;ib<maxib;ib++) {
101 
102  p=fgets(ibuf,80,fp);
103 
104  if(p==NULL)
105  break;
106 
107  ier=sscanf(ibuf,"%d %d",&numpts,&zones);
108 
109  map[ib].hrap_points=numpts;
110 
111  map[ib].hrap_data=calloc(numpts,sizeof(struct hrap_data));
112 
113  for(mm=0;mm<4;mm++)
114  map[ib].zones[mm]=-1;
115 
116  for(l=0;l<numpts;l++) {
117 
118  for(mm=0;mm<4;mm++)
119  map[ib].hrap_data[l].zone[mm]=-1;
120 
121  p=fgets(ibuf,100,fp);
122 
123  if(p==NULL)
124  break;
125 
126  ier=sscanf(ibuf,"%d %d %d %d %d %d\n",&x,&y,&ip,&ip2,&ip3,&ip4);
127 
128  if(ip < 0 || ip > 4) {
129 
130  printf("hrap error\n");
131  exit(1);
132 
133  }
134 
135  map[ib].hrap_data[l].x=x;
136  map[ib].hrap_data[l].y=y;
137  map[ib].hrap_data[l].zone[ip-1]=1;
138  map[ib].zones[0]=1;
139 
140  if(ier>=4) {
141 
142  if(ip2 < 0 || ip2 > 4) {
143 
144  printf("hrap error\n");
145  exit(1);
146 
147  }
148 
149  map[ib].hrap_data[l].zone[ip2-1]=1;
150  map[ib].zones[ip2-1]=1;
151 
152  }
153 
154 
155  if(ier>=5) {
156 
157  if(ip3 < 0 || ip3 > 4) {
158 
159  printf("hrap error\n");
160  exit(1);
161 
162  }
163 
164  map[ib].hrap_data[l].zone[ip3-1]=1;
165  map[ib].zones[ip3-1]=1;
166 
167  }
168 
169  if(ier>=6) {
170 
171  if(ip4 < 0 || ip4 > 4) {
172 
173  printf("hrap error\n");
174  exit(1);
175 
176  }
177 
178  map[ib].hrap_data[l].zone[ip4-1]=1;
179  map[ib].zones[ip4-1]=1;
180 
181  }
182 
183  }
184 
185 
186  for(i=0;i<51;i++)
187  map[ib].maps_done[i]=-1;
188 
189 
190  }
191 
192 fclose(fr);
193 fclose(fp);
194 
195 return;
196 
197 }
198 
199 
static int i
void get_basin_data(char *basin_file, char *hrap_file)
Definition: get_basin_data.c:3
fclose(fp)
printf("fbuf is %s\n", fbuf)
fp
Definition: make_NEXRAD.c:339
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
char hrap_file[100]
Definition: mapper.c:19
ib
Definition: shleap.cc:46
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
int zone[4]
Definition: misc.h:232
int x
Definition: misc.h:230
int y
Definition: misc.h:231
Definition: misc.h:236
char hb5[10]
Definition: misc.h:238
struct hrap_data * hrap_data
Definition: misc.h:245
int basin_points
Definition: misc.h:240
int hrap_points
Definition: misc.h:244
int zones[4]
Definition: misc.h:241
XPoint * basin
Definition: misc.h:243