Mapper
get_topo_coord.c
Go to the documentation of this file.
1 #include "prototypes_new.h"
2 
3 void get_topo_coord(char *fname)
4 
5 {
6 
7  int i,j,ier,maxj,maxi,max_value,k;
8  float lat,lon;
9  extern struct topo *topo;
10  FILE *fp;
11  char *p,kbuf[20000];
13 
14  topo=(struct topo *) calloc(1,sizeof(struct topo));
15  if(topo==NULL) {
16 
17  printf("could not allocate topo space\n");
18  exit(1);
19 
20  }
21 
22  max_value=0;
23 
24  fp=fopen(fname,"r");
25 
26  if(fp==NULL) {
27 
28  printf("could not open %s\n",fname);
29  exit(1);
30 
31  }
32 
33  p=fgets(kbuf,80,fp);
34 
35  ier=sscanf(kbuf,"%f %f %f %f %f %f",&max_lat,&max_lon,&total_lat,&total_lon,&delta_lat,&delta_lon);
36  delta_lat=delta_lat/60.;
37  delta_lon=delta_lon/60.;
38 
39  maxi=ceil(total_lon/delta_lon);
40  maxj=ceil(total_lat/delta_lat);
41 
42  topo->maxi=maxi;
43  topo->maxj=maxj;
50 
51  topo->coord=(struct icoord**) calloc(maxi,sizeof(struct icoord *));
52  topo->value=(short int**) calloc(maxi,sizeof(short int *));
53 
54  if(topo->coord==NULL || topo->value==NULL) {
55 
56  printf("no memory for topo array\n");
57  exit(1);
58 
59  }
60 
61  for(i=0;i<maxi;i++) {
62 
63  topo->coord[i]=(struct icoord *) calloc(maxj,sizeof(struct icoord));
64 
65  topo->value[i]=(short int *) calloc(maxj,sizeof(short int));
66 
67  if(topo->coord[i]==NULL || topo->value[i]==NULL) {
68 
69  printf("no memory for topo array\n");
70  exit(1);
71 
72  }
73 
74  }
75 
76 
77 printf("****topo maxi %d maxj %d\n",maxi,maxj);
78  for(j=0;j<maxj;j++) {
79 
80  fread(kbuf,sizeof(char),maxi*4,fp);
81  kbuf[maxi*4]=0;
82  k=0;
83 
84  for(i=0;i<maxi;i++) {
85 
86  topo->value[i][j]=atoi(&kbuf[k]);
87 
88  lat=max_lat-(float)j*delta_lat;
89  lon=max_lon-(float)i*delta_lon;
90 
92 
93  k=k+4;
94 
95  }
96 
97  }
98 
99 fclose(fp);
100 
101 return;
102 
103 }
104 void get_topo_pixels(int i, int j, float lat,float lon)
105 
106  {
107 
108  extern struct dval dval;
109  long r,s;
110  float conv=.0174;
111  extern struct topo *topo;
112 
113  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
114  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
115 
116  topo->coord[i][j].x=r;
117 
118  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
119  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
120 
121  topo->coord[i][j].y=s;
122 
123  return;
124 
125  }
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 
142 
143 
144 
145 
146 
struct top * topo
Definition: build_hrap.c:3
static int i
void get_topo_coord(char *fname)
Definition: get_topo_coord.c:3
void get_topo_pixels(int i, int j, float lat, float lon)
fclose(fp)
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
short int y
Definition: misc.h:498
short int x
Definition: misc.h:497
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:523
struct coord ** coord
Definition: misc.h:525
float delta_lat
Definition: misc.h:533
float max_lat
Definition: misc.h:529
int maxi
Definition: misc.h:527
float total_lat
Definition: misc.h:531
float delta_lon
Definition: misc.h:534
short int ** value
Definition: misc.h:526
float max_lon
Definition: misc.h:530
float total_lon
Definition: misc.h:532
int maxj
Definition: misc.h:528