13 fprintf(stderr,"Usage: %s [-v] [-f nexrad_id] [infile]\n", argv[0]);
17 process_args(int argc, char **argv,
18 char **in_file, int *qprint_ray,
24 while ((c = getopt(argc, argv, "vf:")) != -1)
26 case 'v': *qprint_ray = 1; break;
27 case 'f': *site = strdup(optarg); break;
28 case '?': usage(argv); break;
32 if ((argc-optind) == 0) {
34 } else if ((argc-optind) == 1) {
35 *in_file = strdup(argv[optind]);
41 void print_ray_values(Ray *ray)
46 printf("Ray = NULL\n");
50 for (i=0; i<ray->h.nbins; i+=10) {
51 for (j=i; j<(i+10)&&j<ray->h.nbins; j++)
52 printf("%10.2f", ray->h.f(ray->range[j]));
58 void print_header_for_ray(Ray *ray)
60 if (ray==NULL) {printf("NULL."); return;}
62 printf(" month %d\n", ray->h.month); /* Time for this ray; month (1-12). */
63 printf(" day %d\n", ray->h.day); /* Time for this ray; day (1-31). */
64 printf(" year %d\n", ray->h.year); /* Time for this ray; year (eg. 1993). */
65 printf(" hour %d\n", ray->h.hour); /* Date for this ray; hour (0-23). */
66 printf(" minute %d\n", ray->h.minute);/* Date for this ray; minute (0-59).*/
67 printf(" sec %f\n", ray->h.sec); /* Date for this ray; second + fraction of second. */
68 printf(" unam %f\n", ray->h.unam_rng); /* Unambiguous range. (KM). */
69 printf(" azimuth %f\n", ray->h.azimuth); /* Azimuth angle. (degrees). 0=North, 90=east, -90=west. */
70 printf(" ray_num %d\n", ray->h.ray_num); /* Ray no. within elevation scan. */
71 printf(" elev %f\n", ray->h.elev); /* Elevation angle. (degrees). */
72 printf("elev_num %d\n", ray->h.elev_num); /* Elevation no. within volume scan. */
74 printf(" range_bin1 %d\n", ray->h.range_bin1); /* Range to first gate.(meters) */
75 printf(" gate_size %d\n", ray->h.gate_size); /* Data gate size (meters)*/
77 printf(" vel_res %f\n", ray->h.vel_res); /* Doppler velocity resolution */
78 printf(" sweep_rate %f\n", ray->h.sweep_rate); /* Sweep rate. Full sweeps/min. */
80 printf(" prf %f\n", ray->h.prf); /* Pulse repitition frequency, in Hz. */
81 printf(" azim_rate %f\n", ray->h.azim_rate);
82 printf(" fix_angle %f\n", ray->h.fix_angle);
83 printf("pulse_count %f\n", ray->h.pulse_count);
84 printf("pulse_width %f\n", ray->h.pulse_width); /* Pulse width (micro-sec). */
85 printf(" beam_width %f\n", ray->h.beam_width); /* Beamwidth in degrees. */
86 printf(" frequency %f\n", ray->h.frequency); /* Bandwidth MHz. */
87 printf(" wavelength %f\n", ray->h.wavelength); /* Wavelength. Meters. */
88 printf(" nyq_vel %f\n", ray->h.nyq_vel); /* Nyquist velocity. m/s */
89 printf(" latitude %f\n", ray->h.lat); /* Latitude (decimal) */
90 printf(" longitude %f\n", ray->h.lon); /* Longitude (decimal) */
91 printf(" nbins %d\n", ray->h.nbins); /* Number of array elements for 'Range'. */
93 if (!qprint_ray) return;
95 print_ray_values(ray);
99 void print_header_for_sweep(Sweep *s)
104 for (i=0; i<s->h.nrays; i++) {
105 printf("ray[%d] ",i );
106 print_header_for_ray(s->ray[i]);
112 void print_header_for_volume(Volume *v)
116 for (i=0; i<v->h.nsweeps; i++) {
117 printf("-------- Sweep %d ---------\n", i);
118 print_header_for_sweep(v->sweep[i]);
123 main(int argc, char **argv)
131 qprint_ray = 0; /* Global flag for printing ray values. */
132 process_args(argc, argv, &infile, &qprint_ray, &site); /* malloc for in/outfile */
134 RSL_radar_verbose_on();
135 RSL_read_these_sweeps("all", NULL);
137 radar = RSL_anyformat_to_radar(infile, site);
139 printf("Radar date: %2.2d/%2.2d/%2.2d\n", radar->h.month, radar->h.day, radar->h.year);
140 printf("Radar time: %2.2d:%2.2d:%f\n", radar->h.hour, radar->h.minute, radar->h.sec);
142 printf("Radar file: %s\n", infile);
143 printf("Radar site: %c%c%c%c\n",
148 printf("Radar date: %2.2d/%2.2d/%2.2d\n", radar->h.month, radar->h.day, radar->h.year);
149 printf("Radar time: %2.2d:%2.2d:%f\n", radar->h.hour, radar->h.minute, radar->h.sec);
152 printf("Radar sec : %f\n", radar->h.sec); /* Second plus fractional part. */
153 printf("Radar radar_type: %s\n", radar->h.radar_type);
154 /* Type of radar. Use for QC-ing the data.
155 * Supported types are:
156 * "wsr88d", "lassen", "uf",
158 * "kwajalein", "rsl", "toga".
159 * Set by appropriate ingest routine.
161 printf("Radar nvolumes : %d\n", radar->h.nvolumes);
162 printf("Radar number : %d\n", radar->h.number);
163 printf("Radar name : %s\n", radar->h.name);
164 printf("Radar radar_name: %s\n", radar->h.radar_name);
165 printf("Radar city : %s\n", radar->h.city);
166 printf("Radar state : %s\n", radar->h.state);
167 printf("Radar latd: %d\n", radar->h.latd);
168 printf("Radar latm: %d\n", radar->h.latm);
169 printf("Radar lats: %d\n", radar->h.lats);
170 printf("Radar lond: %d\n", radar->h.lond);
171 printf("Radar lonm: %d\n", radar->h.lonm);
172 printf("Radar lons: %d\n", radar->h.lons);
173 printf("Radar height: %d\n", radar->h.height);
174 printf("Radar spulse: %d\n", radar->h.spulse);
175 printf("Radar lpulse: %d\n", radar->h.lpulse);
176 printf("Radar lpulse: %d\n", radar->h.lpulse);
179 for (i=0; i<radar->h.nvolumes; i++) {
182 printf("PRINT_HEADER_FOR_VOLUME, %d, ... nsweeps = %d\n", i, radar->v[i]->h.nsweeps);
183 print_header_for_volume(radar->v[i]);