/**********************************************************************/
/* Configure: Define USE_TWO_BYTE_PRECISION to have RSL store internal*/
/**********************************************************************/
/* Configure: Define USE_TWO_BYTE_PRECISION to have RSL store internal*/
/* so you shouldn't have to modify anything here. */
/**********************************************************************/
#ifndef COLORDIR
/* so you shouldn't have to modify anything here. */
/**********************************************************************/
#ifndef COLORDIR
/* File format types recognized by RSL. */
enum File_type {UNKNOWN, WSR88D_FILE, UF_FILE, LASSEN_FILE,
/* File format types recognized by RSL. */
enum File_type {UNKNOWN, WSR88D_FILE, UF_FILE, LASSEN_FILE,
- TOGA_FILE, NSIG_FILE_V1, NSIG_FILE_V2,
- RSL_FILE, MCGILL_FILE, HDF_FILE, RAPIC_FILE,
- RADTEC_FILE, EDGE_FILE, DORADE_FILE, RAINBOW_FILE};
+ TOGA_FILE, NSIG_FILE_V1, NSIG_FILE_V2,
+ RSL_FILE, MCGILL_FILE, HDF_FILE, RAPIC_FILE,
+ RADTEC_FILE, DORADE_FILE, RAINBOW_FILE};
/* Pick a BADVAL that is out of range. That is, the range
* of the conversion cannot include these reserved values.
/* Pick a BADVAL that is out of range. That is, the range
* of the conversion cannot include these reserved values.
- Volume_header h; /* Specific info for each elev. */
- /* Includes resolution: km/bin. */
- Sweep **sweep; /* sweep[0..nsweeps-1]. */
+ Volume_header h; /* Specific info for each elev. */
+ /* Includes resolution: km/bin. */
+ Sweep **sweep; /* sweep[0..nsweeps-1]. */
float (*f)(Slice_value x); /* Data conversion function. f(x). */
Slice_value (*invf)(float x); /* Data conversion function. invf(x). */
float (*f)(Slice_value x); /* Data conversion function. f(x). */
Slice_value (*invf)(float x); /* Data conversion function. invf(x). */
int hour, minute;
float sec; /* Second plus fractional part. */
char radar_type[50]; /* Type of radar. Use for QC-ing the data.
int hour, minute;
float sec; /* Second plus fractional part. */
char radar_type[50]; /* Type of radar. Use for QC-ing the data.
* "wsr88d", "lassen", "uf",
* "nsig", "mcgill",
* "wsr88d", "lassen", "uf",
* "nsig", "mcgill",
- * "kwajalein", "rsl", "toga",
+ * "kwajalein", "rsl", "toga",
*28 = VT_INDEX = Radial Velocity Combined (DORADE)
*29 = NP_INDEX = Normalized Coherent Power (DORADE)
*30 = HC_INDEX = HydroClass (Sigmet)
*28 = VT_INDEX = Radial Velocity Combined (DORADE)
*29 = NP_INDEX = Normalized Coherent Power (DORADE)
*30 = HC_INDEX = HydroClass (Sigmet)
- *31 = VC_INDEX = Radial Velocity Corrected (Sigmet)
- *32 = V2_INDEX = Radial Velocity for VCP 121 second Doppler cut.
- *33 = S2_INDEX = Spectrum Width for VCP 121 second Doppler cut.
- *34 = V3_INDEX = Radial Velocity for VCP 121 third Doppler cut.
- *35 = S3_INDEX = Spectrum Width for VCP 121 third Doppler cut.
+ *31 = VC_INDEX = Radial Velocity Corrected (Sigmet)
+ *32 = V2_INDEX = Radial Velocity for VCP 121 second Doppler cut.
+ *33 = S2_INDEX = Spectrum Width for VCP 121 second Doppler cut.
+ *34 = V3_INDEX = Radial Velocity for VCP 121 third Doppler cut.
+ *35 = S3_INDEX = Spectrum Width for VCP 121 third Doppler cut.
+ *42 = ET_INDEX = Total Power Enhanced (Sigmet)
+ *43 = EZ_INDEX = Clutter Corr. Reflectivity Enhanced (Sigmet)
Radar *RSL_africa_to_radar(char *infile);
Radar *RSL_anyformat_to_radar(char *infile, ...);
Radar *RSL_dorade_to_radar(char *infile);
Radar *RSL_africa_to_radar(char *infile);
Radar *RSL_anyformat_to_radar(char *infile, ...);
Radar *RSL_dorade_to_radar(char *infile);
Radar *RSL_fix_radar_header(Radar *radar);
Radar *RSL_get_window_from_radar(Radar *r, float min_range, float max_range,float low_azim, float hi_azim);
Radar *RSL_hdf_to_radar(char *infile);
Radar *RSL_fix_radar_header(Radar *radar);
Radar *RSL_get_window_from_radar(Radar *r, float min_range, float max_range,float low_azim, float hi_azim);
Radar *RSL_hdf_to_radar(char *infile);
int RSL_write_volume(Volume *v, FILE *fp);
unsigned char *RSL_rhi_sweep_to_cart(Sweep *s, int xdim, int ydim, float range,
int RSL_write_volume(Volume *v, FILE *fp);
unsigned char *RSL_rhi_sweep_to_cart(Sweep *s, int xdim, int ydim, float range,
unsigned char *RSL_sweep_to_cart(Sweep *s, int xdim, int ydim, float range);
void RSL_add_dbz_offset_to_ray(Ray *r, float dbz_offset);
unsigned char *RSL_sweep_to_cart(Sweep *s, int xdim, int ydim, float range);
void RSL_add_dbz_offset_to_ray(Ray *r, float dbz_offset);
void RSL_load_green_table(char *infile);
void RSL_load_blue_table(char *infile);
void RSL_print_histogram(Histogram *histogram, int min_range, int max_range,
void RSL_load_green_table(char *infile);
void RSL_load_blue_table(char *infile);
void RSL_print_histogram(Histogram *histogram, int min_range, int max_range,
void RSL_radar_to_uf(Radar *r, char *outfile);
void RSL_radar_to_uf_gzip(Radar *r, char *outfile);
void RSL_radar_verbose_off(void);
void RSL_radar_to_uf(Radar *r, char *outfile);
void RSL_radar_to_uf_gzip(Radar *r, char *outfile);
void RSL_radar_verbose_off(void);
void RSL_rebin_zdr_sweep(Sweep *s);
void RSL_rebin_zdr_volume(Volume *v);
void RSL_rhi_sweep_to_gif(Sweep *s, char *outfile, int xdim, int ydim, float range,
void RSL_rebin_zdr_sweep(Sweep *s);
void RSL_rebin_zdr_volume(Volume *v);
void RSL_rhi_sweep_to_gif(Sweep *s, char *outfile, int xdim, int ydim, float range,
void RSL_select_fields(char *field_type, ...);
void RSL_set_color_table(int icolor, char buffer[256], int ncolors);
void RSL_sweep_to_gif(Sweep *s, char *outfile, int xdim, int ydim, float range);
void RSL_select_fields(char *field_type, ...);
void RSL_set_color_table(int icolor, char buffer[256], int ncolors);
void RSL_sweep_to_gif(Sweep *s, char *outfile, int xdim, int ydim, float range);
void RSL_volume_to_pict(Volume *v, char *basename, int xdim, int ydim, float range);
void RSL_volume_to_ppm(Volume *v, char *basename, int xdim, int ydim, float range);
void RSL_write_gif(char *outfile, unsigned char *image,
void RSL_volume_to_pict(Volume *v, char *basename, int xdim, int ydim, float range);
void RSL_volume_to_ppm(Volume *v, char *basename, int xdim, int ydim, float range);
void RSL_write_gif(char *outfile, unsigned char *image,
void RSL_write_pgm(char *outfile, unsigned char *image,
int xdim, int ydim);
void RSL_write_pict(char *outfile, unsigned char *image,
void RSL_write_pgm(char *outfile, unsigned char *image,
int xdim, int ydim);
void RSL_write_pict(char *outfile, unsigned char *image,
void RSL_write_ppm(char *outfile, unsigned char *image,
int xdim, int ydim, char c_table[256][3]);
void RSL_write_ppm(char *outfile, unsigned char *image,
int xdim, int ydim, char c_table[256][3]);
Cappi *RSL_new_cappi(Sweep *sweep, float height);
Cappi *RSL_cappi_at_h(Volume *v, float height, float max_range);
Carpi *RSL_cappi_to_carpi(Cappi *cappi, float dx, float dy,
Cappi *RSL_new_cappi(Sweep *sweep, float height);
Cappi *RSL_cappi_at_h(Volume *v, float height, float max_range);
Carpi *RSL_cappi_to_carpi(Cappi *cappi, float dx, float dy,
- float lat, float lon,
- int nx, int ny, int radar_x, int radar_y);
+ float lat, float lon,
+ int nx, int ny, int radar_x, int radar_y);
Carpi *RSL_new_carpi(int nrows, int ncols);
Carpi *RSL_volume_to_carpi(Volume *v, float h, float grnd_r,
Carpi *RSL_new_carpi(int nrows, int ncols);
Carpi *RSL_volume_to_carpi(Volume *v, float h, float grnd_r,
- float dx, float dy, int nx, int ny,
- int radar_x, int radar_y, float lat, float lon);
+ float dx, float dy, int nx, int ny,
+ int radar_x, int radar_y, float lat, float lon);
Cube *RSL_new_cube(int ncarpi);
Cube *RSL_volume_to_cube(Volume *v, float dx, float dy, float dz,
Cube *RSL_new_cube(int ncarpi);
Cube *RSL_volume_to_cube(Volume *v, float dx, float dy, float dz,
- int nx, int ny, int nz, float grnd_r,
- int radar_x, int radar_y, int radar_z);
+ int nx, int ny, int nz, float grnd_r,
+ int radar_x, int radar_y, int radar_z);
Slice *RSL_new_slice(int nrows, int ncols);
Slice *RSL_get_slice_from_cube(Cube *cube, int x, int y, int z);
Slice *RSL_new_slice(int nrows, int ncols);
Slice *RSL_get_slice_from_cube(Cube *cube, int x, int y, int z);
Histogram *RSL_allocate_histogram(int low, int hi);
Histogram *RSL_get_histogram_from_ray(Ray *ray, Histogram *histogram,
Histogram *RSL_allocate_histogram(int low, int hi);
Histogram *RSL_get_histogram_from_ray(Ray *ray, Histogram *histogram,
- int low, int hi, int min_range,
- int max_range);
+ int low, int hi, int min_range,
+ int max_range);
- int low, int hi, int min_range,
- int max_range);
+ int low, int hi, int min_range,
+ int max_range);
- int low, int hi, int min_range,
- int max_range);
+ int low, int hi, int min_range,
+ int max_range);
*/
unsigned char *RSL_carpi_to_cart(Carpi *carpi, int xdim, int ydim,
*/
unsigned char *RSL_carpi_to_cart(Carpi *carpi, int xdim, int ydim,
void RSL_carpi_to_gif(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_gif(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_pict(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_pict(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_ppm(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_ppm(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_pgm(Carpi *carpi, char *outfile, int xdim, int ydim,
void RSL_carpi_to_pgm(Carpi *carpi, char *outfile, int xdim, int ydim,
/* Internal storage conversion functions. These may be any conversion and
* may be dynamically defined; based on the input data conversion.
/* Internal storage conversion functions. These may be any conversion and
* may be dynamically defined; based on the input data conversion.
"TI", "DX", "CH", "AH", "CV", "AV",
"SQ", "VS", "VL", "VG", "VT", "NP",
"HC", "VC", "V2", "S2", "V3", "S3",
"TI", "DX", "CH", "AH", "CV", "AV",
"SQ", "VS", "VL", "VG", "VT", "NP",
"HC", "VC", "V2", "S2", "V3", "S3",
- "CR", "CC", "PR", "SD", "ZZ", "RD"};
+ "CR", "CC", "PR", "SD", "ZZ", "RD",
+ "ET", "EZ"};
static float (*RSL_f_list[])(Range x) = {DZ_F, VR_F, SW_F, CZ_F, ZT_F, DR_F,
LR_F, ZD_F, DM_F, RH_F, PH_F, XZ_F,
static float (*RSL_f_list[])(Range x) = {DZ_F, VR_F, SW_F, CZ_F, ZT_F, DR_F,
LR_F, ZD_F, DM_F, RH_F, PH_F, XZ_F,
TI_F, DX_F, CH_F, AH_F, CV_F, AV_F,
SQ_F, VS_F, VL_F, VG_F, VT_F, NP_F,
HC_F, VC_F, VR_F, SW_F, VR_F, SW_F,
TI_F, DX_F, CH_F, AH_F, CV_F, AV_F,
SQ_F, VS_F, VL_F, VG_F, VT_F, NP_F,
HC_F, VC_F, VR_F, SW_F, VR_F, SW_F,
- DZ_F, CZ_F, PH_F, SD_F, DZ_F, DZ_F};
+ DZ_F, CZ_F, PH_F, SD_F, DZ_F, DZ_F,
+ ZT_F, DZ_F};
static Range (*RSL_invf_list[])(float x)
= {DZ_INVF, VR_INVF, SW_INVF, CZ_INVF, ZT_INVF, DR_INVF,
static Range (*RSL_invf_list[])(float x)
= {DZ_INVF, VR_INVF, SW_INVF, CZ_INVF, ZT_INVF, DR_INVF,
TI_INVF, DX_INVF, CH_INVF, AH_INVF, CV_INVF, AV_INVF,
SQ_INVF, VS_INVF, VL_INVF, VG_INVF, VT_INVF, NP_INVF,
HC_INVF, VC_INVF, VR_INVF, SW_INVF, VR_INVF, SW_INVF,
TI_INVF, DX_INVF, CH_INVF, AH_INVF, CV_INVF, AV_INVF,
SQ_INVF, VS_INVF, VL_INVF, VG_INVF, VT_INVF, NP_INVF,
HC_INVF, VC_INVF, VR_INVF, SW_INVF, VR_INVF, SW_INVF,
- DZ_INVF, CZ_INVF, PH_INVF, SD_INVF, DZ_INVF, DZ_INVF};
+ DZ_INVF, CZ_INVF, PH_INVF, SD_INVF, DZ_INVF, DZ_INVF,
+ ZT_INVF, DZ_INVF};
#endif
/* Secret routines that are quite useful and useful to developers. */
void radar_load_date_time(Radar *radar);
#endif
/* Secret routines that are quite useful and useful to developers. */
void radar_load_date_time(Radar *radar);
double angle_diff(float x, float y);
int rsl_query_field(char *c_field);
double angle_diff(float x, float y);
int rsl_query_field(char *c_field);
+/* Functions for controlling handling of WSR-88D split cuts. */
+void RSL_wsr88d_merge_split_cuts_on();
+void RSL_wsr88d_merge_split_cuts_off();
+void RSL_wsr88d_keep_short_refl();
+int wsr88d_merge_split_cuts_is_set();
+
+Radar *wsr88d_merge_split_cuts(Radar *radar);