32 float conv=.0174,totlat,sorted[30];
33 float dist,dist1,dist2,distance,
value;
34 float maxvalue,minvalue,mindistance,maxdistance;
35 float isohlat,isohlon;
36 int jj,latindex,lonindex;
38 int slider_size,scrollm,ivalue,increment,page_increment;
40 double omaximum_latitude,ominimum_latitude,ocenter_longitude;
41 int ier,newflag,mm,mer;
49 float maxminlat,maxminlon;
54 printf(
"could not allocate hrap_grid space\n");
59 pcp=(
struct pcp *) calloc(1,
sizeof(
struct pcp));
62 printf(
"could not allocate pcp space\n");
67 spf=(
struct pcp *) calloc(1,
sizeof(
struct pcp));
70 printf(
"could not allocate pcp space\n");
75 tpf=(
struct pcp *) calloc(1,
sizeof(
struct pcp));
78 printf(
"could not allocate pcp space\n");
85 maxi=-1;
maxj=-1;mini=999999;minj=99999;
87 strcpy(dbuf,
"HRAP Coordinates\n");
91 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
93 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
94 &increment,&page_increment);
96 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
97 slider_size, increment,page_increment,True);
103 totlat=maximum_latitude-minimum_latitude+2.0;
105 hrap=
LatLongToHrap((
float)maximum_latitude,(
float)center_longitude-7);
122 hrap=
LatLongToHrap((
float)maximum_latitude,(
float)center_longitude+7);
139 hrap=
LatLongToHrap((
float)minimum_latitude,(
float)center_longitude-7);
155 hrap=
LatLongToHrap((
float)minimum_latitude,(
float)center_longitude+7);
184 pcp->
value=(
short int **) calloc(
maxi,
sizeof(
short int *));
187 printf(
"could not allocate pcp space\n");
192 spf->
value=(
short int **) calloc(
maxi,
sizeof(
short int *));
195 printf(
"could not allocate pcp space\n");
200 tpf->
value=(
short int **) calloc(
maxi+1000,
sizeof(
short int *));
203 printf(
"could not allocate pcp space\n");
208 for(i=0;i<
maxi;i++) {
210 pcp->
value[i]=(
short int *) calloc(
maxj,
sizeof(
short int));
214 printf(
"no memory for pcp array\n");
221 for(i=0;i<
maxi;i++) {
223 spf->
value[i]=(
short int *) calloc(
maxj,
sizeof(
short int));
227 printf(
"no memory for pcp array\n");
234 for(i=0;i<
maxi+1000;i++) {
236 tpf->
value[i]=(
short int *) calloc(
maxj,
sizeof(
short int));
240 printf(
"no memory for pcp array\n");
263 printf(
"no memory for hrap array\n");
283 printf(
"no memory for hrap array\n");
290 for(i=0;i<
maxi;i++) {
302 printf(
"no memory for hrap array\n");
323 printf(
"no memory for hrap array\n");
352 p=fgets(dbuf,100,fz);
354 ier=sscanf(dbuf,
"%ld %lf %lf %lf",&ost_mtime,&omaximum_latitude,
355 &ominimum_latitude,&ocenter_longitude);
357 tm=gmtime(&statbuf.st_mtime);
359 if(ost_mtime != statbuf.st_mtime ||
360 omaximum_latitude != maximum_latitude ||
361 ominimum_latitude != minimum_latitude ||
362 ocenter_longitude != center_longitude)
372 p=fgets(dbuf,100,fz);
384 strcpy(dbuf,
"Gage to grid recalculation\n");
388 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
390 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
391 &increment,&page_increment);
393 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
394 slider_size, increment,page_increment,True);
398 fprintf(fz,
"%ld %f %f %f\n",statbuf.st_mtime,maximum_latitude,
399 minimum_latitude,center_longitude);
415 r=
dval.
a * cos(hrap.
y*conv)/(1+sin(hrap.
y*conv))
420 s=
dval.
a * cos(hrap.
y*conv)/(1+sin(hrap.
y*conv))
428 if(
topo==NULL || ix <= 0 || iy <= 0 || ix >=
topo->
maxi-1 || iy >=
441 for(kk=ix;kk<=ix+1;kk++) {
442 for(jj=iy;jj<=iy+1;jj++) {
447 dist2=(hrap.
x-lon)*cos((lat+hrap.
y)/2*conv);
451 dist=pow(dist1,2)+pow(dist2,2);
458 value=value+dist*(float)
topo->
value[kk][jj];
459 distance=distance+dist;
464 elevation=(value*32.1)/distance;
477 fread(kbuf,
sizeof(
char),150,fz);
479 for(mm=0;mm<30;mm++) {
498 dist=pow(dist1,2)+pow(dist2,2);
502 if(dist < sorted[l]) {
504 for(h=29; h > l; h--) {
506 sorted[h]=sorted[h-1];
549 if(latindex >= 0 && lonindex >= 0 &&
550 latindex < isoh->
maxj-1 && lonindex < isoh->
maxi-1) {
555 for(kk=latindex;kk<=latindex+1;kk++) {
559 for(jj=lonindex;jj<=lonindex+1;jj++) {
563 dist1=isohlat-irap.
y;
564 dist2=(isohlon-irap.
x)*cos((isohlat+irap.
y)/2*conv);
566 dist=pow(dist1,2)+pow(dist2,2);
572 distance=distance+dist;
590 if(latindex >= 0 && lonindex >= 0 &&
591 latindex < maxmin->
maxj-1 && lonindex < maxmin->
maxi-1) {
598 for(kk=latindex;kk<=latindex+1;kk++) {
602 for(jj=lonindex;jj<=lonindex+1;jj++) {
606 dist1=maxminlat-irap.
y;
607 dist2=(maxminlon-irap.
x)*cos((maxminlat+irap.
y)/2*conv);
609 dist=pow(dist1,2)+pow(dist2,2);
614 maxdistance=maxdistance+dist;
622 mindistance=mindistance+dist;
629 if(maxdistance != 0.0)
632 if(mindistance != 0.0)
char hrap_gage_file[1000]
struct hrap_grid * hrap_grid
char station_list_file[1000]
void get_hrap_coord(double maximum_latitude, double minimum_latitude, double center_longitude, int smonth, int emonth)
printf("pcp %d\n", pcp_in_use[103])
struct HRAP LatLongToHrap(float, float)
struct HRAP HrapToLatLong(struct HRAP)