Mapper
get_topo_coord.c
Go to the documentation of this file.
1
#include "
prototypes.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[10000];
12
float
max_lat
,
max_lon
,
delta_lat
,
delta_lon
,
total_lat
,
total_lon
;
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
=
total_lon
/
delta_lon
+1;
40
maxj
=
total_lat
/
delta_lat
+1;
41
42
topo
->
maxi
=
maxi
;
43
topo
->
maxj
=
maxj
;
44
topo
->
max_lat
=
max_lat
;
45
topo
->
max_lon
=
max_lon
;
46
topo
->
total_lat
=
total_lat
;
47
topo
->
total_lon
=
total_lon
;
48
topo
->
delta_lat
=
delta_lat
;
49
topo
->
delta_lon
=
delta_lon
;
50
51
topo
->
coord
=(
struct
coord
**) calloc(maxi,
sizeof
(
struct
coord
*));
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
coord
*) calloc(maxj,
sizeof
(
struct
coord
));
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
for
(
j
=0;
j
<maxj;
j
++) {
77
78
fread(kbuf,
sizeof
(
char
),maxi*4,
fp
);
79
80
k
=0;
81
82
for
(
i
=0;
i
<maxi;
i
++) {
83
84
topo
->
value
[
i
][
j
]=atoi(&kbuf[
k
]);
85
86
lat
=
max_lat
-(float)
j
*delta_lat;
87
lon
=max_lon-(float)
i
*delta_lon;
88
89
get_topo_pixels
(
i
,
j
,
lat
,
lon
);
90
91
k
=
k
+4;
92
93
}
94
95
}
96
97
fclose
(
fp
);
98
99
return
;
100
101
}
102
void
get_topo_pixels
(
int
i
,
int
j
,
float
lat
,
float
lon
)
103
104
{
105
106
extern
struct
dval
dval
;
107
long
r,s;
108
float
conv=.0174;
109
extern
struct
topo
*
topo
;
110
111
r=
dval
.
a
* cos(
lat
*conv)/(1+sin(
lat
*conv))
112
* cos((
lon
-
dval
.
lo
-90)*conv) +
dval
.
xo
+.5;
113
114
topo
->
coord
[
i
][
j
].
x
=r;
115
116
s=
dval
.
a
* cos(
lat
*conv)/(1+sin(
lat
*conv))
117
* sin((
lon
-
dval
.
lo
-90)*conv) +
dval
.
yo
+ .5;
118
119
topo
->
coord
[
i
][
j
].
y
=s;
120
121
return
;
122
123
}
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
topo
struct top * topo
Definition:
build_hrap.c:3
i
static int i
Definition:
get_apps_defaults.c:110
get_topo_coord
void get_topo_coord(char *fname)
Definition:
get_topo_coord.c:3
get_topo_pixels
void get_topo_pixels(int i, int j, float lat, float lon)
Definition:
get_topo_coord.c:102
fclose
fclose(fp)
printf
printf("fbuf is %s\n", fbuf)
fp
fp
Definition:
make_NEXRAD.c:339
j
int j
Definition:
mapp2h.h:48
lat
double lat
Definition:
mapp2h.h:41
lon
double lon
Definition:
mapp2h.h:41
k
int k
Definition:
mapp2h.h:48
max_lat
double max_lat
Definition:
mapper.c:22
prototypes.h
fname
char fname[100]
Definition:
send_afos.c:6
coord
Definition:
misc.h:495
coord::y
short int y
Definition:
misc.h:498
coord::x
short int x
Definition:
misc.h:497
dval
Definition:
misc.h:470
dval::lo
double lo
Definition:
misc.h:475
dval::a
double a
Definition:
misc.h:472
dval::yo
double yo
Definition:
misc.h:474
dval::xo
double xo
Definition:
misc.h:473
topo
Definition:
misc.h:523
topo::coord
struct coord ** coord
Definition:
misc.h:525
topo::delta_lat
float delta_lat
Definition:
misc.h:533
topo::max_lat
float max_lat
Definition:
misc.h:529
topo::maxi
int maxi
Definition:
misc.h:527
topo::total_lat
float total_lat
Definition:
misc.h:531
topo::delta_lon
float delta_lon
Definition:
misc.h:534
topo::value
short int ** value
Definition:
misc.h:526
topo::max_lon
float max_lon
Definition:
misc.h:530
topo::total_lon
float total_lon
Definition:
misc.h:532
topo::maxj
int maxj
Definition:
misc.h:528
Generated by
1.9.1