ucar.nc2.iosp.cinrad
Class Cinrad2Record

java.lang.Object
  extended by ucar.nc2.iosp.cinrad.Cinrad2Record

public class Cinrad2Record
extends Object

This class reads one record (radial) in an CINRAD level II file. File must be uncompressed. Not handling messages yet, only data.

10/16/05: Now returns data as a byte, so use scale and offset. Adapted with permission from the Java Iras software developed by David Priegnitz at NSSL.

Version:
$Revision:63 $ $Date:2006-07-12 21:50:51Z $
Author:
caron, David Priegnitz

Field Summary
static byte BELOW_THRESHOLD
           
static int DOPPLER_RESOLUTION_HIGH_CODE
          High doppler resolution code
static int DOPPLER_RESOLUTION_LOW_CODE
          Low doppler resolution code
static float HORIZONTAL_BEAM_WIDTH
          Horizontal beam width
 byte message_type
           
static byte MISSING_DATA
          Initialization flag for lookup tables public static int data_lut_init_flag = 0; /** Reflectivity look up table public static float[] Reflectivity_LUT = new float[256]; /** 1 km Velocity look up table public static float[] Velocity_1km_LUT = new float[256]; /** 1/2 km Velocity look up table public static float[] Velocity_hkm_LUT = new float[256]; static { Reflectivity_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Reflectivity_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; Velocity_1km_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Velocity_1km_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; Velocity_hkm_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Velocity_hkm_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; for (int i = 2; i < 256; i++) { Reflectivity_LUT[i] = (float) (i / 2.0 - 33.0); Velocity_1km_LUT[i] = (float) (i - 129.0); Velocity_hkm_LUT[i] = (float) (i / 2.0 - 64.5); // also spectrum width } }
static int REFLECTIVITY
          Reflectivity moment identifier
static int SPECTRUM_WIDTH
          Sprectrum Width moment identifier
static int VELOCITY_HI
          Radial Velocity moment identifier
static int VELOCITY_LOW
          Radial Velocity moment identifier
 
Constructor Summary
Cinrad2Record(RandomAccessFile din, int record)
           
 
Method Summary
static int bytesToInt(byte[] bytes, boolean swapBytes)
           
static int bytesToShort(byte[] bytes, boolean swapBytes)
           
 boolean checkOk()
           
 short convertunsignedByte2Short(byte b)
           
 void dump(PrintStream out)
           
 void dump2(PrintStream out)
           
 void dumpMessage(PrintStream out, Date d)
           
static Cinrad2Record factory(RandomAccessFile din, int record)
           
 float getAzimuth()
          Get the azimuth in degrees
static float getDatatypeAddOffset(int datatype)
           
static String getDatatypeName(int datatype)
           
static float getDatatypeScaleFactor(int datatype)
           
static String getDatatypeUnits(int datatype)
           
 Date getDate()
           
static Date getDate(int julianDays, int msecs)
           
 float getElevation()
          Get the elevation angle in degrees
 int getGateCount(int datatype)
          This method returns the number of gates
 int getGateSize(int datatype)
          This method returns the gate size in meters
 int getGateStart(int datatype)
          This method returns the starting gate in meters
static String getMessageTypeName(int code)
           
static String getRadialStatusName(int code)
           
static String getVolumeCoveragePatternName(int code)
           
 void readData(RandomAccessFile raf, int datatype, Range gateRange, IndexIterator ii)
          Read data from this record.
 String toString()
          Instances which have same content are equal.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

REFLECTIVITY

public static final int REFLECTIVITY
Reflectivity moment identifier

See Also:
Constant Field Values

VELOCITY_HI

public static final int VELOCITY_HI
Radial Velocity moment identifier

See Also:
Constant Field Values

VELOCITY_LOW

public static final int VELOCITY_LOW
Radial Velocity moment identifier

See Also:
Constant Field Values

SPECTRUM_WIDTH

public static final int SPECTRUM_WIDTH
Sprectrum Width moment identifier

See Also:
Constant Field Values

DOPPLER_RESOLUTION_LOW_CODE

public static final int DOPPLER_RESOLUTION_LOW_CODE
Low doppler resolution code

See Also:
Constant Field Values

DOPPLER_RESOLUTION_HIGH_CODE

public static final int DOPPLER_RESOLUTION_HIGH_CODE
High doppler resolution code

See Also:
Constant Field Values

HORIZONTAL_BEAM_WIDTH

public static final float HORIZONTAL_BEAM_WIDTH
Horizontal beam width

See Also:
Constant Field Values

MISSING_DATA

public static final byte MISSING_DATA
Initialization flag for lookup tables public static int data_lut_init_flag = 0; /** Reflectivity look up table public static float[] Reflectivity_LUT = new float[256]; /** 1 km Velocity look up table public static float[] Velocity_1km_LUT = new float[256]; /** 1/2 km Velocity look up table public static float[] Velocity_hkm_LUT = new float[256]; static { Reflectivity_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Reflectivity_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; Velocity_1km_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Velocity_1km_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; Velocity_hkm_LUT[0] = 0.0f; // Float.NaN; //(float) SIGNAL_BELOW_THRESHOLD; Velocity_hkm_LUT[1] = Float.NaN; //(float) SIGNAL_OVERLAID; for (int i = 2; i < 256; i++) { Reflectivity_LUT[i] = (float) (i / 2.0 - 33.0); Velocity_1km_LUT[i] = (float) (i - 129.0); Velocity_hkm_LUT[i] = (float) (i / 2.0 - 64.5); // also spectrum width } }

See Also:
Constant Field Values

BELOW_THRESHOLD

public static final byte BELOW_THRESHOLD
See Also:
Constant Field Values

message_type

public byte message_type
Constructor Detail

Cinrad2Record

public Cinrad2Record(RandomAccessFile din,
                     int record)
              throws IOException
Throws:
IOException
Method Detail

getDatatypeName

public static String getDatatypeName(int datatype)

getDatatypeUnits

public static String getDatatypeUnits(int datatype)

getDatatypeScaleFactor

public static float getDatatypeScaleFactor(int datatype)

getDatatypeAddOffset

public static float getDatatypeAddOffset(int datatype)

getMessageTypeName

public static String getMessageTypeName(int code)

getRadialStatusName

public static String getRadialStatusName(int code)

getVolumeCoveragePatternName

public static String getVolumeCoveragePatternName(int code)

getDate

public static Date getDate(int julianDays,
                           int msecs)

factory

public static Cinrad2Record factory(RandomAccessFile din,
                                    int record)
                             throws IOException
Throws:
IOException

convertunsignedByte2Short

public short convertunsignedByte2Short(byte b)

bytesToInt

public static int bytesToInt(byte[] bytes,
                             boolean swapBytes)

bytesToShort

public static int bytesToShort(byte[] bytes,
                               boolean swapBytes)

dumpMessage

public void dumpMessage(PrintStream out,
                        Date d)

dump

public void dump(PrintStream out)

dump2

public void dump2(PrintStream out)

checkOk

public boolean checkOk()

getAzimuth

public float getAzimuth()
Get the azimuth in degrees

Returns:
azimuth angle in degrees 0 = true north, 90 = east

getElevation

public float getElevation()
Get the elevation angle in degrees

Returns:
elevation angle in degrees 0 = parellel to pedestal base, 90 = perpendicular

getGateSize

public int getGateSize(int datatype)
This method returns the gate size in meters


getGateStart

public int getGateStart(int datatype)
This method returns the starting gate in meters


getGateCount

public int getGateCount(int datatype)
This method returns the number of gates


getDate

public Date getDate()

readData

public void readData(RandomAccessFile raf,
                     int datatype,
                     Range gateRange,
                     IndexIterator ii)
              throws IOException
Read data from this record.

Parameters:
raf - read from this file
datatype - which data type we want
gateRange - handles the possible subset of data to return
ii - put the data here
Throws:
IOException

toString

public String toString()
Instances which have same content are equal. public boolean equals(Object oo) { if (this == oo) return true; if ( !(oo instanceof Cinrad2Record)) return false; return hashCode() == oo.hashCode(); } /** Override Object.hashCode() to implement equals. * public int hashCode() { if (hashCode == 0) { int result = 17; result = 37*result + elevation_num; //result = 37*result + cut; //result = 37*result + datatype; hashCode = result; } return hashCode; } private volatile int hashCode = 0;

Overrides:
toString in class Object


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.