- /* Get data moment header. */
- hdr_size = sizeof(data_hdr);
- memcpy(&data_hdr, &wsr88d_ray.data[data_ptr], hdr_size);
- data_ptr += hdr_size;
- if (little_endian()) wsr88d_swap_data_hdr(&data_hdr);
-
- vol_index = wsr88d_get_vol_index(data_hdr.dataname);
- if (vol_index < 0) {
- fprintf(stderr,"wsr88d_load_ray: Unknown dataname %s. isweep = %d, "
- "iray = %d.\n", data_hdr.dataname, isweep, iray);
- return;
- }
- switch (vol_index) {
- case DZ_INDEX: f = DZ_F; invf = DZ_INVF; break;
- case VR_INDEX: f = VR_F; invf = VR_INVF; break;
- case SW_INDEX: f = SW_F; invf = SW_INVF; break;
- case DR_INDEX: f = DR_F; invf = DR_INVF; break;
- case PH_INDEX: f = PH_F; invf = PH_INVF; break;
- case RH_INDEX: f = RH_F; invf = RH_INVF; break;
- }
+ nfields = wsr88d_ray->ray_hdr.data_block_count - nconstblocks;
+ field_offset = (int *) &wsr88d_ray->ray_hdr.radial_const;
+ do_swap = little_endian();
+ iray = wsr88d_ray->ray_hdr.azm_num - 1;
+
+ for (ifield=0; ifield < nfields; ifield++) {
+ field_offset++;
+ data_index = *field_offset;
+ /* Get data moment header. */
+ hdr_size = sizeof(data_hdr);
+ memcpy(&data_hdr, &wsr88d_ray->data[data_index], hdr_size);
+ if (do_swap) wsr88d_swap_data_hdr(&data_hdr);
+ data_index += hdr_size;
+
+ vol_index = wsr88d_get_vol_index(data_hdr.dataname);
+ if (vol_index < 0) {
+ fprintf(stderr,"wsr88d_load_ray_into_radar: Unknown dataname %s. "
+ "isweep = %d, iray = %d.\n", data_hdr.dataname, isweep,
+ iray);
+ return;
+ }
+ switch (vol_index) {
+ case DZ_INDEX: f = DZ_F; invf = DZ_INVF;
+ type_str = "Reflectivity"; break;
+ case VR_INDEX: f = VR_F; invf = VR_INVF;
+ type_str = "Velocity"; break;
+ case SW_INDEX: f = SW_F; invf = SW_INVF;
+ type_str = "Spectrum width"; break;
+ case DR_INDEX: f = DR_F; invf = DR_INVF;
+ type_str = "Diff. Reflectivity"; break;
+ case PH_INDEX: f = PH_F; invf = PH_INVF;
+ type_str = "Diff. Phase"; break;
+ case RH_INDEX: f = RH_F; invf = RH_INVF;
+ type_str = "Correlation Coef (Rho)"; break;
+ }