Mapper
get_maxmin_coord.c
Go to the documentation of this file.
1 #include "prototypes_new.h"
2 
3 void get_maxmin_coord(char *fname,int smonth,int emonth,int type)
4 
5 {
6 
7  extern char *mon[];
8  extern int maxmin_used;
9  extern int init_maxmin;
10  int i,j,ier,maxj,maxi,k,kk;
11  float lat,lon;
12  extern struct maxmin *maxmin;
13  FILE *fp;
14  char *p,kbuf[20000],fbuf[100];
16 
17  if(init_maxmin==-1) {
18 
19  maxmin=(struct maxmin *) calloc(1,sizeof(struct maxmin));
20  if(maxmin==NULL) {
21 
22  printf("could not allocate maxmin space\n");
23  exit(1);
24 
25  }
26 
27  strcpy(fbuf,fname);
28  strcat(fbuf,"jan");
29 
30  fp=fopen(fbuf,"r");
31 
32  if(fp==NULL) {
33 
34  printf("could not open %s\n",fname);
35  exit(1);
36 
37  }
38 
39 
40  p=fgets(kbuf,80,fp);
41 
42  ier=sscanf(kbuf,"%f %f %f %f %f %f",&max_lat,&max_lon,&total_lat,
44 
45  fclose(fp);
46 
47  delta_lat=delta_lat/60.;
48  delta_lon=delta_lon/60.;
49 
50  maxi=(total_lon/delta_lon+.00001);
51  maxj=(total_lat/delta_lat+.00001);
52 
53  maxmin->maxi=maxi;
54  maxmin->maxj=maxj;
61 
62  maxmin->coord=(struct icoord**) calloc(maxi,sizeof(struct icoord *));
63 
64  maxmin->maxvalue=(short int***) calloc(12,sizeof(short int **));
65  maxmin->minvalue=(short int***) calloc(12,sizeof(short int **));
66 
67  if(maxmin->coord==NULL || maxmin->maxvalue==NULL || maxmin->maxvalue==NULL) {
68 
69  printf("no memory for maxmin array\n");
70  exit(1);
71 
72  }
73 
74  for(k=0;k<12;k++) {
75 
76  ier=is_good(k,smonth,emonth);
77 
78  if(ier == -1)
79  continue;
80 
81  maxmin->maxvalue[k]=(short int **)calloc(maxi,sizeof(short int *));
82  maxmin->minvalue[k]=(short int **)calloc(maxi,sizeof(short int *));
83 
84  if(maxmin->maxvalue[k]==NULL || maxmin->minvalue[k]==NULL) {
85 
86  printf("no memory for maxmin array\n");
87  exit(1);
88 
89  }
90 
91  }
92 
93  for(i=0;i<maxi;i++) {
94 
95  maxmin->coord[i]=(struct icoord *) calloc(maxj,sizeof(struct icoord));
96 
97  if(maxmin->coord[i]==NULL) {
98 
99  printf("no memory for maxmin array\n");
100  exit(1);
101 
102  }
103 
104  for(k=0;k<12;k++) {
105 
106  ier=is_good(k,smonth,emonth);
107 
108  if(ier==-1)
109  continue;
110 
111  maxmin->maxvalue[k][i]=(short int *) calloc(maxj,sizeof(short int));
112  maxmin->minvalue[k][i]=(short int *) calloc(maxj,sizeof(short int));
113 
114  if(maxmin->maxvalue[k][i]==NULL || maxmin->minvalue[k][i]==NULL) {
115 
116  printf("no memory for maxmin array\n");
117  exit(1);
118 
119  }
120 
121  }
122 
123  }
124 
125 /*create screen coordinates */
126 
127 /* j increments latitude i increments longitude */
128 
129  for(j=0;j<maxj;j++) {
130 
131  for(i=0;i<maxi;i++) {
132 
133  lat=max_lat-(float)j*delta_lat;
134  lon=max_lon-(float)i*delta_lon;
135 
137 
138  }
139 
140 }
141 
142 }
143 
144 maxi=maxmin->maxi;
145 maxj=maxmin->maxj;
146 
147 for(k=0;k<12;k++) {
148 
149  ier=is_good(k,smonth,emonth);
150 
151  if(ier==-1)
152  continue;
153 
154  sprintf(fbuf,"%s%s",fname,mon[k]);
155 
156  fp=fopen(fbuf,"r");
157 
158  if(fp==NULL) {
159 
160  printf("could not open %s\n",fbuf);
161  exit(1);
162 
163  }
164 
165  p=fgets(kbuf,80,fp);
166 
167 /* read in data file */
168 /* i is longitude j is latitude */
169 
170  for(j=0;j<maxj;j++) {
171 
172  fread(kbuf,sizeof(char),maxi*5,fp);
173  kbuf[maxi*5]=0;
174  kk=0;
175 
176 /* read in longitude records */
177 
178  for(i=0;i<maxi;i++) {
179 
180  if(type==0)
181  maxmin->maxvalue[k][i][j]=atoi(&kbuf[kk]);
182 
183  if(type==1)
184  maxmin->minvalue[k][i][j]=atoi(&kbuf[kk]);
185 
186  kk=kk+5;
187 
188  }
189 
190 }
191 
192 fclose(fp);
193 
194 init_maxmin=1;
195 
196 }
197 
198 maxmin_used=1;
199 return;
200 
201 }
202 void get_maxmin_pixels(int i, int j, float lat,float lon)
203 
204  {
205 
206  extern struct dval dval;
207  long r,s;
208  float conv=.0174;
209  extern struct maxmin *maxmin;
210 
211  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
212  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
213 
214  maxmin->coord[i][j].x=r;
215 
216  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
217  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
218 
219  maxmin->coord[i][j].y=s;
220 
221  return;
222 
223  }
224 
225 
226 
227 
228 
229 
230 
231 
232 
233 
234 
235 
236 
237 
238 
239 
240 
241 
242 
static int i
char fbuf[100]
Definition: decode_HDP.c:2
char * mon[]
void get_maxmin_coord(char *fname, int smonth, int emonth, int type)
void get_maxmin_pixels(int i, int j, float lat, float lon)
int is_good(int k, int smonth, int emonth)
Definition: is_good.c:4
fclose(fp)
sprintf(fbuf,"/usr/mapper/nexrad/ngrid.%02d-%02d-%02d-%02d", year, month, day, hour)
printf("fbuf is %s\n", fbuf)
fp
Definition: make_NEXRAD.c:339
int j
Definition: mapp2h.h:48
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
int k
Definition: mapp2h.h:48
double max_lat
Definition: mapper.c:22
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
short int y
Definition: misc_new.h:681
short int x
Definition: misc_new.h:680
float max_lat
Definition: misc_new.h:769
float delta_lat
Definition: misc_new.h:773
int maxj
Definition: misc_new.h:768
float delta_lon
Definition: misc_new.h:774
float max_lon
Definition: misc_new.h:770
short int *** maxvalue
Definition: misc_new.h:765
float total_lon
Definition: misc_new.h:772
struct icoord ** coord
Definition: misc_new.h:764
float total_lat
Definition: misc_new.h:771
short int *** minvalue
Definition: misc_new.h:766
int maxi
Definition: misc_new.h:767