Actions

Difference between revisions of "RadxConvert"

From Lrose Wiki

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 = &quot;test&quot;;'''
 
 
== DATA INPUT ==
 
 
=== input_dir ===
 
 
<blockquote>Input directory for searching for files.
 
 
Files will be searched for in this directory.
 
 
Type: string
 
</blockquote>
 
'''input_dir = &quot;.&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;unknown&quot;;'''
 
 
=== 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 = &quot;unknown&quot;;'''
 
 
== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
== 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 = &quot;attr_string&quot;,'''
 
 
'''attrType = ATTR_STRING,'''
 
 
'''val = &quot;user-attribute&quot;'''
 
 
'''name = &quot;attr_int&quot;,'''
 
 
'''attrType = ATTR_INT,'''
 
 
'''val = &quot;99&quot;'''
 
 
'''name = &quot;attr_double&quot;,'''
 
 
'''attrType = ATTR_DOUBLE,'''
 
 
'''val = &quot;99.99&quot;'''
 
 
'''name = &quot;attr_int_array&quot;,'''
 
 
'''attrType = ATTR_INT_ARRAY,'''
 
 
'''val = &quot;1,2,3,4,5&quot;'''
 
 
'''name = &quot;attr_double_array&quot;,'''
 
 
'''attrType = ATTR_DOUBLE_ARRAY,'''
 
 
'''val = &quot;1.1,2.2,3.3,4.4,5.5&quot;'''
 
 
'''};'''
 
 
== 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 = &quot;DBZ&quot;,'''
 
 
'''output_field_name = &quot;DBZ&quot;,'''
 
 
'''long_name = &quot;reflectivity&quot;,'''
 
 
'''standard_name = &quot;equivalent_reflectivity_factor&quot;,'''
 
 
'''output_units = &quot;dBZ&quot;,'''
 
 
'''encoding = OUTPUT_ENCODING_ASIS,'''
 
 
'''output_scaling = SCALING_DYNAMIC,'''
 
 
'''output_scale = 0.01,'''
 
 
'''output_offset = 0'''
 
 
'''input_field_name = &quot;VEL&quot;,'''
 
 
'''output_field_name = &quot;VEL&quot;,'''
 
 
'''long_name = &quot;radial_velocity&quot;,'''
 
 
'''standard_name = &quot;radial_velocity_of_scatterers_away_from_instrument&quot;,'''
 
 
'''output_units = &quot;m/s&quot;,'''
 
 
'''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 = &quot;SNR&quot;,'''
 
 
'''min_valid_value = 0,'''
 
 
'''max_valid_value = 1000,'''
 
 
'''combination_method = LOGICAL_OR'''
 
 
'''name = &quot;NCP&quot;,'''
 
 
'''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 = &quot;DBZ&quot;,'''
 
 
'''transform_scale = 1,'''
 
 
'''transform_offset = 0'''
 
 
'''input_field_name = &quot;VEL&quot;,'''
 
 
'''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 = &quot;dBZ&quot;,'''
 
 
'''control = STATUS_XML_FIELD,'''
 
 
'''xml_tag = &quot;gdrxanctxfreq&quot;,'''
 
 
'''lookup_table = &quot;(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)&quot;'''
 
 
'''input_field_name = &quot;dBZv&quot;,'''
 
 
'''control = STATUS_XML_FIELD,'''
 
 
'''xml_tag = &quot;gdrxanctxfreq&quot;,'''
 
 
'''lookup_table = &quot;(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)&quot;'''
 
 
'''input_field_name = &quot;ZDR&quot;,'''
 
 
'''control = STATUS_XML_FIELD,'''
 
 
'''xml_tag = &quot;gdrxanctxfreq&quot;,'''
 
 
'''lookup_table = &quot;(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)&quot;'''
 
 
'''};'''
 
 
== 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 = &quot;./output&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;&quot;;'''
 
 
=== 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 = &quot;cfradial.test.nc&quot;;'''
 
 
=== 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 = &quot;sur&quot;;'''
 
 
=== 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 = &quot;sec&quot;;'''
 
 
=== 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 = &quot;rhi&quot;;'''
 
 
=== 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 = &quot;vert&quot;;'''
 
 
=== 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 = &quot;sun&quot;;'''
 
 
== 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:19, 16 July 2019

RadxConvert allows you to convert data stored in one format to a different format.

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.