Tutorial: The Radial Scientific Datatype

The Radial Datatype

Radial Datatype uses polar coordinates (elevation, azimuth, distance) to describe the location of its points in space, and it is referred as Radial Coordinate System. A Radial Coordinate System has a Elevation, Azimuth, and Distance coordinate axis. It may also has a Time coordinate axis. Generally, in our level II and level III radar products, there is a time variable at radial (elevation, azimuth), or sweep (elevation) level, so it is considered as a variable, rather than coordinate axis.

A RadialDatasetSweep has a collection of Radial Variables. The data in each Variable is organized into sweeps. A sweep is a connected set of radials. All the radials in a sweep are assumed to have the same number of gates and the same beam width and nyquist frequency. A radial is a set of data sampled along a straight line at constant intervals called the gate size. The radial's geometry is described by an elevation and azimuth angles relative to some origin.

A RadialDatasetSweep is a NetcdfDataset whose Radials have been identified and grouped into Sweeps based on Radial Coordinate Systems. Here is the UML for the RadialDatasetSweep interface classes, found in the ucar.nc2.dt package:

 

Opening and using a RadialDatasetSweep

ucar.nc2.dt.RadialDatasetSweep is an interface, we use the concrete class from the package ucar.nc2.dt.radial to open a Radial Dataset:

  RadialDatasetSweep rds = (RadialDatasetSweep) TypedDatasetFactory.open(thredds.catalog.DataType.RADIAL, fileIn, null, new StringBuffer())

A TypedDatasetFactory wraps three RadialDatasetSweep classes: ucar.nc2.dt.radial.Nids2Dataset, ucar.nc2.dt.radial.LevelII2Dataset, and ucar.nc2.dt.radial.Dorade2Dataset. It opens a radial dataset with an appropriate class, and can be extended to cover more radial products.

If the radar is stationary, isStationary() returns true, and getCommonOrigin() returns the earth location of radar. If the radar product has more than one sweep, isVolume() will return 1. The getDataVariables returns the list of variables, for each variable, getNumSweeps(), getSweep(int sweepNum), and readAllData() is used to handle the data variable at the sweep level, inside each sweep, getRadialNumber(), getGateNumber(), getElevation(int radial), getTime(int radial), and readData(int radial) returns all information associated with the radial object.

Example of Retrieving data from a RadialDataset

            /* radar information */
            String stationID      = rds.getRadarID();
            String stationName    = rds.getRadarName();
            boolean isVolume       = rds.isVolume();

            /* radial variable */
            RadialDatasetSweep.RadialVariable varRef = rds.getDataVariable("Reflectivity");

            List  rvars = rds.getDataVariables();
            Iterator iter = rvars.iterator();

            /* information at sweep level */
            RadialDatasetSweep.Sweep sw = varRef.getSweep(i);
            float me = sw.getMeanElevation();
            int nrays = sw.getRadialNumber();

            /* data variable at radial level */
           for (int j = 0; j < nrays; j++) {
                 float azi = sw.getAzimuth(j);
                 int ngates = sw.getGateNumber();
                float ele = sw.getElevation(i);
                float [] d = sw.readData(i);

           }
  

Using ToolsUI to look at Radial Dataset

You can use ToolsUI Radial Tab to view Radial Datasets. This consists of 2 tables that show the Radial DataTypes, and information of 9 radial sweeps associated with the radial variable Reflectivity.

toolUI view

You can also use ToolsUI NCDump Tab to view the netCDF structure of a Radial Dataset.

Use the IDVto display the Radial Dataset of a level II product, showing 3D sweep of elevation angle 0.5 degree:

3DSweep


and volume image of Reflectivity which is composed of 9 elevation sweeps:

IDV volume