Package ucar.nc2.iosp.cinrad
Class Cinrad2Record
- java.lang.Object
-
- 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.
-
-
Field Summary
Fields Modifier and Type Field Description static byteBELOW_THRESHOLDucar.nc2.time.CalendarDatedateTime0ucar.nc2.time.CalendarDatedateTimeEstatic intDOPPLER_RESOLUTION_HIGH_CODEHigh doppler resolution codestatic intDOPPLER_RESOLUTION_LOW_CODELow doppler resolution codestatic floatHORIZONTAL_BEAM_WIDTHHorizontal beam widthbytemessage_typestatic byteMISSING_DATAInitialization 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 intREFLECTIVITYReflectivity moment identifierstatic intSPECTRUM_WIDTHSprectrum Width moment identifierucar.nc2.iosp.cinrad.Cinrad2Record.SweepInfo[]sweepInfostatic intVELOCITY_HIRadial Velocity moment identifierstatic intVELOCITY_LOWRadial Velocity moment identifier
-
Constructor Summary
Constructors Constructor Description Cinrad2Record(ucar.unidata.io.RandomAccessFile din, int record)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static intbytesToInt(byte[] bytes, boolean swapBytes)static intbytesToShort(byte[] bytes, boolean swapBytes)booleancheckOk()shortconvertunsignedByte2Short(byte b)voiddump(PrintStream out)voiddump2(PrintStream out)voiddumpMessage(PrintStream out, Date d)static Cinrad2Recordfactory(ucar.unidata.io.RandomAccessFile din, int record)intfindClosestIdx(int[] numbers, short myNumber)floatgetAzimuth()Get the azimuth in degreesstatic floatgetDatatypeAddOffset(int datatype)static StringgetDatatypeName(int datatype)static floatgetDatatypeScaleFactor(int datatype)static StringgetDatatypeUnits(int datatype)DategetDate()static DategetDate(int julianDays, int msecs)floatgetElevation()Get the elevation angle in degreesintgetGateCount(int datatype)This method returns the number of gatesintgetGateSize(int datatype)This method returns the gate size in metersintgetGateStart(int datatype)This method returns the starting gate in metersstatic StringgetMessageTypeName(int code)static StringgetRadialStatusName(int code)static StringgetVolumeCoveragePatternName(int code)voidreadCC20Header(ucar.unidata.io.RandomAccessFile din)voidreadCCHeader(ucar.unidata.io.RandomAccessFile din)voidreadData(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii)Read data from this record.voidreadData0(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii)voidreadData1(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii)voidreadSCHeader(ucar.unidata.io.RandomAccessFile din)StringtoString()Instances which have same content are equal.
-
-
-
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 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 } }
-
BELOW_THRESHOLD
public static final byte BELOW_THRESHOLD
- See Also:
- Constant Field Values
-
message_type
public byte message_type
-
dateTime0
public ucar.nc2.time.CalendarDate dateTime0
-
dateTimeE
public ucar.nc2.time.CalendarDate dateTimeE
-
sweepInfo
public ucar.nc2.iosp.cinrad.Cinrad2Record.SweepInfo[] sweepInfo
-
-
Constructor Detail
-
Cinrad2Record
public Cinrad2Record(ucar.unidata.io.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(ucar.unidata.io.RandomAccessFile din, int record) throws IOException
- Throws:
IOException
-
convertunsignedByte2Short
public short convertunsignedByte2Short(byte b)
-
readSCHeader
public void readSCHeader(ucar.unidata.io.RandomAccessFile din) throws IOException- Throws:
IOException
-
readCCHeader
public void readCCHeader(ucar.unidata.io.RandomAccessFile din) throws IOException- Throws:
IOException
-
readCC20Header
public void readCC20Header(ucar.unidata.io.RandomAccessFile din) throws IOException- Throws:
IOException
-
findClosestIdx
public int findClosestIdx(int[] numbers, short myNumber)
-
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(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii) throws IOExceptionRead data from this record.- Parameters:
raf- read from this filedatatype- which data type we wantgateRange- handles the possible subset of data to returnii- put the data here- Throws:
IOException
-
readData0
public void readData0(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii) throws IOException- Throws:
IOException
-
readData1
public void readData1(ucar.unidata.io.RandomAccessFile raf, int datatype, ucar.ma2.Range gateRange, ucar.ma2.IndexIterator ii) throws IOException- 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;
-
-