]> Pileus Git - ~andy/rsl/blob - examples/test_get_win.c
Initial import
[~andy/rsl] / examples / test_get_win.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <unistd.h>
4 #include <math.h>
5 #include <stdlib.h>
6
7 #include "rsl.h"
8
9 Sweep *load_sweep(Sweep *s)
10 {
11   int i, j;
12   Ray *ray;
13   
14   if (!s) {
15         printf("sweep is NULL-can't load\n");
16         return NULL;
17   }
18   
19   printf("loading sweep with %d rays\n", s->h.nrays);
20   for (i = 0; i < s->h.nrays; i++) {
21         ray = s->ray[i];
22         /* set range */
23         for (j = 0; j < ray->h.nbins; j++) {
24
25           ray->range[j] = ray->h.invf(40.0);
26         }
27   }
28
29   return s;
30 }
31
32
33 main (int argc, char **argv)
34 {
35
36   Radar *new_radar, *tmp_radar, *radar;
37   Sweep *s, *new_sweep;
38   float min_range, max_range, low_azim, hi_azim;
39   int j, i;
40   char type;
41   Volume *new_volume, *v;
42
43 /*
44   RSL_radar_verbose_on();
45 */
46   if (argc < 8) {
47         fprintf(stderr, "%s type(r|v|s) min_range max_range low_azim hi_azim ref_uf_file out_file\n", argv[0]);
48         exit(-1);
49   }
50
51   i = 1;
52   type = argv[i++][0];
53   min_range = (float) atoi(argv[i++]);
54   max_range = (float) atoi(argv[i++]);
55   low_azim = (float) atoi(argv[i++]);
56   hi_azim = (float) atoi(argv[i++]);
57
58   radar = RSL_uf_to_radar(argv[i++]);
59   if (!radar) exit(-1);
60
61   RSL_load_refl_color_table();
62
63   switch(type) {
64   case 'r': 
65   case 'v':
66         v = RSL_copy_volume(radar->v[DZ_INDEX]);
67         if (!v) exit(-1);
68         if ((v = RSL_clear_volume(v)) == NULL) exit(-1);
69
70         printf("volume's nsweeps - %d\n", v->h.nsweeps);
71         for (j = 0; j < v->h.nsweeps; j++) {
72           printf("loading sweep %d\n", j);
73           v->sweep[j] = load_sweep(v->sweep[j]);
74
75         }
76         /* test get*from radar */
77         if (type == 'r') {
78           if ((tmp_radar = RSL_new_radar(radar->h.nvolumes)) == NULL) exit (-1);
79           tmp_radar->h = radar->h;
80           tmp_radar->v[DZ_INDEX] = v;
81           new_radar = RSL_get_window_from_radar(tmp_radar,min_range, max_range, 
82                                                                                         low_azim, hi_azim); 
83           if (new_radar == NULL) {
84                 printf("null new radar\n");
85                 exit(-1);
86           }
87           RSL_volume_to_gif(new_radar->v[DZ_INDEX], argv[i], 500, 500, max_range);
88           RSL_free_radar(tmp_radar);
89           RSL_free_radar(new_radar);
90         }
91         else {
92           new_volume = RSL_get_window_from_volume(v, min_range, max_range, low_azim,
93                                                                                         hi_azim);
94           if (new_volume != NULL)
95                 RSL_volume_to_gif(new_volume, argv[i], 500, 500, max_range);
96 /*
97         RSL_bscan_volume(new_volume);
98 */
99           RSL_free_volume(new_volume);
100         }
101         break;
102   case 's':
103         s = RSL_copy_sweep(radar->v[DZ_INDEX]->sweep[0]);
104         s = RSL_clear_sweep(s);
105         s = load_sweep(s);
106         if (!s) {
107           printf("null sweep\n");
108           exit(-1);
109         }
110         new_sweep = RSL_get_window_from_sweep(s, min_range, max_range, 
111                                                                                         low_azim, hi_azim  );
112
113         RSL_sweep_to_gif(new_sweep, argv[i], 500, 500, max_range);
114 /*
115         RSL_bscan_sweep(new_sweep);
116 */
117         RSL_free_sweep(new_sweep);
118
119         break;
120   default:
121         break;
122   }
123   RSL_free_radar(radar);
124   printf("done\n");
125   exit (0);
126
127 }
128