Mapper
get_lmaxmin.c
Go to the documentation of this file.
1 #include "prototypes_new.h"
2 
3 float get_lmaxmin(float lat,float lon,int mon,int type)
4 
5 {
6 
7 extern struct maxmin *maxmin;
8 int kk,jj,ix,iy;
9 double distance,value,dist1,dist2,dist,lat1,lon1;
10 float mxn;
11 float conv=.0174;
12 
13 if(maxmin==NULL)
14  return(-9999);
15 
16 iy=((maxmin->max_lat-lat)/maxmin->delta_lat+.00001);
17 ix=((maxmin->max_lon-lon)/maxmin->delta_lon+.00001);
18 
19 if(ix < 0 || iy < 0 || ix >= maxmin->maxi-1 || iy>= maxmin->maxj-1)
20  return(-9999.0);
21 
22 distance=0.0;
23 value=0.0;
24 
25 for(kk=ix;kk<=ix+1;kk++) {
26 
27 for(jj=iy;jj<=iy+1;jj++) {
28 
29  lat1=maxmin->max_lat-maxmin->delta_lat*jj;
30 
31  lon1=maxmin->max_lon-maxmin->delta_lon*kk;
32 
33  dist1=(lon1-lon)*cos((lat1+lat)/2*conv);
34 
35  dist2=lat-lat1;
36 
37  dist=pow(dist1,2)+pow(dist2,2);
38 
39  if(dist < 0.00001)
40  dist=.00001;
41 
42  dist=1/dist;
43 
44  if(type==0 && maxmin->maxvalue[mon][kk][jj] <= -50)
45  continue;
46 
47  if(type==1 && maxmin->minvalue[mon][kk][jj] <= -50)
48  continue;
49 
50  if(type==0)
51  value=value+dist*(float)maxmin->maxvalue[mon][kk][jj];
52 
53  if(type==1)
54  value=value+dist*(float)maxmin->minvalue[mon][kk][jj];
55 
56  distance=distance+dist;
57 
58  }
59  }
60 
61 if(distance==0)
62  return(-9999.0);
63 
64 mxn=value/distance;
65 
66 return(mxn);
67 
68 
69 }
70 
71 
72 
73 
74 
75 
76 
char * mon[]
float get_lmaxmin(float lat, float lon, int mon, int type)
Definition: get_lmaxmin.c:3
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
float value
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
short int *** minvalue
Definition: misc_new.h:766
int maxi
Definition: misc_new.h:767