/********************************************************************** * TDRP params for RadxMergeFields **********************************************************************/ //====================================================================== // // Merges fields from multiple CfRadial files into a single file. // //====================================================================== //====================================================================== // // DEBUGGING. // //====================================================================== ///////////// debug /////////////////////////////////// // // Debug option. // If set, debug messages will be printed appropriately. // // Type: enum // Options: // DEBUG_OFF // DEBUG_NORM // DEBUG_VERBOSE // DEBUG_EXTRA // debug = DEBUG_OFF; ///////////// instance //////////////////////////////// // // Program instance for process registration. // This application registers with procmap. This is the instance used // for registration. // Type: string // instance = "test"; //====================================================================== // // DATA INPUT. // //====================================================================== ///////////// mode //////////////////////////////////// // // Operating mode. // In REALTIME mode, the program waits for a new input file. In ARCHIVE // mode, it moves through the data between the start and end times set // on the command line. In FILELIST mode, it moves through the list of // file names specified on the command line. Paths (in FILELIST mode, at // least) MUST contain a day-directory below the data file -- // ./data_file.ext will not work as a file path. // // Type: enum // Options: // REALTIME // ARCHIVE // FILELIST // mode = REALTIME; ///////////// max_realtime_data_age_secs ////////////// // // Maximum age of realtime data (secs). // Only data less old than this will be used. // Type: int // max_realtime_data_age_secs = 300; //====================================================================== // // DATA LOCATIONS. // //====================================================================== ///////////// input_datasets ////////////////////////// // // Index of directories containing the data files. // The indices are used by output_fields to indicate where each field is // located. The lowest index is used as the primary input. The geometry // of non-primary files will be converted to match the primary files. // The file_match_time_offset_sec and file_match_time_tolerance_sec are // used to search for the best secondary file to merge. The offset is // ignored for the primary field (index 1). The ray tolerances are used // to match rays in the secondary file with those in the primary file. // // Type: struct // typedef struct { // int index; // string dir; // double file_match_time_offset_sec; // double file_match_time_tolerance_sec; // double ray_match_elevation_tolerance_deg; // double ray_match_azimuth_tolerance_deg; // double ray_match_time_tolerance_sec; // } // // 1D array - variable length. // input_datasets = { { index = 1, dir = "cfradial/sband", file_match_time_offset_sec = 0, file_match_time_tolerance_sec = 60, ray_match_elevation_tolerance_deg = 0.25, ray_match_azimuth_tolerance_deg = 0.1, ray_match_time_tolerance_sec = 60 } , { index = 2, dir = "cfradial/kband", file_match_time_offset_sec = 0, file_match_time_tolerance_sec = 60, ray_match_elevation_tolerance_deg = 0.25, ray_match_azimuth_tolerance_deg = 0.1, ray_match_time_tolerance_sec = 60 } , { index = 3, dir = "cfradial/partrain", file_match_time_offset_sec = 0, file_match_time_tolerance_sec = 60, ray_match_elevation_tolerance_deg = 0.25, ray_match_azimuth_tolerance_deg = 0.1, ray_match_time_tolerance_sec = 60 } , { index = 4, dir = "cfradial/clut", file_match_time_offset_sec = 0, file_match_time_tolerance_sec = 60, ray_match_elevation_tolerance_deg = 0.25, ray_match_azimuth_tolerance_deg = 0.1, ray_match_time_tolerance_sec = 60 } }; //====================================================================== // // SPECIFYING FIELDS TO COPY FROM EACH SOURCE. // //====================================================================== ///////////// output_fields /////////////////////////// // // Specs of fields to be copied from input to output. // input_index: indicates which input_dir to use. // input_field_name: name of field in input file. // output_field_name: name of field in output file. // encoding: output encoding for the field. If ASIS then the encoding is // not changed. // scaling: output scaling for the field. If SCALING_SPECIFIED, then the // scale and offset is used. // // Type: struct // typedef struct { // int input_index; // string input_field_name; // string output_field_name; // output_encoding_t output_encoding; // Options: // ENCODING_ASIS // ENCODING_FLOAT32 // ENCODING_INT32 // ENCODING_INT16 // ENCODING_INT08 // output_scaling_t output_scaling; // Options: // SCALING_DYNAMIC // SCALING_SPECIFIED // double output_scale; // double output_offset; // } // // 1D array - variable length. // output_fields = { { input_index = 1, input_field_name = "DBZ", output_field_name = "DBZ_S", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 1, input_field_name = "VEL", output_field_name = "VEL_S", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 1, input_field_name = "WIDTH", output_field_name = "WIDTH_S", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 2, input_field_name = "DBZ", output_field_name = "DBZ_K", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 2, input_field_name = "VEL", output_field_name = "VEL_K", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 2, input_field_name = "WIDTH", output_field_name = "WIDTH_K", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 3, input_field_name = "PID", output_field_name = "PID", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } , { input_index = 3, input_field_name = "PRECIP_RATE", output_field_name = "PRECIP_RATE", output_encoding = ENCODING_ASIS, output_scaling = SCALING_DYNAMIC, output_scale = 0.01, output_offset = 0 } }; //====================================================================== // // OPTIONAL FIXED ANGLE OR SWEEP NUMBER LIMITS. // // Fixed angles are elevation in PPI mode and azimuth in RHI mode. // //====================================================================== ///////////// set_fixed_angle_limits ////////////////// // // Option to set fixed angle limits. // Only use sweeps within the specified fixed angle limits. // Type: boolean // set_fixed_angle_limits = FALSE; ///////////// lower_fixed_angle_limit ///////////////// // // Lower fixed angle limit - degrees. // Type: double // lower_fixed_angle_limit = 0; ///////////// upper_fixed_angle_limit ///////////////// // // Upper fixed angle limit - degrees. // Type: double // upper_fixed_angle_limit = 90; ///////////// set_sweep_num_limits //////////////////// // // Option to set sweep number limits. // Only read sweeps within the specified sweep number limits. // Type: boolean // set_sweep_num_limits = FALSE; ///////////// lower_sweep_num ///////////////////////// // // Lower sweep number limit. // Type: int // lower_sweep_num = 0; ///////////// upper_sweep_num ///////////////////////// // // Upper sweep number limit. // Type: int // upper_sweep_num = 0; //====================================================================== // // OPTION TO CHECK FOR CONSTANT GEOMETRY. // //====================================================================== ///////////// check_constant_geometry ///////////////// // // Option to check that the ray geometry does not change. // If true, will only merge rays with the same geometry as the primary // volume. If false, secondary rays will be remapped to the primary ray // geometry. // Type: boolean // check_constant_geometry = FALSE; //====================================================================== // // SWEEP FILE AGGREGATION. // //====================================================================== ///////////// aggregate_sweep_files_on_read /////////// // // Option to aggregate sweep files into a volume on read. // If false, and the input data is in sweeps rather than volumes (e.g. // DORADE), the sweep files from a volume will be aggregated into a // volume. // Type: boolean // aggregate_sweep_files_on_read = TRUE; //====================================================================== // // OUTPUT FORMAT. // //====================================================================== ///////////// output_format /////////////////////////// // // Format for the output files. // // Type: enum // Options: // OUTPUT_FORMAT_CFRADIAL // OUTPUT_FORMAT_DORADE // OUTPUT_FORMAT_FORAY // OUTPUT_FORMAT_NEXRAD // OUTPUT_FORMAT_UF // OUTPUT_FORMAT_MDV_RADIAL // output_format = OUTPUT_FORMAT_CFRADIAL; ///////////// netcdf_style //////////////////////////// // // NetCDF style - if output_format is CFRADIAL. // netCDF classic format, netCDF 64-bit offset format, netCDF4 using // HDF5 format, netCDF4 using HDF5 format but only netCDF3 calls. // // Type: enum // Options: // CLASSIC // NC64BIT // NETCDF4 // NETCDF4_CLASSIC // netcdf_style = CLASSIC; //====================================================================== // // OUTPUT BYTE-SWAPPING and COMPRESSION. // //====================================================================== ///////////// output_native_byte_order //////////////// // // Option to leave data in native byte order. // If false, data will be byte-swapped as appropriate on output. // Type: boolean // output_native_byte_order = FALSE; ///////////// output_compressed /////////////////////// // // Option to compress data fields on output. // Applies to netCDF and Dorade. UF does not support compression. // Type: boolean // output_compressed = TRUE; //====================================================================== // // OUTPUT OPTIONS FOR CfRadial FILES. // //====================================================================== ///////////// output_force_ngates_vary //////////////// // // Option to force the use of ragged arrays for CfRadial files. // Only applies to CfRadial. If true, forces the use of ragged arrays // even if the number of gates for all rays is constant. // Type: boolean // output_force_ngates_vary = TRUE; ///////////// compression_level /////////////////////// // // Compression level for output, if compressed. // Applies to netCDF only. Dorade compression is run-length encoding, // and has not options.. // Type: int // compression_level = 5; //====================================================================== // // OUTPUT DIRECTORY AND FILE NAME. // //====================================================================== ///////////// output_dir ////////////////////////////// // // Output directory path. // Files will be written to this directory. // Type: string // output_dir = "./output"; ///////////// output_filename_mode //////////////////// // // Mode for computing output file name. // START_AND_END_TIMES: include both start and end times in file name. // START_TIME_ONLY: include only start time in file name. END_TIME_ONLY: // include only end time in file name. // // Type: enum // Options: // START_AND_END_TIMES // START_TIME_ONLY // END_TIME_ONLY // output_filename_mode = START_AND_END_TIMES; ///////////// append_day_dir_to_output_dir //////////// // // Add the day directory to the output directory. // Path will be output_dir/yyyymmdd/filename. // Type: boolean // append_day_dir_to_output_dir = TRUE; ///////////// append_year_dir_to_output_dir /////////// // // Add the year directory to the output directory. // Path will be output_dir/yyyy/yyyymmdd/filename. // Type: boolean // append_year_dir_to_output_dir = FALSE;