chil2nc

This program converts Chilbolton-format radar data to netCDF, a widely used format in meteorology and oceanography. The processing options are shared with chilplot, chil2nc and loadchil. The netCDF files are written in the current directory. In the case of scanning data, separate files are written for each scan, and the filenames have the form FFFFrRRRsSS{ID}.nc, where FFFF is the file or tape number, RRR is the raster number and SS is the scan number. {ID} is an extra string that can be used to (for instance) distinguish new and dop files, by specifying the option `-id new' or `-id dop'. By default it is empty. Cloud data is grouped by day, and the filenames have the form YYYYMMDD_XX{ID}.nc, where YYYY is the year, MM is the month, DD is the day and XX is the name of the radar, and can be overridden with -id. In addition to -id, the following arguments are understood:

-azel
Output azim and elev vectors even if the radar was in cloud mode. Note that in some cloud data the elevation and azimuth are absent or wrong.
-elevation f
Output elevation as a scalar variable in cloud data. Normally the value would be 90 degrees to indicate zenith pointing, but in principle the radar could dwell in cloud mode at another angle.
-azimuth f
Output azimuth as a scalar variable in cloud data.
-nopolarnames
Use Z for radar reflectivity factor, rather than Zh.
-user s
The name and email of the person who created the NetCDF file, typically of the form `Joe Bloggs <j.bloggs@radar.com>'.
-comment s
A comment to be added to each file as a global attribute.
The easiest way to check the contents of a netCDF file is using the ncdump utility. Here is an example:
corona$ chil2nc /data/0090c94d.dat 2 -averays 10 -correctrange -oscillator -Zcal 25 -minelev 85
Writing 20000330_94.nc
corona$ ncdump 20000330_94.nc | less
netcdf 20000330_94 {
dimensions:
        time = UNLIMITED ; // (360 currently)
        range = 242 ;
variables:
        float frequency ;
                frequency:units = "GHz" ;
                frequency:long_name = "Radar frequency" ;
        float latitude ;
                latitude:units = "degrees_north" ;
        float longitude ;
                longitude:units = "degrees_east" ;
        float altitude ;
                altitude:units = "m" ;
                altitude:long_name = "Altitude of antenna above mean sea level" ;
        float time(time) ;
                time:units = "hours UTC" ;
                time:long_name = "Decimal hours since midnight" ;
        float range(range) ;
                range:units = "km" ;
                range:long_name = "Range from antenna" ;
        float Zh(time, range) ;
                Zh:units = "dBZ" ;
                Zh:long_name = "Radar reflectivity factor" ;
                Zh:missing_value = -999.f ;
        float v(time, range) ;
                v:units = "m/s" ;
                v:long_name = "Doppler velocity" ;
                v:missing_value = -999.f ;
        float sigma_v(time, range) ;
                sigma_v:units = "m/s" ;
                sigma_v:long_name = "Doppler velocity standard deviation" ;
                sigma_v:missing_value = -999.f ;

// global attributes:
                :system = "Galileo" ;
                :scantype = "Fixed" ;
                :day = 30s ;
                :month = 3s ;
                :year = 2000s ;
                :file = 90s ;
                :raster = 2s ;
                :options = "-averays 10 -correctrange -oscillator -Zcal 25 -minelev 85" ;
data:

 frequency = 94 ;
...