Difference between revisions of "RadxConvert"
From Lrose Wiki
(Created page with "RadxConvert allows you to convert data stored in one format to a different format. = Supported Lidar and Radar Data Formats = {| !width="51%"| Format !width="19%"| Read Acce...") |
|||
Line 154: | Line 154: | ||
The next page of the documentation has all the options for RadxConvert automatically generated from the default parameter file. If you've had enough of format conversion, you can move on to the next step of the workflow and [[howtorun_hawkeye.html|display]] your data in CfRadial exchange format. | The next page of the documentation has all the options for RadxConvert automatically generated from the default parameter file. If you've had enough of format conversion, you can move on to the next step of the workflow and [[howtorun_hawkeye.html|display]] your data in CfRadial exchange format. | ||
+ | |||
+ | |||
+ | = RadxConvert Parameter Descriptions = | ||
+ | |||
+ | <blockquote>Converts files between CfRadial and other radial formats. | ||
+ | </blockquote> | ||
+ | == DEBUGGING == | ||
+ | |||
+ | === debug === | ||
+ | |||
+ | <blockquote>Debug option. | ||
+ | |||
+ | If set, debug messages will be printed appropriately. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * DEBUG_OFF | ||
+ | * DEBUG_NORM | ||
+ | * DEBUG_VERBOSE | ||
+ | * DEBUG_EXTRA | ||
+ | |||
+ | '''debug = DEBUG_OFF;''' | ||
+ | |||
+ | === instance === | ||
+ | |||
+ | <blockquote>Program instance for process registration. | ||
+ | |||
+ | ; This application registers with procmap. This is the instance used | ||
+ | : for registration. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''instance = "test";''' | ||
+ | |||
+ | == DATA INPUT == | ||
+ | |||
+ | === input_dir === | ||
+ | |||
+ | <blockquote>Input directory for searching for files. | ||
+ | |||
+ | Files will be searched for in this directory. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''input_dir = ".";''' | ||
+ | |||
+ | === mode === | ||
+ | |||
+ | <blockquote>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 ARCHIVE mode, at least) MUST contain a day-directory above the data file -- ./data_file.ext will not work as a file path, but ./yyyymmdd/data_file.ext will. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * REALTIME | ||
+ | * ARCHIVE | ||
+ | * FILELIST | ||
+ | |||
+ | '''mode = FILELIST;''' | ||
+ | |||
+ | === max_realtime_data_age_secs === | ||
+ | |||
+ | <blockquote>Maximum age of realtime data (secs). | ||
+ | |||
+ | Only data less old than this will be used. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''max_realtime_data_age_secs = 300;''' | ||
+ | |||
+ | === latest_data_info_avail === | ||
+ | |||
+ | <blockquote>Is _latest_data_info file available?. | ||
+ | |||
+ | ; If TRUE, will watch the latest_data_info file. If FALSE, will scan | ||
+ | : the input directory for new files. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''latest_data_info_avail = TRUE;''' | ||
+ | |||
+ | === search_recursively === | ||
+ | |||
+ | <blockquote>Option to recurse to subdirectories while looking for new files. | ||
+ | |||
+ | ; If TRUE, all subdirectories with ages less than max_dir_age will be | ||
+ | : searched. This may take considerable CPU, so be careful in its use. Only applies if latest_data_info_avail is FALSE. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''search_recursively = TRUE;''' | ||
+ | |||
+ | === max_recursion_depth === | ||
+ | |||
+ | <blockquote>Maximum depth for recursive directory scan. | ||
+ | |||
+ | ; Only applies search_recursively is TRUE. This is the max depth, below | ||
+ | : input_dir, to which the recursive directory search will be carried out. A depth of 0 will search the top-level directory only. A depth of 1 will search the level below the top directory, etc. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''max_recursion_depth = 5;''' | ||
+ | |||
+ | === wait_between_checks === | ||
+ | |||
+ | <blockquote>Sleep time between checking directory for input - secs. | ||
+ | |||
+ | ; If a directory is large and files do not arrive frequently, set this | ||
+ | : to a higher value to reduce the CPU load from checking the directory. Only applies if latest_data_info_avail is FALSE. | ||
+ | |||
+ | Minimum val: 1 | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''wait_between_checks = 2;''' | ||
+ | |||
+ | === file_quiescence === | ||
+ | |||
+ | <blockquote>File quiescence when checking for files - secs. | ||
+ | |||
+ | ; This allows you to make sure that a file coming from a remote machine | ||
+ | : is complete before reading it. Only applies if latest_data_info_avail is FALSE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''file_quiescence = 5;''' | ||
+ | |||
+ | === search_ext === | ||
+ | |||
+ | <blockquote>File name extension. | ||
+ | |||
+ | If set, only files with this extension will be processed. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''search_ext = "";''' | ||
+ | |||
+ | === gematronik_realtime_mode === | ||
+ | |||
+ | <blockquote>Set to TRUE if we are watching for Gematronik XML volumes. | ||
+ | |||
+ | ; Gematronik volumes (for a given time) are stored in multiple files, | ||
+ | : one for each field. Therefore, after the time on a volume changes and a new field file is detected, we need to wait a while to ensure that all of the files have had a chance to be writted to disk. You need to set gematronik_realtime_wait_secs to a value in excess of the time it takes for all of the files to be written. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''gematronik_realtime_mode = FALSE;''' | ||
+ | |||
+ | === gematronik_realtime_wait_secs === | ||
+ | |||
+ | <blockquote>; Number of seconds to wait, so that all field files can be written to | ||
+ | : disk before we start to read. | ||
+ | |||
+ | See 'gematronik_realtime_mode'. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''gematronik_realtime_wait_secs = 5;''' | ||
+ | |||
+ | == OPTIONAL FIXED ANGLE OR SWEEP NUMBER LIMITS == | ||
+ | |||
+ | <blockquote>Fixed angles are elevation in PPI mode and azimuth in RHI mode. | ||
+ | </blockquote> | ||
+ | === set_fixed_angle_limits === | ||
+ | |||
+ | <blockquote>Option to set fixed angle limits. | ||
+ | |||
+ | Only use sweeps within the specified fixed angle limits. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_fixed_angle_limits = FALSE;''' | ||
+ | |||
+ | === lower_fixed_angle_limit === | ||
+ | |||
+ | <blockquote>Lower fixed angle limit - degrees. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''lower_fixed_angle_limit = 0;''' | ||
+ | |||
+ | === upper_fixed_angle_limit === | ||
+ | |||
+ | <blockquote>Upper fixed angle limit - degrees. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''upper_fixed_angle_limit = 90;''' | ||
+ | |||
+ | === set_sweep_num_limits === | ||
+ | |||
+ | <blockquote>Option to set sweep number limits. | ||
+ | |||
+ | ; If 'apply_strict_angle_limits' is set, only read sweeps within the | ||
+ | : specified limits. If strict checking is false and no data lies within the limits, return the closest applicable sweep. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_sweep_num_limits = FALSE;''' | ||
+ | |||
+ | === lower_sweep_num === | ||
+ | |||
+ | <blockquote>Lower sweep number limit. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''lower_sweep_num = 0;''' | ||
+ | |||
+ | === upper_sweep_num === | ||
+ | |||
+ | <blockquote>Upper sweep number limit. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''upper_sweep_num = 0;''' | ||
+ | |||
+ | === apply_strict_angle_limits === | ||
+ | |||
+ | <blockquote>; Option to apply strict checking for angle or sweep number limits on | ||
+ | : read. | ||
+ | ; If true, an error will occur if the fixed angle limits or sweep num | ||
+ | : limits are outside the bounds of the data. If false, a read is guaranteed to return at least 1 sweep - if no sweep lies within the angle limits set, the nearest sweep will be returned. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_strict_angle_limits = TRUE;''' | ||
+ | |||
+ | == READ OPTIONS == | ||
+ | |||
+ | === read_set_radar_num === | ||
+ | |||
+ | <blockquote>Option to set the radar number. | ||
+ | |||
+ | See read_radar_num. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''read_set_radar_num = FALSE;''' | ||
+ | |||
+ | === read_radar_num === | ||
+ | |||
+ | <blockquote>Set the radar number for the data to be extracted. | ||
+ | |||
+ | ; Most files have data from a single radar, so this does not apply. The | ||
+ | : NOAA HRD files, however, have data from both the lower fuselage (LF, radar_num = 1) and tail (TA, radar_num = 2) radars. For HRD files, by default the TA radar will be used, unless the radar num is set to 1 for the LF radar. If this is set to 1, it will force the convert to assume a lower fuselage radar. If set to 2, it will assume a tail radar. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''read_radar_num = -1;''' | ||
+ | |||
+ | === aggregate_sweep_files_on_read === | ||
+ | |||
+ | <blockquote>Option to aggregate sweep files into a volume on read. | ||
+ | |||
+ | ; If true, 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 | ||
+ | </blockquote> | ||
+ | '''aggregate_sweep_files_on_read = FALSE;''' | ||
+ | |||
+ | === aggregate_all_files_on_read === | ||
+ | |||
+ | <blockquote>Option to aggregate all files in the file list on read. | ||
+ | |||
+ | ; If true, all of the files specified with the '-f' arg will be | ||
+ | : aggregated into a single volume as they are read in. This only applies to FILELIST mode. Overrides 'aggregate_sweep_files_on_read'. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''aggregate_all_files_on_read = FALSE;''' | ||
+ | |||
+ | === ignore_idle_scan_mode_on_read === | ||
+ | |||
+ | <blockquote>Option to ignore data taken in IDLE mode. | ||
+ | |||
+ | If true, on read will ignore files with an IDLE scan mode. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''ignore_idle_scan_mode_on_read = TRUE;''' | ||
+ | |||
+ | === remove_rays_with_all_data_missing === | ||
+ | |||
+ | <blockquote>Option to remove rays for which all data is missing. | ||
+ | |||
+ | ; If true, ray data will be checked. If all fields have missing data at | ||
+ | : all gates, the ray will be removed after reading. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remove_rays_with_all_data_missing = FALSE;''' | ||
+ | |||
+ | === clear_transition_flag_on_all_rays === | ||
+ | |||
+ | <blockquote>Option to clear the transition flag on all rays. | ||
+ | |||
+ | ; If true, for all rays on which the transition flag is set, this flag | ||
+ | : will be removed, so that all rays are considered to be NOT in transition. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''clear_transition_flag_on_all_rays = FALSE;''' | ||
+ | |||
+ | === remove_rays_with_antenna_transitions === | ||
+ | |||
+ | <blockquote>Option to remove rays taken while the antenna was in transition. | ||
+ | |||
+ | ; If true, rays with the transition flag set will not be used. The | ||
+ | : transiton flag is set when the antenna is in transtion between one sweep and the next. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remove_rays_with_antenna_transitions = FALSE;''' | ||
+ | |||
+ | === transition_nrays_margin === | ||
+ | |||
+ | <blockquote>Number of transition rays to include as a margin. | ||
+ | |||
+ | ; Sometimes the transition flag is turned on too early in a transition, | ||
+ | : on not turned off quickly enough after a transition. If you set this to a number greater than 0, that number of rays will be included at each end of the transition, i.e. the transition will effectively be shorter at each end by this number of rays. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''transition_nrays_margin = 0;''' | ||
+ | |||
+ | === trim_surveillance_sweeps_to_360deg === | ||
+ | |||
+ | <blockquote>; Option to trip surveillance sweeps so that they only cover 360 | ||
+ | : degrees. | ||
+ | ; Some sweeps will have rays which cover more than a 360-degree | ||
+ | : rotation. Often these include antenna transitions. If this is set to true, rays are trimmed off either end of the sweep to limit the coverage to 360 degrees. The median elevation angle is computed and the end ray which deviates from the median in elevation is trimmed first. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''trim_surveillance_sweeps_to_360deg = FALSE;''' | ||
+ | |||
+ | === set_max_range === | ||
+ | |||
+ | <blockquote>Option to set the max range for any ray. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_max_range = FALSE;''' | ||
+ | |||
+ | === max_range_km === | ||
+ | |||
+ | <blockquote>Specified maximim range - km. | ||
+ | |||
+ | Gates beyond this range are removed. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''max_range_km = 9999;''' | ||
+ | |||
+ | === preserve_sweeps === | ||
+ | |||
+ | <blockquote>Preserve sweeps just as they are in the file. | ||
+ | |||
+ | ; Applies generally to NEXRAD data. If true, the sweep details are | ||
+ | : preserved. If false, we consolidate sweeps from split cuts into a single sweep. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''preserve_sweeps = FALSE;''' | ||
+ | |||
+ | === remove_long_range_rays === | ||
+ | |||
+ | <blockquote>Option to remove long range rays. | ||
+ | |||
+ | ; Applies to NEXRAD data. If true, data from the non-Doppler long-range | ||
+ | : sweeps will be removed. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remove_long_range_rays = TRUE;''' | ||
+ | |||
+ | === remove_short_range_rays === | ||
+ | |||
+ | <blockquote>Option to remove short range rays. | ||
+ | |||
+ | ; Applies to NEXRAD data. If true, data from the Doppler short-range | ||
+ | : sweeps will be removed. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remove_short_range_rays = FALSE;''' | ||
+ | |||
+ | === set_ngates_constant === | ||
+ | |||
+ | <blockquote>Option to force the number of gates to be constant. | ||
+ | |||
+ | ; If TRUE, the number of gates on all rays will be set to the maximum, | ||
+ | : and gates added to shorter rays will be filled with missing values. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_ngates_constant = FALSE;''' | ||
+ | |||
+ | === remap_to_predominant_range_geometry === | ||
+ | |||
+ | <blockquote>Option to remap all rays to the predominant range geometry. | ||
+ | |||
+ | ; If TRUE, all rays will be remapped onto the same range geometry, | ||
+ | : determined as the most common geometry amongst all of the rays read in. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remap_to_predominant_range_geometry = FALSE;''' | ||
+ | |||
+ | === remap_to_finest_range_geometry === | ||
+ | |||
+ | <blockquote>Option to remap all rays to the finest range geometry. | ||
+ | |||
+ | ; If TRUE, all rays will be remapped onto the same range geometry, | ||
+ | : determined as that with the finest resolution in range - i.e. with the minimum gate spacing. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''remap_to_finest_range_geometry = FALSE;''' | ||
+ | |||
+ | == OPTION TO OVERRIDE GATE GEOMETRY == | ||
+ | |||
+ | === override_start_range === | ||
+ | |||
+ | <blockquote>Option to override the start range. | ||
+ | |||
+ | ; If true, the specified start range in this file will be used. If not, | ||
+ | : the start range in the data file will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_start_range = FALSE;''' | ||
+ | |||
+ | === start_range_km === | ||
+ | |||
+ | <blockquote>Specified start range (km). | ||
+ | |||
+ | See override_start_range. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''start_range_km = 0;''' | ||
+ | |||
+ | === override_gate_spacing === | ||
+ | |||
+ | <blockquote>Option to override the gate spacing. | ||
+ | |||
+ | ; If true, the specified gate spacing in this file will be used. If | ||
+ | : not, the gate spacing in the data file will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_gate_spacing = FALSE;''' | ||
+ | |||
+ | === gate_spacing_km === | ||
+ | |||
+ | <blockquote>Specified gate spacing (km). | ||
+ | |||
+ | See override_gate_spacing. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''gate_spacing_km = 0.0075;''' | ||
+ | |||
+ | == OPTION TO OVERRIDE INSTRUMENT AND/OR SITE NAME == | ||
+ | |||
+ | === override_instrument_name === | ||
+ | |||
+ | <blockquote>Option to override the instrument name. | ||
+ | |||
+ | If true, the name provided will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_instrument_name = FALSE;''' | ||
+ | |||
+ | === instrument_name === | ||
+ | |||
+ | <blockquote>Instrument name. | ||
+ | |||
+ | See override_instrument_name. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''instrument_name = "unknown";''' | ||
+ | |||
+ | === override_site_name === | ||
+ | |||
+ | <blockquote>Option to override the site name. | ||
+ | |||
+ | If true, the name provided will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_site_name = FALSE;''' | ||
+ | |||
+ | === site_name === | ||
+ | |||
+ | <blockquote>Site name. | ||
+ | |||
+ | See override_site_name. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''site_name = "unknown";''' | ||
+ | |||
+ | == OPTION TO OVERRIDE VOLUME NUMBER, OR AUTOINCREMENT == | ||
+ | |||
+ | === override_volume_number === | ||
+ | |||
+ | <blockquote>Option to override the volume number in the file. | ||
+ | |||
+ | Useful is there is no volume number in the data. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_volume_number = FALSE;''' | ||
+ | |||
+ | === starting_volume_number === | ||
+ | |||
+ | <blockquote>Volume number at startup. | ||
+ | |||
+ | Applies if 'override_volume_number' is true. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''starting_volume_number = 1;''' | ||
+ | |||
+ | === autoincrement_volume_number === | ||
+ | |||
+ | <blockquote>Option to automatically increment the volume number. | ||
+ | |||
+ | Starts at 'starting_volume_number' and increments from there. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''autoincrement_volume_number = FALSE;''' | ||
+ | |||
+ | == OPTION TO OVERRIDE RADAR LOCATION == | ||
+ | |||
+ | === override_radar_location === | ||
+ | |||
+ | <blockquote>Option to override the radar location. | ||
+ | |||
+ | ; If true, the location in this file will be used. If not, the location | ||
+ | : in the time series data will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_radar_location = FALSE;''' | ||
+ | |||
+ | === radar_latitude_deg === | ||
+ | |||
+ | <blockquote>Radar latitude (deg). | ||
+ | |||
+ | See override_radar_location. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''radar_latitude_deg = -999;''' | ||
+ | |||
+ | === radar_longitude_deg === | ||
+ | |||
+ | <blockquote>Radar longitude (deg). | ||
+ | |||
+ | See override_radar_location. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''radar_longitude_deg = -999;''' | ||
+ | |||
+ | === radar_altitude_meters === | ||
+ | |||
+ | <blockquote>Radar altitude (meters). | ||
+ | |||
+ | See override_radar_location. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''radar_altitude_meters = -999;''' | ||
+ | |||
+ | === change_radar_latitude_sign === | ||
+ | |||
+ | <blockquote>Option to negate the latitude. | ||
+ | |||
+ | ; Mainly useful for RAPIC files. In RAPIC, latitude is always positive, | ||
+ | : so mostly you need to set the latitiude to the negative value of itself. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''change_radar_latitude_sign = FALSE;''' | ||
+ | |||
+ | === apply_georeference_corrections === | ||
+ | |||
+ | <blockquote>Option to apply the georeference info for moving platforms. | ||
+ | |||
+ | ; For moving platforms, measured georeference information is sometimes | ||
+ | : available. If this is set to true, the georeference data is applied and appropriate corrections made. If possible, Earth-centric azimuth and elevation angles will be computed. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_georeference_corrections = FALSE;''' | ||
+ | |||
+ | == OPTION TO CORRECT TIME == | ||
+ | |||
+ | === apply_time_offset === | ||
+ | |||
+ | <blockquote>Option to apply an offset to the ray times. | ||
+ | |||
+ | ; If TRUE, this offset will be ADDED to the existing ray times. This is | ||
+ | : useful, for example, for correcting time errors, or converting from local time to UTC. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_time_offset = FALSE;''' | ||
+ | |||
+ | === time_offset_secs === | ||
+ | |||
+ | <blockquote>Time offset (secs). | ||
+ | |||
+ | ; See 'apply_time_offset'. This value will be ADDED to the existing ray | ||
+ | : times. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''time_offset_secs = 0;''' | ||
+ | |||
+ | == OPTION TO CORRECT ANTENNA ANGLES == | ||
+ | |||
+ | === apply_azimuth_offset === | ||
+ | |||
+ | <blockquote>Option to apply an offset to the azimuth values. | ||
+ | |||
+ | ; If TRUE, this offset will be ADDED to the measured azimuth angles. | ||
+ | : This is useful, for example, in the case of a mobile platform which is not set up oriented to true north. Suppose you have a truck (like the DOWs) which is oriented off true north. Then if you add in the truck HEADING relative to true north, the measured azimuth angles will be adjusted by the heading, to give azimuth relative to TRUE north. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_azimuth_offset = FALSE;''' | ||
+ | |||
+ | === azimuth_offset === | ||
+ | |||
+ | <blockquote>Azimuth offset (degrees). | ||
+ | |||
+ | ; See 'apply_azimuth_offset'. This value will be ADDED to the measured | ||
+ | : azimuths. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''azimuth_offset = 0;''' | ||
+ | |||
+ | === apply_elevation_offset === | ||
+ | |||
+ | <blockquote>Option to apply an offset to the elevation values. | ||
+ | |||
+ | ; If TRUE, this offset will be ADDED to the measured elevation angles. | ||
+ | : This is useful to correct for a systematic bias in measured elevation angles. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_elevation_offset = FALSE;''' | ||
+ | |||
+ | === elevation_offset === | ||
+ | |||
+ | <blockquote>Elevation offset (degrees). | ||
+ | |||
+ | ; See 'apply_elevation_offset'. This value will be ADDED to the | ||
+ | : measured elevations. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''elevation_offset = 0;''' | ||
+ | |||
+ | == OPTION TO OVERRIDE INSTRUMENT TYPE, PLATFORM TYPE AND PRIMARY AXIS == | ||
+ | |||
+ | <blockquote>This applies to read operations. | ||
+ | </blockquote> | ||
+ | === override_instrument_type === | ||
+ | |||
+ | <blockquote>Option to override instrument type on read. | ||
+ | |||
+ | ; If true, the file will be read in, the instrument type will be | ||
+ | : changed, and then any post-read processing will be performed. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_instrument_type = FALSE;''' | ||
+ | |||
+ | === instrument_type === | ||
+ | |||
+ | <blockquote>Specify the instrument type. See override_instrument_type. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * INSTRUMENT_RADAR | ||
+ | * INSTRUMENT_LIDAR | ||
+ | |||
+ | '''instrument_type = INSTRUMENT_RADAR;''' | ||
+ | |||
+ | === override_platform_type === | ||
+ | |||
+ | <blockquote><dl> | ||
+ | <dt>Option to override platform type on read. If true, the file will be</dt> | ||
+ | <dd><p>read in, the platform type will be changed, and then any post-read processing will be performed.</p> | ||
+ | <blockquote><p>PLATFORM_FIXED - radar is in a fixed location PLATFORM_VEHICLE - radar is mounted on a land vehicle PLATFORM_SHIP - radar is mounted on a ship PLATFORM_AIRCRAFT_FORE - forward-looking on aircraft PLATFORM_AIRCRAFT_AFT - backward-looking on aircraft PLATFORM_AIRCRAFT_TAIL - tail - e.g. ELDORA PLATFORM_AIRCRAFT_BELLY - belly radar on aircraft PLATFORM_AIRCRAFT_ROOF - roof radar on aircraft PLATFORM_AIRCRAFT_NOSE - radar in nose radome on aircraft PLATFORM_SATELLITE_ORBIT - orbiting satellite PLATFORM_SATELLITE_GEOSTAT - geostationary satellite.</p></blockquote></dd></dl> | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_platform_type = FALSE;''' | ||
+ | |||
+ | === platform_type === | ||
+ | |||
+ | <blockquote>Platform type. | ||
+ | |||
+ | See override_platform_type. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * PLATFORM_FIXED | ||
+ | * PLATFORM_VEHICLE | ||
+ | * PLATFORM_SHIP | ||
+ | * PLATFORM_AIRCRAFT_FORE | ||
+ | * PLATFORM_AIRCRAFT_AFT | ||
+ | * PLATFORM_AIRCRAFT_TAIL | ||
+ | * PLATFORM_AIRCRAFT_BELLY | ||
+ | * PLATFORM_AIRCRAFT_ROOF | ||
+ | * PLATFORM_AIRCRAFT_NOSE | ||
+ | * PLATFORM_SATELLITE_ORBIT | ||
+ | * PLATFORM_SATELLITE_GEOSTAT | ||
+ | |||
+ | '''platform_type = PLATFORM_FIXED;''' | ||
+ | |||
+ | === override_primary_axis === | ||
+ | |||
+ | <blockquote><dl> | ||
+ | <dt>Option to override primary axis on read. If true, the file will be</dt> | ||
+ | <dd><p>read in, the primary axis will be changed, and then any post-read processing will be performed.</p> | ||
+ | <blockquote><p>PRIMARY_AXIS_Z - vertical PRIMARY_AXIS_Y - longitudinal axis of platform PRIMARY_AXIS_X - lateral axis of platform PRIMARY_AXIS_Z_PRIME - inverted vertical PRIMARY_AXIS_Y_PRIME - ELDORA, HRD tail PRIMARY_AXIS_X_PRIME - translated lateral.</p></blockquote></dd></dl> | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_primary_axis = FALSE;''' | ||
+ | |||
+ | === primary_axis === | ||
+ | |||
+ | <blockquote>Platform type. | ||
+ | |||
+ | See override_primary_axis. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * PRIMARY_AXIS_Z | ||
+ | * PRIMARY_AXIS_Y | ||
+ | * PRIMARY_AXIS_X | ||
+ | * PRIMARY_AXIS_Z_PRIME | ||
+ | * PRIMARY_AXIS_Y_PRIME | ||
+ | * PRIMARY_AXIS_X_PRIME | ||
+ | |||
+ | '''primary_axis = PRIMARY_AXIS_Z;''' | ||
+ | |||
+ | == OPTION TO FORCE RELOAD OF SWEEP AND/OR VOLUME INFO, or RECOMPUTE == | ||
+ | |||
+ | <blockquote>SWEEP FIXED ANGLE. | ||
+ | </blockquote> | ||
+ | === reload_sweep_info_from_rays === | ||
+ | |||
+ | <blockquote>Option to force a reload of sweep info from rays. | ||
+ | |||
+ | ; If TRUE, this forces the app to call | ||
+ | : RadxVol::loadSweepInfoFromRays(), which reads through the rays and reloads the sweep info appropriately. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''reload_sweep_info_from_rays = FALSE;''' | ||
+ | |||
+ | === reload_volume_info_from_rays === | ||
+ | |||
+ | <blockquote>Option to force a reload of volume info from rays. | ||
+ | |||
+ | ; If TRUE, this forces the app to call | ||
+ | : RadxVol::loadVolumeInfoFromRays(), which reads through the rays and reloads the volume summary info appropriately. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''reload_volume_info_from_rays = FALSE;''' | ||
+ | |||
+ | === recompute_sweep_fixed_angles === | ||
+ | |||
+ | <blockquote>Option to recompute sweep fixed angles using the angles in the data. | ||
+ | |||
+ | ; Normally the sweep angles are set using the scan strategy angles - | ||
+ | : i.e., the theoretically perfect angles. This option allows you to recompute the sweep angles using the measured elevation angles (in PPI mode) or azimuth angles (in RHI mode). | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''recompute_sweep_fixed_angles = FALSE;''' | ||
+ | |||
+ | === optimize_surveillance_transitions === | ||
+ | |||
+ | <blockquote>Optimize the transitions in surveillance mode. | ||
+ | |||
+ | ; If true, we check the transitions between sweeps in surveillance | ||
+ | : mode, and move problem rays into the correct sweep. We also set the transition flag on/off based on the max elevation error speficied. See below. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''optimize_surveillance_transitions = FALSE;''' | ||
+ | |||
+ | === optimized_transitions_max_elev_error === | ||
+ | |||
+ | <blockquote>; Max elevation angle error when optimizing surveillance transitions | ||
+ | : (degrees). | ||
+ | ; If the difference between the fixed angle and measured angle exceeds | ||
+ | : this value, the transition flag will be set. If not, it will be cleared. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''optimized_transitions_max_elev_error = 0.25;''' | ||
+ | |||
+ | == OPTION TO ADJUST SWEEP LIMITS USING FIXED AND MEASURED ANGLES == | ||
+ | |||
+ | === adjust_sweep_limits_using_angles === | ||
+ | |||
+ | <blockquote>; Adjust the limits of sweeps, by comparing the measured angles to the | ||
+ | : fixed angles. | ||
+ | ; Sometimes the transitions from one fixed angle to another are not | ||
+ | : accurately described by the scan flags, and as a result rays are not correctly assigned to the sweeps. This option goes through the volume in ray order, and adjusts the way rays are associated with each sweep. It does this by comparing the actual angle with the fixed angle, and minimizes the angular difference. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''adjust_sweep_limits_using_angles = FALSE;''' | ||
+ | |||
+ | == OPTION TO SORT SWEEPS BY FIXED ANGLE == | ||
+ | |||
+ | === sort_sweeps_by_fixed_angle === | ||
+ | |||
+ | <blockquote>Sort the sweeps by fixed angle. | ||
+ | |||
+ | ; For some volumes, the sweep fixed angles may not be in increasing | ||
+ | : order. This option allows you to reorder the sweeps, and rays, into the correct order. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''sort_sweeps_by_fixed_angle = FALSE;''' | ||
+ | |||
+ | == OPTION TO OVERRIDE SELECTED GLOBAL ATTRIBUTES == | ||
+ | |||
+ | === version_override === | ||
+ | |||
+ | <blockquote>Option to override the version global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the version attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''version_override = "";''' | ||
+ | |||
+ | === title_override === | ||
+ | |||
+ | <blockquote>Option to override the title global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the title attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''title_override = "";''' | ||
+ | |||
+ | === institution_override === | ||
+ | |||
+ | <blockquote>Option to override the institution global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the institution attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''institution_override = "";''' | ||
+ | |||
+ | === references_override === | ||
+ | |||
+ | <blockquote>Option to override the references global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the references attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''references_override = "";''' | ||
+ | |||
+ | === source_override === | ||
+ | |||
+ | <blockquote>Option to override the source global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the source attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''source_override = "";''' | ||
+ | |||
+ | === history_override === | ||
+ | |||
+ | <blockquote>Option to override the history global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the history attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''history_override = "";''' | ||
+ | |||
+ | === comment_override === | ||
+ | |||
+ | <blockquote>Option to override the comment global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the comment attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''comment_override = "";''' | ||
+ | |||
+ | === author_override === | ||
+ | |||
+ | <blockquote>Option to override the author global attribute. | ||
+ | |||
+ | ; If empty, no effect. If not empty, this string is used to override | ||
+ | : the author attribute. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''author_override = "";''' | ||
+ | |||
+ | == OPTION TO ADD USER-SPECIFIED GLOBAL ATTRIBUTES to output file == | ||
+ | |||
+ | <blockquote>Only applies to CfRadial output format. | ||
+ | </blockquote> | ||
+ | === add_user_specified_global_attributes === | ||
+ | |||
+ | <blockquote>Add user-specified global attributes to output file. | ||
+ | |||
+ | Only applies to CfRadial files. See below for details. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''add_user_specified_global_attributes = FALSE;''' | ||
+ | |||
+ | === user_defined_global_attributes === | ||
+ | |||
+ | <blockquote>User-defined global attributes. | ||
+ | |||
+ | ; Applies if 'add_user_specified_global_attributes' is true. Array | ||
+ | : attributes are comma-delimited. | ||
+ | ; Type: struct | ||
+ | : ;; typedef struct { | ||
+ | ;: string name; attr_type_t attrType; | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * ATTR_STRING | ||
+ | * ATTR_INT | ||
+ | * ATTR_DOUBLE | ||
+ | * ATTR_INT_ARRAY | ||
+ | * ATTR_DOUBLE_ARRAY | ||
+ | * 1D array - variable length. | ||
+ | |||
+ | '''user_defined_global_attributes = {''' | ||
+ | |||
+ | '''name = "attr_string",''' | ||
+ | |||
+ | '''attrType = ATTR_STRING,''' | ||
+ | |||
+ | '''val = "user-attribute"''' | ||
+ | |||
+ | '''name = "attr_int",''' | ||
+ | |||
+ | '''attrType = ATTR_INT,''' | ||
+ | |||
+ | '''val = "99"''' | ||
+ | |||
+ | '''name = "attr_double",''' | ||
+ | |||
+ | '''attrType = ATTR_DOUBLE,''' | ||
+ | |||
+ | '''val = "99.99"''' | ||
+ | |||
+ | '''name = "attr_int_array",''' | ||
+ | |||
+ | '''attrType = ATTR_INT_ARRAY,''' | ||
+ | |||
+ | '''val = "1,2,3,4,5"''' | ||
+ | |||
+ | '''name = "attr_double_array",''' | ||
+ | |||
+ | '''attrType = ATTR_DOUBLE_ARRAY,''' | ||
+ | |||
+ | '''val = "1.1,2.2,3.3,4.4,5.5"''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | == OPTION TO SPECIFY FIELD NAMES AND OUTPUT ENCODING == | ||
+ | |||
+ | === set_output_fields === | ||
+ | |||
+ | <blockquote>Set the field names and output encoding. | ||
+ | |||
+ | If false, all fields will be used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_output_fields = FALSE;''' | ||
+ | |||
+ | === output_fields === | ||
+ | |||
+ | <blockquote>Output field details. | ||
+ | |||
+ | ; Set the details for the output fields. The output_field_name is the | ||
+ | : ndtCDF variable name. Set the long name to a more descriptive name. Set the standard name to the CF standard name for this field. If the long name or standard name are empty, the existing names are used. If SCALING_SPECIFIED, then the scale and offset is used. | ||
+ | ; Type: struct | ||
+ | : ;; typedef struct { | ||
+ | ;: string input_field_name; string output_field_name; string long_name; string standard_name; string output_units; output_encoding_t encoding; | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * OUTPUT_ENCODING_ASIS | ||
+ | * OUTPUT_ENCODING_FLOAT32 | ||
+ | * OUTPUT_ENCODING_INT32 | ||
+ | * OUTPUT_ENCODING_INT16 | ||
+ | * OUTPUT_ENCODING_INT08 | ||
+ | |||
+ | Options: | ||
+ | |||
+ | * SCALING_DYNAMIC | ||
+ | * SCALING_SPECIFIED | ||
+ | * 1D array - variable length. | ||
+ | |||
+ | '''output_fields = {''' | ||
+ | |||
+ | '''input_field_name = "DBZ",''' | ||
+ | |||
+ | '''output_field_name = "DBZ",''' | ||
+ | |||
+ | '''long_name = "reflectivity",''' | ||
+ | |||
+ | '''standard_name = "equivalent_reflectivity_factor",''' | ||
+ | |||
+ | '''output_units = "dBZ",''' | ||
+ | |||
+ | '''encoding = OUTPUT_ENCODING_ASIS,''' | ||
+ | |||
+ | '''output_scaling = SCALING_DYNAMIC,''' | ||
+ | |||
+ | '''output_scale = 0.01,''' | ||
+ | |||
+ | '''output_offset = 0''' | ||
+ | |||
+ | '''input_field_name = "VEL",''' | ||
+ | |||
+ | '''output_field_name = "VEL",''' | ||
+ | |||
+ | '''long_name = "radial_velocity",''' | ||
+ | |||
+ | '''standard_name = "radial_velocity_of_scatterers_away_from_instrument",''' | ||
+ | |||
+ | '''output_units = "m/s",''' | ||
+ | |||
+ | '''encoding = OUTPUT_ENCODING_ASIS,''' | ||
+ | |||
+ | '''output_scaling = SCALING_DYNAMIC,''' | ||
+ | |||
+ | '''output_scale = 0.01,''' | ||
+ | |||
+ | '''output_offset = 0''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | === write_other_fields_unchanged === | ||
+ | |||
+ | <blockquote>Option to write out the unspecified fields as they are. | ||
+ | |||
+ | ; If false, only the fields listed in output_fields will be written. If | ||
+ | : this is true, all other fields will be written unchanged. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''write_other_fields_unchanged = FALSE;''' | ||
+ | |||
+ | === exclude_specified_fields === | ||
+ | |||
+ | <blockquote>Option to exclude fields in the specified list. | ||
+ | |||
+ | ; If true, the specified fields will be excluded. This may be easier | ||
+ | : than specifiying all of the fields to be included, if that list is very long. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''exclude_specified_fields = FALSE;''' | ||
+ | |||
+ | === excluded_fields === | ||
+ | |||
+ | <blockquote>List of fields to be excluded. | ||
+ | |||
+ | List the names to be excluded. | ||
+ | |||
+ | Type: string 1D array - variable length. | ||
+ | </blockquote> | ||
+ | '''excluded_fields = {''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | == OPTION TO SPECIFY OUTPUT ENCODING FOR ALL FIELDS == | ||
+ | |||
+ | === set_output_encoding_for_all_fields === | ||
+ | |||
+ | <blockquote>Option to set output encoding for all fields. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''set_output_encoding_for_all_fields = FALSE;''' | ||
+ | |||
+ | === output_encoding === | ||
+ | |||
+ | <blockquote>Output encoding for all fields, if requested. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * OUTPUT_ENCODING_ASIS | ||
+ | * OUTPUT_ENCODING_FLOAT32 | ||
+ | * OUTPUT_ENCODING_INT32 | ||
+ | * OUTPUT_ENCODING_INT16 | ||
+ | * OUTPUT_ENCODING_INT08 | ||
+ | |||
+ | '''output_encoding = OUTPUT_ENCODING_ASIS;''' | ||
+ | |||
+ | == CENSORING == | ||
+ | |||
+ | <blockquote>; You have the option of censoring the data fields - i.e. setting the | ||
+ | : fields to missing values - at gates which meet certain criteria. If this is done correctly, it allows you to preserve the valid data and discard the noise, thereby improving compression. | ||
+ | </blockquote> | ||
+ | === apply_censoring === | ||
+ | |||
+ | <blockquote>Apply censoring based on field values and thresholds. | ||
+ | |||
+ | ; If TRUE, censoring will be performed. See 'censoring_fields' for | ||
+ | : details on how the censoring is applied. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_censoring = FALSE;''' | ||
+ | |||
+ | === censoring_fields === | ||
+ | |||
+ | <blockquote>Fields to be used for censoring. | ||
+ | |||
+ | ; Specify the fields to be used to determine whether a gate should be | ||
+ | : censored. The name refers to the input data field names. Valid field values lie in the range from min_valid_value to max_valid_value inclusive. If the value of a field at a gate lies within this range, it is considered valid. Each specified field is examined at each gate, and is flagged as valid if its value lies in the valid range. These field flags are then combined as follows: first, all of the LOGICAL_OR flags are combined, yielding a single combined_or flag which is true if any of the LOGICAL_OR fields is true. The combined_or flag is then combined with all of the LOGICAL_AND fields, yielding a true value only if the combined_or flag and the LOGICAL_AND fields are all true. If this final flag is true, then the data at the gate is regarded as valid and is retained. If the final flag is false, the data at the gate is censored, and all of the fields at the gate are set to missing. | ||
+ | ; Type: struct | ||
+ | : ;; typedef struct { | ||
+ | ;: string name; double min_valid_value; double max_valid_value; logical_t combination_method; | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * LOGICAL_AND | ||
+ | * LOGICAL_OR | ||
+ | * 1D array - variable length. | ||
+ | |||
+ | '''censoring_fields = {''' | ||
+ | |||
+ | '''name = "SNR",''' | ||
+ | |||
+ | '''min_valid_value = 0,''' | ||
+ | |||
+ | '''max_valid_value = 1000,''' | ||
+ | |||
+ | '''combination_method = LOGICAL_OR''' | ||
+ | |||
+ | '''name = "NCP",''' | ||
+ | |||
+ | '''min_valid_value = 0.15,''' | ||
+ | |||
+ | '''max_valid_value = 1000,''' | ||
+ | |||
+ | '''combination_method = LOGICAL_OR''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | === censoring_min_valid_run === | ||
+ | |||
+ | <blockquote>Minimum valid run of non-censored gates. | ||
+ | |||
+ | ; Only active if set to 2 or greater. A check is made to remove short | ||
+ | : runs of noise. Looking along the radial, we compute the number of contiguous gates (a 'run') with uncensored data. For the gates in this run to be accepted the length of the run must exceed censoring_min_valid_run. If the number of gates in a run is less than this, then all gates in the run are censored. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''censoring_min_valid_run = 1;''' | ||
+ | |||
+ | == OPTION TO APPLY LINEAR TRANSFORM TO SPECIFIED FIELDS == | ||
+ | |||
+ | <blockquote>; These transforms are fixed. The same transform is applied to all | ||
+ | : files. | ||
+ | </blockquote> | ||
+ | === apply_linear_transforms === | ||
+ | |||
+ | <blockquote>Apply linear transform to specified fields. | ||
+ | |||
+ | If true, we will apply a linear transform to selected fields. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_linear_transforms = FALSE;''' | ||
+ | |||
+ | === transform_fields === | ||
+ | |||
+ | <blockquote>transform field details. | ||
+ | |||
+ | <dl> | ||
+ | <dt>Set the field name, scale and offset to be applied to the selected</dt> | ||
+ | <dd><p>fields. NOTE: the field name is the INPUT field name.</p></dd> | ||
+ | <dt>Type: struct</dt> | ||
+ | <dd><dl> | ||
+ | <dt>typedef struct {</dt> | ||
+ | <dd><p>string input_field_name; double transform_scale; double transform_offset;</p></dd></dl> | ||
+ | |||
+ | <p>}</p></dd></dl> | ||
+ | |||
+ | 1D array - variable length. | ||
+ | </blockquote> | ||
+ | '''transform_fields = {''' | ||
+ | |||
+ | '''input_field_name = "DBZ",''' | ||
+ | |||
+ | '''transform_scale = 1,''' | ||
+ | |||
+ | '''transform_offset = 0''' | ||
+ | |||
+ | '''input_field_name = "VEL",''' | ||
+ | |||
+ | '''transform_scale = 1,''' | ||
+ | |||
+ | '''transform_offset = 0''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | == OPTION TO APPLY VARIABLE LINEAR TRANSFORM TO SPECIFIED FIELDS == | ||
+ | |||
+ | <blockquote>; These transforms vary from file to file, controlled by specific | ||
+ | : metadata. | ||
+ | </blockquote> | ||
+ | === apply_variable_transforms === | ||
+ | |||
+ | <blockquote>Apply linear transforms that vary based on specific metadata. | ||
+ | |||
+ | If true, we will apply variable linear transform to selected fields. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''apply_variable_transforms = FALSE;''' | ||
+ | |||
+ | === variable_transform_fields === | ||
+ | |||
+ | <blockquote>Details for variable transforms. | ||
+ | |||
+ | ; We based the field decision off the input_field_name. You need to | ||
+ | : pick the method of control: STATUS_XML_FIELD - based on the value associated with an XML tag in the status block; ELEVATION_DEG - based on the elevation in degrees; PULSE_WIDTH_US - based on the pulse with in microsecs. For STATUS_XML_FIELD Set the relevant status_xml_tag, which will be used to find the relevant value. The lookup table is a series of entries specifying the metadata_value and the scale and offset to be appied for that given metadata value. Each entry is enclosed in parentheses, and is of the form (metadata_value, scale, offset). The entries themselves are also are comma-separated. Interpolation is used for metadata values that lie between those specified in the lookup table. The enries in the lookup table should have metadata_values that are monotonically increasing. | ||
+ | ; Type: struct | ||
+ | : ;; typedef struct { | ||
+ | ;: string input_field_name; variable_transform_control_t control; | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * STATUS_XML_FIELD | ||
+ | * ELEVATION_DEG | ||
+ | * PULSE_WIDTH_US | ||
+ | * 1D array - variable length. | ||
+ | |||
+ | '''variable_transform_fields = {''' | ||
+ | |||
+ | '''input_field_name = "dBZ",''' | ||
+ | |||
+ | '''control = STATUS_XML_FIELD,''' | ||
+ | |||
+ | '''xml_tag = "gdrxanctxfreq",''' | ||
+ | |||
+ | '''lookup_table = "(57.0, 1.0, -0.7), (60.0, 1.0, -0.2), (64.0, 1.0, -0.3), (67.0, 1.0, -1.8), (68.0, 1.0, -1.2), (69.0, 1.0, -1.3)"''' | ||
+ | |||
+ | '''input_field_name = "dBZv",''' | ||
+ | |||
+ | '''control = STATUS_XML_FIELD,''' | ||
+ | |||
+ | '''xml_tag = "gdrxanctxfreq",''' | ||
+ | |||
+ | '''lookup_table = "(57.0, 1.0, 0.1), (58.0, 1.0, 0.3), (60.0, 1.0, -0.3), (67.0, 1.0, -2.3), (69.0, 1.0, -2.0)"''' | ||
+ | |||
+ | '''input_field_name = "ZDR",''' | ||
+ | |||
+ | '''control = STATUS_XML_FIELD,''' | ||
+ | |||
+ | '''xml_tag = "gdrxanctxfreq",''' | ||
+ | |||
+ | '''lookup_table = "(56.0, 1.0, -0.75), (58.0, 1.0, -0.75), (61.0, 1.0, 0.1), (63.5, 1.0, 0.2), (64.0, 1.0, 0.6), (69.0, 1.0, 0.6)"''' | ||
+ | |||
+ | '''};''' | ||
+ | |||
+ | == OUTPUT FORMAT == | ||
+ | |||
+ | === output_format === | ||
+ | |||
+ | <blockquote>Format for the output files. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * OUTPUT_FORMAT_CFRADIAL | ||
+ | * OUTPUT_FORMAT_CFRADIAL2 | ||
+ | * OUTPUT_FORMAT_NCXX | ||
+ | * OUTPUT_FORMAT_DORADE | ||
+ | * OUTPUT_FORMAT_FORAY | ||
+ | * OUTPUT_FORMAT_NEXRAD | ||
+ | * OUTPUT_FORMAT_UF | ||
+ | * OUTPUT_FORMAT_MDV_RADIAL | ||
+ | * OUTPUT_FORMAT_NSSL_MRD | ||
+ | * OUTPUT_FORMAT_ODIM_HDF5 | ||
+ | |||
+ | '''output_format = OUTPUT_FORMAT_CFRADIAL;''' | ||
+ | |||
+ | === netcdf_style === | ||
+ | |||
+ | <blockquote>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 | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * CLASSIC | ||
+ | * NC64BIT | ||
+ | * NETCDF4 | ||
+ | * NETCDF4_CLASSIC | ||
+ | |||
+ | '''netcdf_style = NETCDF4;''' | ||
+ | |||
+ | == OUTPUT BYTE-SWAPPING and COMPRESSION == | ||
+ | |||
+ | === output_native_byte_order === | ||
+ | |||
+ | <blockquote>Option to leave data in native byte order. | ||
+ | |||
+ | If false, data will be byte-swapped as appropriate on output. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''output_native_byte_order = FALSE;''' | ||
+ | |||
+ | === output_compressed === | ||
+ | |||
+ | <blockquote>Option to compress data fields on output. | ||
+ | |||
+ | Applies to netCDF and Dorade. UF does not support compression. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''output_compressed = TRUE;''' | ||
+ | |||
+ | == OUTPUT OPTIONS FOR CfRadial FILES == | ||
+ | |||
+ | === output_force_ngates_vary === | ||
+ | |||
+ | <blockquote>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 | ||
+ | </blockquote> | ||
+ | '''output_force_ngates_vary = FALSE;''' | ||
+ | |||
+ | === compression_level === | ||
+ | |||
+ | <blockquote>Compression level for output, if compressed. | ||
+ | |||
+ | ; Applies to netCDF only. Dorade compression is run-length encoding, | ||
+ | : and has not options.. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''compression_level = 4;''' | ||
+ | |||
+ | == OUTPUT DIRECTORY AND FILE NAME == | ||
+ | |||
+ | === output_dir === | ||
+ | |||
+ | <blockquote>Output directory path. | ||
+ | |||
+ | Files will be written to this directory. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''output_dir = "./output";''' | ||
+ | |||
+ | === output_filename_mode === | ||
+ | |||
+ | <blockquote>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. SPECIFY_FILE_NAME: file of this name will be written to output_dir. | ||
+ | |||
+ | Type: enum | ||
+ | </blockquote> | ||
+ | Options: | ||
+ | |||
+ | * START_AND_END_TIMES | ||
+ | * START_TIME_ONLY | ||
+ | * END_TIME_ONLY | ||
+ | * SPECIFY_FILE_NAME | ||
+ | |||
+ | '''output_filename_mode = START_AND_END_TIMES;''' | ||
+ | |||
+ | === output_filename_prefix === | ||
+ | |||
+ | <blockquote>Optional prefix for output filename. | ||
+ | |||
+ | ; If empty, the standard prefix will be used. Only applies to CfRadial | ||
+ | : files. Standard prefix is 'cfrad.'. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''output_filename_prefix = "";''' | ||
+ | |||
+ | === output_filename_suffix === | ||
+ | |||
+ | <blockquote>Optional suffix for output filename. | ||
+ | |||
+ | ; If not empty, the suffix will be inserted immediately prior to the | ||
+ | : extension. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''output_filename_suffix = "";''' | ||
+ | |||
+ | === include_instrument_name_in_file_name === | ||
+ | |||
+ | <blockquote>Option to include the instrument name in the file name. | ||
+ | |||
+ | ; Default is true. Only applies to CfRadial files. If true, the | ||
+ | : instrument name will be included just before the volume number in the output file name. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''include_instrument_name_in_file_name = TRUE;''' | ||
+ | |||
+ | === include_site_name_in_file_name === | ||
+ | |||
+ | <blockquote>Option to include the site name in the file name. | ||
+ | |||
+ | ; Only applies to CfRadial files. If true, the site name will be | ||
+ | : included just before the volume number in the output file name. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''include_site_name_in_file_name = FALSE;''' | ||
+ | |||
+ | === include_subsecs_in_file_name === | ||
+ | |||
+ | <blockquote>Option to include sub-seconds in date-time part of file name. | ||
+ | |||
+ | ; Default is true. Only applies to CfRadial files. If true, the | ||
+ | : millisecs of the start and end time will be included in the file name. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''include_subsecs_in_file_name = TRUE;''' | ||
+ | |||
+ | === include_scan_type_in_file_name === | ||
+ | |||
+ | <blockquote>Option to include the scan type in the file name. | ||
+ | |||
+ | ; Default is true. Only applies to CfRadial files. If true, the scan | ||
+ | : type (SUR, SEC, RHI, VER etc) will be included in the file name. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''include_scan_type_in_file_name = TRUE;''' | ||
+ | |||
+ | === include_vol_num_in_file_name === | ||
+ | |||
+ | <blockquote>Option to include the volume number in the file name. | ||
+ | |||
+ | ; Default is false. Only applies to CfRadial files. If true, the volume | ||
+ | : number is included in the file name, preceded by '_v'. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''include_vol_num_in_file_name = FALSE;''' | ||
+ | |||
+ | === use_hyphen_in_file_name_datetime_part === | ||
+ | |||
+ | <blockquote>Option to use a hyphen between date and time in filename. | ||
+ | |||
+ | ; Default is false. Only applies to CfRadial files. Normally an | ||
+ | : underscore is used. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''use_hyphen_in_file_name_datetime_part = FALSE;''' | ||
+ | |||
+ | === output_filename === | ||
+ | |||
+ | <blockquote>Name of output file. | ||
+ | |||
+ | ; Applies only if output_filename_mode is SPECIFY_FILE_NAME. File of | ||
+ | : this name will be written to output_dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''output_filename = "cfradial.test.nc";''' | ||
+ | |||
+ | === append_day_dir_to_output_dir === | ||
+ | |||
+ | <blockquote>Add the day directory to the output directory. | ||
+ | |||
+ | Path will be output_dir/yyyymmdd/filename. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''append_day_dir_to_output_dir = TRUE;''' | ||
+ | |||
+ | === append_year_dir_to_output_dir === | ||
+ | |||
+ | <blockquote>Add the year directory to the output directory. | ||
+ | |||
+ | Path will be output_dir/yyyy/yyyymmdd/filename. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''append_year_dir_to_output_dir = FALSE;''' | ||
+ | |||
+ | === write_individual_sweeps === | ||
+ | |||
+ | <blockquote>Option to write out individual sweeps if appropriate. | ||
+ | |||
+ | ; If true, the volume is split into individual sweeps for writing. | ||
+ | : Applies to CfRadial format. This is always true for DORADE format files. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''write_individual_sweeps = FALSE;''' | ||
+ | |||
+ | === write_latest_data_info === | ||
+ | |||
+ | <blockquote>Option to write out _latest_data_info files. | ||
+ | |||
+ | ; If true, the _latest_data_info files will be written after the | ||
+ | : converted file is written. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''write_latest_data_info = FALSE;''' | ||
+ | |||
+ | === write_using_proposed_standard_name_attr === | ||
+ | |||
+ | <blockquote>; Option to write CfRadial files using 'proposed_standard_name' | ||
+ | : attribute. | ||
+ | ; Default is false. Only applies to CfRadial files. Normally we use the | ||
+ | : 'standard_name' attribute. However, some organizations reject these as valid files since the standard names are not yet accepted. Using proposed_standard_name' instead avoids this issue. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''write_using_proposed_standard_name_attr = FALSE;''' | ||
+ | |||
+ | == SEPARATING VOLUMES BY TYPE == | ||
+ | |||
+ | === separate_output_dirs_by_scan_type === | ||
+ | |||
+ | <blockquote>Option to separate the files based on scan type. | ||
+ | |||
+ | ; Sometimes a scan strategy will switch between surveillance scans, | ||
+ | : sector scans, rhi scans, vertically-pointing scans and sun scans. If true, the files will be separated into subdirectories based on scan type. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''separate_output_dirs_by_scan_type = FALSE;''' | ||
+ | |||
+ | === surveillance_subdir === | ||
+ | |||
+ | <blockquote>The directory path for surveillance scan files. | ||
+ | |||
+ | ; See 'separate_by_scan_type'. If the scan mode is surveillance, this | ||
+ | : subdirectory will be created under the ouput dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''surveillance_subdir = "sur";''' | ||
+ | |||
+ | === sector_subdir === | ||
+ | |||
+ | <blockquote>The directory path for sector scan files. | ||
+ | |||
+ | ; See 'separate_by_scan_type'. If the scan mode is sector, this | ||
+ | : subdirectory will be created under the ouput dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''sector_subdir = "sec";''' | ||
+ | |||
+ | === rhi_subdir === | ||
+ | |||
+ | <blockquote>The directory path for rhi files. | ||
+ | |||
+ | ; See 'separate_by_scan_type'. If the scan mode is rhi, this | ||
+ | : subdirectory will be created under the ouput dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''rhi_subdir = "rhi";''' | ||
+ | |||
+ | === vert_subdir === | ||
+ | |||
+ | <blockquote>The directory path for vert scan files. | ||
+ | |||
+ | ; See 'separate_by_scan_type'. If the scan mode is vert, this | ||
+ | : subdirectory will be created under the ouput dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''vert_subdir = "vert";''' | ||
+ | |||
+ | === sun_subdir === | ||
+ | |||
+ | <blockquote>The directory path for sun scan files. | ||
+ | |||
+ | ; See 'separate_by_scan_type'. If the scan mode is sun, this | ||
+ | : subdirectory will be created under the ouput dir. | ||
+ | |||
+ | Type: string | ||
+ | </blockquote> | ||
+ | '''sun_subdir = "sun";''' | ||
+ | |||
+ | == OPTION TO OVERRIDE MISSING VALUES == | ||
+ | |||
+ | <blockquote>; Missing values are applicable to both metadata and field data. The | ||
+ | : default values should be satisfactory for most purposes. However, you can choose to override these if you are careful with the selected values. | ||
+ | ; The default values for metadata are: | ||
+ | : missingMetaDouble = -9999.0 missingMetaFloat = -9999.0 missingMetaInt = -9999 missingMetaChar = -128 | ||
+ | ; The default values for field data are: | ||
+ | : missingFl64 = -9.0e33 missingFl32 = -9.0e33 missingSi32 = -2147483647 missingSi16 = -32768 missingSi08 = -128. | ||
+ | </blockquote> | ||
+ | === override_missing_metadata_values === | ||
+ | |||
+ | <blockquote>Option to override the missing values for meta-data. | ||
+ | |||
+ | See following parameter options. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_missing_metadata_values = FALSE;''' | ||
+ | |||
+ | === missing_metadata_double === | ||
+ | |||
+ | <blockquote>Missing value for metadata of type double. | ||
+ | |||
+ | Only applies if override_missing_metadata_values is TRUE. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''missing_metadata_double = -9999;''' | ||
+ | |||
+ | === missing_metadata_float === | ||
+ | |||
+ | <blockquote>Missing value for metadata of type float. | ||
+ | |||
+ | Only applies if override_missing_metadata_values is TRUE. | ||
+ | |||
+ | Type: float | ||
+ | </blockquote> | ||
+ | '''missing_metadata_float = -9999;''' | ||
+ | |||
+ | === missing_metadata_int === | ||
+ | |||
+ | <blockquote>Missing value for metadata of type int. | ||
+ | |||
+ | Only applies if override_missing_metadata_values is TRUE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''missing_metadata_int = -9999;''' | ||
+ | |||
+ | === missing_metadata_char === | ||
+ | |||
+ | <blockquote>Missing value for metadata of type char. | ||
+ | |||
+ | Only applies if override_missing_metadata_values is TRUE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''missing_metadata_char = -128;''' | ||
+ | |||
+ | === override_missing_field_values === | ||
+ | |||
+ | <blockquote>Option to override the missing values for field data. | ||
+ | |||
+ | See following parameter options. | ||
+ | |||
+ | Type: boolean | ||
+ | </blockquote> | ||
+ | '''override_missing_field_values = FALSE;''' | ||
+ | |||
+ | === missing_field_fl64 === | ||
+ | |||
+ | <blockquote>Missing value for field data of type 64-bit float. | ||
+ | |||
+ | Only applies if override_missing_field_values is TRUE. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''missing_field_fl64 = -9e+33;''' | ||
+ | |||
+ | === missing_field_fl32 === | ||
+ | |||
+ | <blockquote>Missing value for field data of type 32-bit float. | ||
+ | |||
+ | Only applies if override_missing_field_values is TRUE. | ||
+ | |||
+ | Type: double | ||
+ | </blockquote> | ||
+ | '''missing_field_fl32 = -9e+33;''' | ||
+ | |||
+ | === missing_field_si32 === | ||
+ | |||
+ | <blockquote>Missing value for field data of type 32-bit integer. | ||
+ | |||
+ | Only applies if override_missing_field_values is TRUE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''missing_field_si32 = -2147483647;''' | ||
+ | |||
+ | === missing_field_si16 === | ||
+ | |||
+ | <blockquote>Missing value for field data of type 16-bit integer. | ||
+ | |||
+ | Only applies if override_missing_field_values is TRUE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''missing_field_si16 = -232768;''' | ||
+ | |||
+ | === missing_field_si08 === | ||
+ | |||
+ | <blockquote>Missing value for field data of type 8-bit integer. | ||
+ | |||
+ | Only applies if override_missing_field_values is TRUE. | ||
+ | |||
+ | Type: int | ||
+ | </blockquote> | ||
+ | '''missing_field_si08 = -128;''' |
Revision as of 19:11, 16 July 2019
RadxConvert allows you to convert data stored in one format to a different format.
Contents
- 1 Supported Lidar and Radar Data Formats
- 2 Running RadxConvert
- 3 RadxConvert Parameter Descriptions
- 3.1 DEBUGGING
- 3.2 DATA INPUT
- 3.3 OPTIONAL FIXED ANGLE OR SWEEP NUMBER LIMITS
- 3.4 READ OPTIONS
- 3.4.1 read_set_radar_num
- 3.4.2 read_radar_num
- 3.4.3 aggregate_sweep_files_on_read
- 3.4.4 aggregate_all_files_on_read
- 3.4.5 ignore_idle_scan_mode_on_read
- 3.4.6 remove_rays_with_all_data_missing
- 3.4.7 clear_transition_flag_on_all_rays
- 3.4.8 remove_rays_with_antenna_transitions
- 3.4.9 transition_nrays_margin
- 3.4.10 trim_surveillance_sweeps_to_360deg
- 3.4.11 set_max_range
- 3.4.12 max_range_km
- 3.4.13 preserve_sweeps
- 3.4.14 remove_long_range_rays
- 3.4.15 remove_short_range_rays
- 3.4.16 set_ngates_constant
- 3.4.17 remap_to_predominant_range_geometry
- 3.4.18 remap_to_finest_range_geometry
- 3.5 OPTION TO OVERRIDE GATE GEOMETRY
- 3.6 OPTION TO OVERRIDE INSTRUMENT AND/OR SITE NAME
- 3.7 OPTION TO OVERRIDE VOLUME NUMBER, OR AUTOINCREMENT
- 3.8 OPTION TO OVERRIDE RADAR LOCATION
- 3.9 OPTION TO CORRECT TIME
- 3.10 OPTION TO CORRECT ANTENNA ANGLES
- 3.11 OPTION TO OVERRIDE INSTRUMENT TYPE, PLATFORM TYPE AND PRIMARY AXIS
- 3.12 OPTION TO FORCE RELOAD OF SWEEP AND/OR VOLUME INFO, or RECOMPUTE
- 3.13 OPTION TO ADJUST SWEEP LIMITS USING FIXED AND MEASURED ANGLES
- 3.14 OPTION TO SORT SWEEPS BY FIXED ANGLE
- 3.15 OPTION TO OVERRIDE SELECTED GLOBAL ATTRIBUTES
- 3.16 OPTION TO ADD USER-SPECIFIED GLOBAL ATTRIBUTES to output file
- 3.17 OPTION TO SPECIFY FIELD NAMES AND OUTPUT ENCODING
- 3.18 OPTION TO SPECIFY OUTPUT ENCODING FOR ALL FIELDS
- 3.19 CENSORING
- 3.20 OPTION TO APPLY LINEAR TRANSFORM TO SPECIFIED FIELDS
- 3.21 OPTION TO APPLY VARIABLE LINEAR TRANSFORM TO SPECIFIED FIELDS
- 3.22 OUTPUT FORMAT
- 3.23 OUTPUT BYTE-SWAPPING and COMPRESSION
- 3.24 OUTPUT OPTIONS FOR CfRadial FILES
- 3.25 OUTPUT DIRECTORY AND FILE NAME
- 3.25.1 output_dir
- 3.25.2 output_filename_mode
- 3.25.3 output_filename_prefix
- 3.25.4 output_filename_suffix
- 3.25.5 include_instrument_name_in_file_name
- 3.25.6 include_site_name_in_file_name
- 3.25.7 include_subsecs_in_file_name
- 3.25.8 include_scan_type_in_file_name
- 3.25.9 include_vol_num_in_file_name
- 3.25.10 use_hyphen_in_file_name_datetime_part
- 3.25.11 output_filename
- 3.25.12 append_day_dir_to_output_dir
- 3.25.13 append_year_dir_to_output_dir
- 3.25.14 write_individual_sweeps
- 3.25.15 write_latest_data_info
- 3.25.16 write_using_proposed_standard_name_attr
- 3.26 SEPARATING VOLUMES BY TYPE
- 3.27 OPTION TO OVERRIDE MISSING VALUES
- 3.27.1 override_missing_metadata_values
- 3.27.2 missing_metadata_double
- 3.27.3 missing_metadata_float
- 3.27.4 missing_metadata_int
- 3.27.5 missing_metadata_char
- 3.27.6 override_missing_field_values
- 3.27.7 missing_field_fl64
- 3.27.8 missing_field_fl32
- 3.27.9 missing_field_si32
- 3.27.10 missing_field_si16
- 3.27.11 missing_field_si08
Supported Lidar and Radar Data Formats
Format | Read Access | Write Access |
---|---|---|
CfRadial-1 | Yes | Yes |
CfRadial-2 (WMO) (in development) | Yes | Yes |
BUFR (in development) | Yes(partial) | No |
CFARR | Yes | No |
DORADE - NCAR/EOL | Yes | Yes |
D23R | Yes | No |
DOE ARM netCDF (precedes CfRadial) | Yes | No |
EEC-Edge | Yes(partial) | No |
Foray-1 netCDF - NCAR/EOL | Yes | Yes |
GAMIC | Yes | No |
Gematronik Rainbow | Yes | No |
HSRL (Lidar) | Yes | No |
HRD (Hurricane Research Division) | Yes | No |
Leosphere (LIDAR ASCII format) | Yes | No |
MDV radial - NCAR/RAL | Yes | Yes |
NEXRAD Level 2 | Yes | Yes |
NEXRAD Level 1, 3 | Yes | No |
NOXP | Yes | No |
NSSL-MRD | Yes | No |
ODIM-H5 (in development) | Yes | Yes |
RAPIC - BOM Australia | Yes | No |
SIGMET - raw format (Vaisala) | Yes | No |
TDWR | Yes | No |
TWOLF | Yes | No |
UF - Universal Format | Yes | Yes |
Running RadxConvert
RadxConvert uses the Radx engine as a backend to convert between many different data formats. Since RadxPrint, RadxConvert, and Radx2Grid all have the same backend engine, they work seamlessly together. Many researchers spend a lot of time writing code just to get their data into a format they can use with their analysis software, and RadxConvert solves that problem for many common lidar and radar data formats. At a basic level, RadxConvert can do a simple conversion from one format to another, but it has a lot of flexibility and power options for advanced use cases. To see all command line options for RadxConvert, type the following command into a terminal:
lrose -- RadxConvert -h
Important Note: If you just type 'RadxConvert' on the command line without any options it goes into 'REALTIME' mode and waits for streaming data to come in. For most use cases with data files stored locally the preferred mode of operation is to use command line arguments or a parameter file. This can be a little confusing for first time users. If you forget the '-f' or '-params' flag then this can also trigger REALTIME mode, and can appear like the conversion is taking a long time when in fact it is just waiting for data. While accidentally using REALTIME mode can occasionally cause some confusion, it allows for a powerful streaming capability to convert data directly from an instrument into a different format in real time.
For most applications, user's will have the data stored locally and want to convert to CfRadial or another data format. There are two different ways to specify the output file format, either on the command line or in a parameter file. If you don’t have specific requirements for the conversion settings, the easiest way to convert data to CfRadial format is to just use the command line '-f' option, which specifies a list of files:
lrose -- RadxConvert -f <path/to/data/file_name>
For example, to convert a NEXRAD Level 2 file from the Miami radar into CfRadial and place the file in an 'output' subdirectory:
lrose -- RadxConvert -f $PWD/Level2_KAMX_20161006_1906.ar2v -outdir $PWD/output
Note that RadxConvert will create the output subdirectory if it doesn't exist.
Important Note: We encourage users to not move the converted data from the date subdirectory directory or rename the files. Many data file formats (such as both CfRadial and DORADE) keep metadata in the filename, and other LROSE tools such as HawkEye will work better when the data is organized by date at the subdirectory level. RadxConvert will automatically name and sort the files chronologically, and will organize the converted data by date into subdirectories with a YYYYMMDD naming convention.
We recommend migrating your workflow to use the CfRadial netCDF format for your data analysis. CfRadial has well defined metadata standards and version 2.0 has been selected by the World Meteorological Organization (WMO) as the new international standard for lidar and radar data. The format has many advantages over older formats such as UF or DORADE, and works well with other open source radar packages such as PyART. Users are also encouraged to compile their CfRadial files as an aggregation of sweep files that make up a single volume scan. This is the default for file types that the Radx engine can recognize as volume scans (such as NEXRAD Level 2 archives), and can prescribed via the parameter file in other cases.
RadxConvert does support the conversion to DORADE sweep format which can still be utilized by Solo users. CfRadial files can be displayed by HawkEye, but cannot yet be directly edited in that program. Editing capability for HawkEye is currently in development and will continue to add more functionality to eventually replace soloii and solo3. In the meantime, data can be converted to sweepfiles for interactive editing using:
lrose -- RadxConvert -dorade -f <path/to/data/file_name>
A parameter file can also be generated and modified similarly to the other LROSE tools.
lrose -- RadxConvert -print_params > $PWD/RadxConvert.params
The user can specify the specific output format in RadxConvert.params file. For example:
Open RadxConvert.params in the terminal and find the line with 'output_format'. Set the desired output format as one of the options. For example, to choose CfRadial:
output_format = OUTPUT_FORMAT_CFRADIAL
or for DORADE:
output_format= OUTPUT_FORMAT_DORADE
Use the following command to convert using the settings provided by the parameter file:
lrose -- RadxConvert -f <path/to/data/file_name> -params $PWD/RadxConvert.params
The next page of the documentation has all the options for RadxConvert automatically generated from the default parameter file. If you've had enough of format conversion, you can move on to the next step of the workflow and display your data in CfRadial exchange format.
RadxConvert Parameter Descriptions
Converts files between CfRadial and other radial formats.
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
input_dir
Input directory for searching for files.
Files will be searched for in this directory.
Type: string
input_dir = ".";
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 ARCHIVE mode, at least) MUST contain a day-directory above the data file -- ./data_file.ext will not work as a file path, but ./yyyymmdd/data_file.ext will.
Type: enum
Options:
- REALTIME
- ARCHIVE
- FILELIST
mode = FILELIST;
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;
latest_data_info_avail
Is _latest_data_info file available?.
- If TRUE, will watch the latest_data_info file. If FALSE, will scan
- the input directory for new files.
Type: boolean
latest_data_info_avail = TRUE;
search_recursively
Option to recurse to subdirectories while looking for new files.
- If TRUE, all subdirectories with ages less than max_dir_age will be
- searched. This may take considerable CPU, so be careful in its use. Only applies if latest_data_info_avail is FALSE.
Type: boolean
search_recursively = TRUE;
max_recursion_depth
Maximum depth for recursive directory scan.
- Only applies search_recursively is TRUE. This is the max depth, below
- input_dir, to which the recursive directory search will be carried out. A depth of 0 will search the top-level directory only. A depth of 1 will search the level below the top directory, etc.
Type: int
max_recursion_depth = 5;
wait_between_checks
Sleep time between checking directory for input - secs.
- If a directory is large and files do not arrive frequently, set this
- to a higher value to reduce the CPU load from checking the directory. Only applies if latest_data_info_avail is FALSE.
Minimum val: 1
Type: int
wait_between_checks = 2;
file_quiescence
File quiescence when checking for files - secs.
- This allows you to make sure that a file coming from a remote machine
- is complete before reading it. Only applies if latest_data_info_avail is FALSE.
Type: int
file_quiescence = 5;
search_ext
File name extension.
If set, only files with this extension will be processed.
Type: string
search_ext = "";
gematronik_realtime_mode
Set to TRUE if we are watching for Gematronik XML volumes.
- Gematronik volumes (for a given time) are stored in multiple files,
- one for each field. Therefore, after the time on a volume changes and a new field file is detected, we need to wait a while to ensure that all of the files have had a chance to be writted to disk. You need to set gematronik_realtime_wait_secs to a value in excess of the time it takes for all of the files to be written.
Type: boolean
gematronik_realtime_mode = FALSE;
gematronik_realtime_wait_secs
; Number of seconds to wait, so that all field files can be written to
- disk before we start to read.
See 'gematronik_realtime_mode'.
Type: int
gematronik_realtime_wait_secs = 5;
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.
- If 'apply_strict_angle_limits' is set, only read sweeps within the
- specified limits. If strict checking is false and no data lies within the limits, return the closest applicable sweep.
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;
apply_strict_angle_limits
; Option to apply strict checking for angle or sweep number limits on
- read.
- If true, an error will occur if the fixed angle limits or sweep num
- limits are outside the bounds of the data. If false, a read is guaranteed to return at least 1 sweep - if no sweep lies within the angle limits set, the nearest sweep will be returned.
Type: boolean
apply_strict_angle_limits = TRUE;
READ OPTIONS
read_set_radar_num
Option to set the radar number.
See read_radar_num.
Type: boolean
read_set_radar_num = FALSE;
read_radar_num
Set the radar number for the data to be extracted.
- Most files have data from a single radar, so this does not apply. The
- NOAA HRD files, however, have data from both the lower fuselage (LF, radar_num = 1) and tail (TA, radar_num = 2) radars. For HRD files, by default the TA radar will be used, unless the radar num is set to 1 for the LF radar. If this is set to 1, it will force the convert to assume a lower fuselage radar. If set to 2, it will assume a tail radar.
Type: int
read_radar_num = -1;
aggregate_sweep_files_on_read
Option to aggregate sweep files into a volume on read.
- If true, 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 = FALSE;
aggregate_all_files_on_read
Option to aggregate all files in the file list on read.
- If true, all of the files specified with the '-f' arg will be
- aggregated into a single volume as they are read in. This only applies to FILELIST mode. Overrides 'aggregate_sweep_files_on_read'.
Type: boolean
aggregate_all_files_on_read = FALSE;
ignore_idle_scan_mode_on_read
Option to ignore data taken in IDLE mode.
If true, on read will ignore files with an IDLE scan mode.
Type: boolean
ignore_idle_scan_mode_on_read = TRUE;
remove_rays_with_all_data_missing
Option to remove rays for which all data is missing.
- If true, ray data will be checked. If all fields have missing data at
- all gates, the ray will be removed after reading.
Type: boolean
remove_rays_with_all_data_missing = FALSE;
clear_transition_flag_on_all_rays
Option to clear the transition flag on all rays.
- If true, for all rays on which the transition flag is set, this flag
- will be removed, so that all rays are considered to be NOT in transition.
Type: boolean
clear_transition_flag_on_all_rays = FALSE;
remove_rays_with_antenna_transitions
Option to remove rays taken while the antenna was in transition.
- If true, rays with the transition flag set will not be used. The
- transiton flag is set when the antenna is in transtion between one sweep and the next.
Type: boolean
remove_rays_with_antenna_transitions = FALSE;
transition_nrays_margin
Number of transition rays to include as a margin.
- Sometimes the transition flag is turned on too early in a transition,
- on not turned off quickly enough after a transition. If you set this to a number greater than 0, that number of rays will be included at each end of the transition, i.e. the transition will effectively be shorter at each end by this number of rays.
Type: int
transition_nrays_margin = 0;
trim_surveillance_sweeps_to_360deg
; Option to trip surveillance sweeps so that they only cover 360
- degrees.
- Some sweeps will have rays which cover more than a 360-degree
- rotation. Often these include antenna transitions. If this is set to true, rays are trimmed off either end of the sweep to limit the coverage to 360 degrees. The median elevation angle is computed and the end ray which deviates from the median in elevation is trimmed first.
Type: boolean
trim_surveillance_sweeps_to_360deg = FALSE;
set_max_range
Option to set the max range for any ray.
Type: boolean
set_max_range = FALSE;
max_range_km
Specified maximim range - km.
Gates beyond this range are removed.
Type: double
max_range_km = 9999;
preserve_sweeps
Preserve sweeps just as they are in the file.
- Applies generally to NEXRAD data. If true, the sweep details are
- preserved. If false, we consolidate sweeps from split cuts into a single sweep.
Type: boolean
preserve_sweeps = FALSE;
remove_long_range_rays
Option to remove long range rays.
- Applies to NEXRAD data. If true, data from the non-Doppler long-range
- sweeps will be removed.
Type: boolean
remove_long_range_rays = TRUE;
remove_short_range_rays
Option to remove short range rays.
- Applies to NEXRAD data. If true, data from the Doppler short-range
- sweeps will be removed.
Type: boolean
remove_short_range_rays = FALSE;
set_ngates_constant
Option to force the number of gates to be constant.
- If TRUE, the number of gates on all rays will be set to the maximum,
- and gates added to shorter rays will be filled with missing values.
Type: boolean
set_ngates_constant = FALSE;
remap_to_predominant_range_geometry
Option to remap all rays to the predominant range geometry.
- If TRUE, all rays will be remapped onto the same range geometry,
- determined as the most common geometry amongst all of the rays read in.
Type: boolean
remap_to_predominant_range_geometry = FALSE;
remap_to_finest_range_geometry
Option to remap all rays to the finest range geometry.
- If TRUE, all rays will be remapped onto the same range geometry,
- determined as that with the finest resolution in range - i.e. with the minimum gate spacing.
Type: boolean
remap_to_finest_range_geometry = FALSE;
OPTION TO OVERRIDE GATE GEOMETRY
override_start_range
Option to override the start range.
- If true, the specified start range in this file will be used. If not,
- the start range in the data file will be used.
Type: boolean
override_start_range = FALSE;
start_range_km
Specified start range (km).
See override_start_range.
Type: double
start_range_km = 0;
override_gate_spacing
Option to override the gate spacing.
- If true, the specified gate spacing in this file will be used. If
- not, the gate spacing in the data file will be used.
Type: boolean
override_gate_spacing = FALSE;
gate_spacing_km
Specified gate spacing (km).
See override_gate_spacing.
Type: double
gate_spacing_km = 0.0075;
OPTION TO OVERRIDE INSTRUMENT AND/OR SITE NAME
override_instrument_name
Option to override the instrument name.
If true, the name provided will be used.
Type: boolean
override_instrument_name = FALSE;
instrument_name
Instrument name.
See override_instrument_name.
Type: string
instrument_name = "unknown";
override_site_name
Option to override the site name.
If true, the name provided will be used.
Type: boolean
override_site_name = FALSE;
site_name
Site name.
See override_site_name.
Type: string
site_name = "unknown";
OPTION TO OVERRIDE VOLUME NUMBER, OR AUTOINCREMENT
override_volume_number
Option to override the volume number in the file.
Useful is there is no volume number in the data.
Type: boolean
override_volume_number = FALSE;
starting_volume_number
Volume number at startup.
Applies if 'override_volume_number' is true.
Type: int
starting_volume_number = 1;
autoincrement_volume_number
Option to automatically increment the volume number.
Starts at 'starting_volume_number' and increments from there.
Type: boolean
autoincrement_volume_number = FALSE;
OPTION TO OVERRIDE RADAR LOCATION
override_radar_location
Option to override the radar location.
- If true, the location in this file will be used. If not, the location
- in the time series data will be used.
Type: boolean
override_radar_location = FALSE;
radar_latitude_deg
Radar latitude (deg).
See override_radar_location.
Type: double
radar_latitude_deg = -999;
radar_longitude_deg
Radar longitude (deg).
See override_radar_location.
Type: double
radar_longitude_deg = -999;
radar_altitude_meters
Radar altitude (meters).
See override_radar_location.
Type: double
radar_altitude_meters = -999;
change_radar_latitude_sign
Option to negate the latitude.
- Mainly useful for RAPIC files. In RAPIC, latitude is always positive,
- so mostly you need to set the latitiude to the negative value of itself.
Type: boolean
change_radar_latitude_sign = FALSE;
apply_georeference_corrections
Option to apply the georeference info for moving platforms.
- For moving platforms, measured georeference information is sometimes
- available. If this is set to true, the georeference data is applied and appropriate corrections made. If possible, Earth-centric azimuth and elevation angles will be computed.
Type: boolean
apply_georeference_corrections = FALSE;
OPTION TO CORRECT TIME
apply_time_offset
Option to apply an offset to the ray times.
- If TRUE, this offset will be ADDED to the existing ray times. This is
- useful, for example, for correcting time errors, or converting from local time to UTC.
Type: boolean
apply_time_offset = FALSE;
time_offset_secs
Time offset (secs).
- See 'apply_time_offset'. This value will be ADDED to the existing ray
- times.
Type: double
time_offset_secs = 0;
OPTION TO CORRECT ANTENNA ANGLES
apply_azimuth_offset
Option to apply an offset to the azimuth values.
- If TRUE, this offset will be ADDED to the measured azimuth angles.
- This is useful, for example, in the case of a mobile platform which is not set up oriented to true north. Suppose you have a truck (like the DOWs) which is oriented off true north. Then if you add in the truck HEADING relative to true north, the measured azimuth angles will be adjusted by the heading, to give azimuth relative to TRUE north.
Type: boolean
apply_azimuth_offset = FALSE;
azimuth_offset
Azimuth offset (degrees).
- See 'apply_azimuth_offset'. This value will be ADDED to the measured
- azimuths.
Type: double
azimuth_offset = 0;
apply_elevation_offset
Option to apply an offset to the elevation values.
- If TRUE, this offset will be ADDED to the measured elevation angles.
- This is useful to correct for a systematic bias in measured elevation angles.
Type: boolean
apply_elevation_offset = FALSE;
elevation_offset
Elevation offset (degrees).
- See 'apply_elevation_offset'. This value will be ADDED to the
- measured elevations.
Type: double
elevation_offset = 0;
OPTION TO OVERRIDE INSTRUMENT TYPE, PLATFORM TYPE AND PRIMARY AXIS
This applies to read operations.
override_instrument_type
Option to override instrument type on read.
- If true, the file will be read in, the instrument type will be
- changed, and then any post-read processing will be performed.
Type: boolean
override_instrument_type = FALSE;
instrument_type
Specify the instrument type. See override_instrument_type.
Type: enum
Options:
- INSTRUMENT_RADAR
- INSTRUMENT_LIDAR
instrument_type = INSTRUMENT_RADAR;
override_platform_type
- Option to override platform type on read. If true, the file will be
read in, the platform type will be changed, and then any post-read processing will be performed.
PLATFORM_FIXED - radar is in a fixed location PLATFORM_VEHICLE - radar is mounted on a land vehicle PLATFORM_SHIP - radar is mounted on a ship PLATFORM_AIRCRAFT_FORE - forward-looking on aircraft PLATFORM_AIRCRAFT_AFT - backward-looking on aircraft PLATFORM_AIRCRAFT_TAIL - tail - e.g. ELDORA PLATFORM_AIRCRAFT_BELLY - belly radar on aircraft PLATFORM_AIRCRAFT_ROOF - roof radar on aircraft PLATFORM_AIRCRAFT_NOSE - radar in nose radome on aircraft PLATFORM_SATELLITE_ORBIT - orbiting satellite PLATFORM_SATELLITE_GEOSTAT - geostationary satellite.
Type: boolean
override_platform_type = FALSE;
platform_type
Platform type.
See override_platform_type.
Type: enum
Options:
- PLATFORM_FIXED
- PLATFORM_VEHICLE
- PLATFORM_SHIP
- PLATFORM_AIRCRAFT_FORE
- PLATFORM_AIRCRAFT_AFT
- PLATFORM_AIRCRAFT_TAIL
- PLATFORM_AIRCRAFT_BELLY
- PLATFORM_AIRCRAFT_ROOF
- PLATFORM_AIRCRAFT_NOSE
- PLATFORM_SATELLITE_ORBIT
- PLATFORM_SATELLITE_GEOSTAT
platform_type = PLATFORM_FIXED;
override_primary_axis
- Option to override primary axis on read. If true, the file will be
read in, the primary axis will be changed, and then any post-read processing will be performed.
PRIMARY_AXIS_Z - vertical PRIMARY_AXIS_Y - longitudinal axis of platform PRIMARY_AXIS_X - lateral axis of platform PRIMARY_AXIS_Z_PRIME - inverted vertical PRIMARY_AXIS_Y_PRIME - ELDORA, HRD tail PRIMARY_AXIS_X_PRIME - translated lateral.
Type: boolean
override_primary_axis = FALSE;
primary_axis
Platform type.
See override_primary_axis.
Type: enum
Options:
- PRIMARY_AXIS_Z
- PRIMARY_AXIS_Y
- PRIMARY_AXIS_X
- PRIMARY_AXIS_Z_PRIME
- PRIMARY_AXIS_Y_PRIME
- PRIMARY_AXIS_X_PRIME
primary_axis = PRIMARY_AXIS_Z;
OPTION TO FORCE RELOAD OF SWEEP AND/OR VOLUME INFO, or RECOMPUTE
SWEEP FIXED ANGLE.
reload_sweep_info_from_rays
Option to force a reload of sweep info from rays.
- If TRUE, this forces the app to call
- RadxVol::loadSweepInfoFromRays(), which reads through the rays and reloads the sweep info appropriately.
Type: boolean
reload_sweep_info_from_rays = FALSE;
reload_volume_info_from_rays
Option to force a reload of volume info from rays.
- If TRUE, this forces the app to call
- RadxVol::loadVolumeInfoFromRays(), which reads through the rays and reloads the volume summary info appropriately.
Type: boolean
reload_volume_info_from_rays = FALSE;
recompute_sweep_fixed_angles
Option to recompute sweep fixed angles using the angles in the data.
- Normally the sweep angles are set using the scan strategy angles -
- i.e., the theoretically perfect angles. This option allows you to recompute the sweep angles using the measured elevation angles (in PPI mode) or azimuth angles (in RHI mode).
Type: boolean
recompute_sweep_fixed_angles = FALSE;
optimize_surveillance_transitions
Optimize the transitions in surveillance mode.
- If true, we check the transitions between sweeps in surveillance
- mode, and move problem rays into the correct sweep. We also set the transition flag on/off based on the max elevation error speficied. See below.
Type: boolean
optimize_surveillance_transitions = FALSE;
optimized_transitions_max_elev_error
; Max elevation angle error when optimizing surveillance transitions
- (degrees).
- If the difference between the fixed angle and measured angle exceeds
- this value, the transition flag will be set. If not, it will be cleared.
Type: double
optimized_transitions_max_elev_error = 0.25;
OPTION TO ADJUST SWEEP LIMITS USING FIXED AND MEASURED ANGLES
adjust_sweep_limits_using_angles
; Adjust the limits of sweeps, by comparing the measured angles to the
- fixed angles.
- Sometimes the transitions from one fixed angle to another are not
- accurately described by the scan flags, and as a result rays are not correctly assigned to the sweeps. This option goes through the volume in ray order, and adjusts the way rays are associated with each sweep. It does this by comparing the actual angle with the fixed angle, and minimizes the angular difference.
Type: boolean
adjust_sweep_limits_using_angles = FALSE;
OPTION TO SORT SWEEPS BY FIXED ANGLE
sort_sweeps_by_fixed_angle
Sort the sweeps by fixed angle.
- For some volumes, the sweep fixed angles may not be in increasing
- order. This option allows you to reorder the sweeps, and rays, into the correct order.
Type: boolean
sort_sweeps_by_fixed_angle = FALSE;
OPTION TO OVERRIDE SELECTED GLOBAL ATTRIBUTES
version_override
Option to override the version global attribute.
- If empty, no effect. If not empty, this string is used to override
- the version attribute.
Type: string
version_override = "";
title_override
Option to override the title global attribute.
- If empty, no effect. If not empty, this string is used to override
- the title attribute.
Type: string
title_override = "";
institution_override
Option to override the institution global attribute.
- If empty, no effect. If not empty, this string is used to override
- the institution attribute.
Type: string
institution_override = "";
references_override
Option to override the references global attribute.
- If empty, no effect. If not empty, this string is used to override
- the references attribute.
Type: string
references_override = "";
source_override
Option to override the source global attribute.
- If empty, no effect. If not empty, this string is used to override
- the source attribute.
Type: string
source_override = "";
history_override
Option to override the history global attribute.
- If empty, no effect. If not empty, this string is used to override
- the history attribute.
Type: string
history_override = "";
comment_override
Option to override the comment global attribute.
- If empty, no effect. If not empty, this string is used to override
- the comment attribute.
Type: string
comment_override = "";
author_override
Option to override the author global attribute.
- If empty, no effect. If not empty, this string is used to override
- the author attribute.
Type: string
author_override = "";
OPTION TO ADD USER-SPECIFIED GLOBAL ATTRIBUTES to output file
Only applies to CfRadial output format.
add_user_specified_global_attributes
Add user-specified global attributes to output file.
Only applies to CfRadial files. See below for details.
Type: boolean
add_user_specified_global_attributes = FALSE;
user_defined_global_attributes
User-defined global attributes.
- Applies if 'add_user_specified_global_attributes' is true. Array
- attributes are comma-delimited.
- Type
- struct
- ;; typedef struct {
- string name; attr_type_t attrType;
Options:
- ATTR_STRING
- ATTR_INT
- ATTR_DOUBLE
- ATTR_INT_ARRAY
- ATTR_DOUBLE_ARRAY
- 1D array - variable length.
user_defined_global_attributes = {
name = "attr_string",
attrType = ATTR_STRING,
val = "user-attribute"
name = "attr_int",
attrType = ATTR_INT,
val = "99"
name = "attr_double",
attrType = ATTR_DOUBLE,
val = "99.99"
name = "attr_int_array",
attrType = ATTR_INT_ARRAY,
val = "1,2,3,4,5"
name = "attr_double_array",
attrType = ATTR_DOUBLE_ARRAY,
val = "1.1,2.2,3.3,4.4,5.5"
};
OPTION TO SPECIFY FIELD NAMES AND OUTPUT ENCODING
set_output_fields
Set the field names and output encoding.
If false, all fields will be used.
Type: boolean
set_output_fields = FALSE;
output_fields
Output field details.
- Set the details for the output fields. The output_field_name is the
- ndtCDF variable name. Set the long name to a more descriptive name. Set the standard name to the CF standard name for this field. If the long name or standard name are empty, the existing names are used. If SCALING_SPECIFIED, then the scale and offset is used.
- Type
- struct
- ;; typedef struct {
- string input_field_name; string output_field_name; string long_name; string standard_name; string output_units; output_encoding_t encoding;
Options:
- OUTPUT_ENCODING_ASIS
- OUTPUT_ENCODING_FLOAT32
- OUTPUT_ENCODING_INT32
- OUTPUT_ENCODING_INT16
- OUTPUT_ENCODING_INT08
Options:
- SCALING_DYNAMIC
- SCALING_SPECIFIED
- 1D array - variable length.
output_fields = {
input_field_name = "DBZ",
output_field_name = "DBZ",
long_name = "reflectivity",
standard_name = "equivalent_reflectivity_factor",
output_units = "dBZ",
encoding = OUTPUT_ENCODING_ASIS,
output_scaling = SCALING_DYNAMIC,
output_scale = 0.01,
output_offset = 0
input_field_name = "VEL",
output_field_name = "VEL",
long_name = "radial_velocity",
standard_name = "radial_velocity_of_scatterers_away_from_instrument",
output_units = "m/s",
encoding = OUTPUT_ENCODING_ASIS,
output_scaling = SCALING_DYNAMIC,
output_scale = 0.01,
output_offset = 0
};
write_other_fields_unchanged
Option to write out the unspecified fields as they are.
- If false, only the fields listed in output_fields will be written. If
- this is true, all other fields will be written unchanged.
Type: boolean
write_other_fields_unchanged = FALSE;
exclude_specified_fields
Option to exclude fields in the specified list.
- If true, the specified fields will be excluded. This may be easier
- than specifiying all of the fields to be included, if that list is very long.
Type: boolean
exclude_specified_fields = FALSE;
excluded_fields
List of fields to be excluded.
List the names to be excluded.
Type: string 1D array - variable length.
excluded_fields = {
};
OPTION TO SPECIFY OUTPUT ENCODING FOR ALL FIELDS
set_output_encoding_for_all_fields
Option to set output encoding for all fields.
Type: boolean
set_output_encoding_for_all_fields = FALSE;
output_encoding
Output encoding for all fields, if requested.
Type: enum
Options:
- OUTPUT_ENCODING_ASIS
- OUTPUT_ENCODING_FLOAT32
- OUTPUT_ENCODING_INT32
- OUTPUT_ENCODING_INT16
- OUTPUT_ENCODING_INT08
output_encoding = OUTPUT_ENCODING_ASIS;
CENSORING
; You have the option of censoring the data fields - i.e. setting the
- fields to missing values - at gates which meet certain criteria. If this is done correctly, it allows you to preserve the valid data and discard the noise, thereby improving compression.
apply_censoring
Apply censoring based on field values and thresholds.
- If TRUE, censoring will be performed. See 'censoring_fields' for
- details on how the censoring is applied.
Type: boolean
apply_censoring = FALSE;
censoring_fields
Fields to be used for censoring.
- Specify the fields to be used to determine whether a gate should be
- censored. The name refers to the input data field names. Valid field values lie in the range from min_valid_value to max_valid_value inclusive. If the value of a field at a gate lies within this range, it is considered valid. Each specified field is examined at each gate, and is flagged as valid if its value lies in the valid range. These field flags are then combined as follows: first, all of the LOGICAL_OR flags are combined, yielding a single combined_or flag which is true if any of the LOGICAL_OR fields is true. The combined_or flag is then combined with all of the LOGICAL_AND fields, yielding a true value only if the combined_or flag and the LOGICAL_AND fields are all true. If this final flag is true, then the data at the gate is regarded as valid and is retained. If the final flag is false, the data at the gate is censored, and all of the fields at the gate are set to missing.
- Type
- struct
- ;; typedef struct {
- string name; double min_valid_value; double max_valid_value; logical_t combination_method;
Options:
- LOGICAL_AND
- LOGICAL_OR
- 1D array - variable length.
censoring_fields = {
name = "SNR",
min_valid_value = 0,
max_valid_value = 1000,
combination_method = LOGICAL_OR
name = "NCP",
min_valid_value = 0.15,
max_valid_value = 1000,
combination_method = LOGICAL_OR
};
censoring_min_valid_run
Minimum valid run of non-censored gates.
- Only active if set to 2 or greater. A check is made to remove short
- runs of noise. Looking along the radial, we compute the number of contiguous gates (a 'run') with uncensored data. For the gates in this run to be accepted the length of the run must exceed censoring_min_valid_run. If the number of gates in a run is less than this, then all gates in the run are censored.
Type: int
censoring_min_valid_run = 1;
OPTION TO APPLY LINEAR TRANSFORM TO SPECIFIED FIELDS
; These transforms are fixed. The same transform is applied to all
- files.
apply_linear_transforms
Apply linear transform to specified fields.
If true, we will apply a linear transform to selected fields.
Type: boolean
apply_linear_transforms = FALSE;
transform_fields
transform field details.
- Set the field name, scale and offset to be applied to the selected
fields. NOTE: the field name is the INPUT field name.
- Type: struct
- typedef struct {
string input_field_name; double transform_scale; double transform_offset;
}
1D array - variable length.
transform_fields = {
input_field_name = "DBZ",
transform_scale = 1,
transform_offset = 0
input_field_name = "VEL",
transform_scale = 1,
transform_offset = 0
};
OPTION TO APPLY VARIABLE LINEAR TRANSFORM TO SPECIFIED FIELDS
; These transforms vary from file to file, controlled by specific
- metadata.
apply_variable_transforms
Apply linear transforms that vary based on specific metadata.
If true, we will apply variable linear transform to selected fields.
Type: boolean
apply_variable_transforms = FALSE;
variable_transform_fields
Details for variable transforms.
- We based the field decision off the input_field_name. You need to
- pick the method of control: STATUS_XML_FIELD - based on the value associated with an XML tag in the status block; ELEVATION_DEG - based on the elevation in degrees; PULSE_WIDTH_US - based on the pulse with in microsecs. For STATUS_XML_FIELD Set the relevant status_xml_tag, which will be used to find the relevant value. The lookup table is a series of entries specifying the metadata_value and the scale and offset to be appied for that given metadata value. Each entry is enclosed in parentheses, and is of the form (metadata_value, scale, offset). The entries themselves are also are comma-separated. Interpolation is used for metadata values that lie between those specified in the lookup table. The enries in the lookup table should have metadata_values that are monotonically increasing.
- Type
- struct
- ;; typedef struct {
- string input_field_name; variable_transform_control_t control;
Options:
- STATUS_XML_FIELD
- ELEVATION_DEG
- PULSE_WIDTH_US
- 1D array - variable length.
variable_transform_fields = {
input_field_name = "dBZ",
control = STATUS_XML_FIELD,
xml_tag = "gdrxanctxfreq",
lookup_table = "(57.0, 1.0, -0.7), (60.0, 1.0, -0.2), (64.0, 1.0, -0.3), (67.0, 1.0, -1.8), (68.0, 1.0, -1.2), (69.0, 1.0, -1.3)"
input_field_name = "dBZv",
control = STATUS_XML_FIELD,
xml_tag = "gdrxanctxfreq",
lookup_table = "(57.0, 1.0, 0.1), (58.0, 1.0, 0.3), (60.0, 1.0, -0.3), (67.0, 1.0, -2.3), (69.0, 1.0, -2.0)"
input_field_name = "ZDR",
control = STATUS_XML_FIELD,
xml_tag = "gdrxanctxfreq",
lookup_table = "(56.0, 1.0, -0.75), (58.0, 1.0, -0.75), (61.0, 1.0, 0.1), (63.5, 1.0, 0.2), (64.0, 1.0, 0.6), (69.0, 1.0, 0.6)"
};
OUTPUT FORMAT
output_format
Format for the output files.
Type: enum
Options:
- OUTPUT_FORMAT_CFRADIAL
- OUTPUT_FORMAT_CFRADIAL2
- OUTPUT_FORMAT_NCXX
- OUTPUT_FORMAT_DORADE
- OUTPUT_FORMAT_FORAY
- OUTPUT_FORMAT_NEXRAD
- OUTPUT_FORMAT_UF
- OUTPUT_FORMAT_MDV_RADIAL
- OUTPUT_FORMAT_NSSL_MRD
- OUTPUT_FORMAT_ODIM_HDF5
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 = NETCDF4;
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 = FALSE;
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 = 4;
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. SPECIFY_FILE_NAME: file of this name will be written to output_dir.
Type: enum
Options:
- START_AND_END_TIMES
- START_TIME_ONLY
- END_TIME_ONLY
- SPECIFY_FILE_NAME
output_filename_mode = START_AND_END_TIMES;
output_filename_prefix
Optional prefix for output filename.
- If empty, the standard prefix will be used. Only applies to CfRadial
- files. Standard prefix is 'cfrad.'.
Type: string
output_filename_prefix = "";
output_filename_suffix
Optional suffix for output filename.
- If not empty, the suffix will be inserted immediately prior to the
- extension.
Type: string
output_filename_suffix = "";
include_instrument_name_in_file_name
Option to include the instrument name in the file name.
- Default is true. Only applies to CfRadial files. If true, the
- instrument name will be included just before the volume number in the output file name.
Type: boolean
include_instrument_name_in_file_name = TRUE;
include_site_name_in_file_name
Option to include the site name in the file name.
- Only applies to CfRadial files. If true, the site name will be
- included just before the volume number in the output file name.
Type: boolean
include_site_name_in_file_name = FALSE;
include_subsecs_in_file_name
Option to include sub-seconds in date-time part of file name.
- Default is true. Only applies to CfRadial files. If true, the
- millisecs of the start and end time will be included in the file name.
Type: boolean
include_subsecs_in_file_name = TRUE;
include_scan_type_in_file_name
Option to include the scan type in the file name.
- Default is true. Only applies to CfRadial files. If true, the scan
- type (SUR, SEC, RHI, VER etc) will be included in the file name.
Type: boolean
include_scan_type_in_file_name = TRUE;
include_vol_num_in_file_name
Option to include the volume number in the file name.
- Default is false. Only applies to CfRadial files. If true, the volume
- number is included in the file name, preceded by '_v'.
Type: boolean
include_vol_num_in_file_name = FALSE;
use_hyphen_in_file_name_datetime_part
Option to use a hyphen between date and time in filename.
- Default is false. Only applies to CfRadial files. Normally an
- underscore is used.
Type: boolean
use_hyphen_in_file_name_datetime_part = FALSE;
output_filename
Name of output file.
- Applies only if output_filename_mode is SPECIFY_FILE_NAME. File of
- this name will be written to output_dir.
Type: string
output_filename = "cfradial.test.nc";
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;
write_individual_sweeps
Option to write out individual sweeps if appropriate.
- If true, the volume is split into individual sweeps for writing.
- Applies to CfRadial format. This is always true for DORADE format files.
Type: boolean
write_individual_sweeps = FALSE;
write_latest_data_info
Option to write out _latest_data_info files.
- If true, the _latest_data_info files will be written after the
- converted file is written.
Type: boolean
write_latest_data_info = FALSE;
write_using_proposed_standard_name_attr
; Option to write CfRadial files using 'proposed_standard_name'
- attribute.
- Default is false. Only applies to CfRadial files. Normally we use the
- 'standard_name' attribute. However, some organizations reject these as valid files since the standard names are not yet accepted. Using proposed_standard_name' instead avoids this issue.
Type: boolean
write_using_proposed_standard_name_attr = FALSE;
SEPARATING VOLUMES BY TYPE
separate_output_dirs_by_scan_type
Option to separate the files based on scan type.
- Sometimes a scan strategy will switch between surveillance scans,
- sector scans, rhi scans, vertically-pointing scans and sun scans. If true, the files will be separated into subdirectories based on scan type.
Type: boolean
separate_output_dirs_by_scan_type = FALSE;
surveillance_subdir
The directory path for surveillance scan files.
- See 'separate_by_scan_type'. If the scan mode is surveillance, this
- subdirectory will be created under the ouput dir.
Type: string
surveillance_subdir = "sur";
sector_subdir
The directory path for sector scan files.
- See 'separate_by_scan_type'. If the scan mode is sector, this
- subdirectory will be created under the ouput dir.
Type: string
sector_subdir = "sec";
rhi_subdir
The directory path for rhi files.
- See 'separate_by_scan_type'. If the scan mode is rhi, this
- subdirectory will be created under the ouput dir.
Type: string
rhi_subdir = "rhi";
vert_subdir
The directory path for vert scan files.
- See 'separate_by_scan_type'. If the scan mode is vert, this
- subdirectory will be created under the ouput dir.
Type: string
vert_subdir = "vert";
sun_subdir
The directory path for sun scan files.
- See 'separate_by_scan_type'. If the scan mode is sun, this
- subdirectory will be created under the ouput dir.
Type: string
sun_subdir = "sun";
OPTION TO OVERRIDE MISSING VALUES
; Missing values are applicable to both metadata and field data. The
- default values should be satisfactory for most purposes. However, you can choose to override these if you are careful with the selected values.
- The default values for metadata are
- missingMetaDouble = -9999.0 missingMetaFloat = -9999.0 missingMetaInt = -9999 missingMetaChar = -128
- The default values for field data are
- missingFl64 = -9.0e33 missingFl32 = -9.0e33 missingSi32 = -2147483647 missingSi16 = -32768 missingSi08 = -128.
override_missing_metadata_values
Option to override the missing values for meta-data.
See following parameter options.
Type: boolean
override_missing_metadata_values = FALSE;
missing_metadata_double
Missing value for metadata of type double.
Only applies if override_missing_metadata_values is TRUE.
Type: double
missing_metadata_double = -9999;
missing_metadata_float
Missing value for metadata of type float.
Only applies if override_missing_metadata_values is TRUE.
Type: float
missing_metadata_float = -9999;
missing_metadata_int
Missing value for metadata of type int.
Only applies if override_missing_metadata_values is TRUE.
Type: int
missing_metadata_int = -9999;
missing_metadata_char
Missing value for metadata of type char.
Only applies if override_missing_metadata_values is TRUE.
Type: int
missing_metadata_char = -128;
override_missing_field_values
Option to override the missing values for field data.
See following parameter options.
Type: boolean
override_missing_field_values = FALSE;
missing_field_fl64
Missing value for field data of type 64-bit float.
Only applies if override_missing_field_values is TRUE.
Type: double
missing_field_fl64 = -9e+33;
missing_field_fl32
Missing value for field data of type 32-bit float.
Only applies if override_missing_field_values is TRUE.
Type: double
missing_field_fl32 = -9e+33;
missing_field_si32
Missing value for field data of type 32-bit integer.
Only applies if override_missing_field_values is TRUE.
Type: int
missing_field_si32 = -2147483647;
missing_field_si16
Missing value for field data of type 16-bit integer.
Only applies if override_missing_field_values is TRUE.
Type: int
missing_field_si16 = -232768;
missing_field_si08
Missing value for field data of type 8-bit integer.
Only applies if override_missing_field_values is TRUE.
Type: int
missing_field_si08 = -128;