Class RAOB

All Implemented Interfaces:
Serializable, PropertiedBean

public final class RAOB extends InvisiblePropertiedBean
Provides support for soundings from RAdiosonde OBservations.

This class is a JavaBean.

Instances are modifiable.

Version:
$Id: RAOB.java,v 1.32 2006/12/01 20:42:43 jeffmc Exp $
Author:
Steven R. Emmerson
See Also:
  • Constructor Details

  • Method Details

    • setMandatoryPressureProfile

      public void setMandatoryPressureProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the mandatory-pressure-profile property.
      Parameters:
      field - Mandatory pressure profile: pressure -> (temperature, dew point, wind, geopotential height). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • setMandatoryPressureProfile

      public void setMandatoryPressureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions, Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes) throws SetException, RemoteException, VisADException, PropertyVetoException
      Set the mandatory pressure profile for this RAOB. A mandatory pressure profile consists of a set of temperatures, dewpoints, wind speeds, wind directions and geopotential heights at specific pressures.
      Parameters:
      pressureUnit - Unit of pressure values
      pressures - array of pressure values
      temperatureUnit - Unit of temperature values
      temperatures - array of temperature values
      dewPointUnit - Unit of dewpoint values
      dewPoints - Array of dewpoint values
      speedUnit - Unit of wind speed values
      speeds - Array of wind speed values
      directionUnit - Unit of wind speed values
      directions - Array of wind direction values
      geopotentialAltitudeUnit - Unit of height values
      geopotentialAltitudes - Array of height values
      Throws:
      PropertyVetoException - couldn't set the property
      RemoteException - Java RMI error
      SetException - bad pressure values
      VisADException - Couldn't create a VisAD object
    • getMandatoryPressureProfile

      public Field getMandatoryPressureProfile()
      Gets the mandatory-pressure-profile property.
      Returns:
      The mandatory pressure profile: pressure -> (temperature, dew point, wind, geopotential height). Won't be null but may be empty.
    • setSignificantTemperatureProfile

      public void setSignificantTemperatureProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the significant-temperature-profile property.
      Parameters:
      field - Significant temperature profile: pressure -> (temperature, dew point). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • setSignificantTemperatureProfile

      public void setSignificantTemperatureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints) throws VisADException, RemoteException, PropertyVetoException
      Set the significant temperature profile for this RAOB. A significant temperature profile consists of a set of temperatures and dewpoints at certain pressures.
      Parameters:
      pressureUnit - Unit of pressure values
      pressures - Array of pressure values
      temperatureUnit - Unit of temperature values
      temperatures - Array of temperature values
      dewPointUnit - Unit of dewpoint values
      dewPoints - Array of dewpoint values
      Throws:
      PropertyVetoException - couldn't set the property
      RemoteException - Java RMI problem
      VisADException - VisAD problem
    • getSignificantTemperatureProfile

      public Field getSignificantTemperatureProfile()
      Gets the significant-temperature-profile property.
      Returns:
      The significant temperature profile: pressure -> (temperature, dew point). Won't be null but may be empty.
    • setTropopauseProfile

      public void setTropopauseProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the tropopause-profile property.
      Parameters:
      field - Tropopause profile: pressure -> (temperature, dew point, wind). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • getTropopauseProfile

      public Field getTropopauseProfile()
      Gets the tropopause-profile property.
      Returns:
      The tropopause profile: pressure -> (temperature, dew point, wind). Won't be null but may be empty.
    • setMaximumWindProfile

      public void setMaximumWindProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the maximum-wind-profile property.
      Parameters:
      field - Maximum wind profile: pressure -> (speed, direction). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • setMaximumWindProfile

      public void setMaximumWindProfile(Unit pressureUnit, float[] pressures, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException, PropertyVetoException
      Set the maximum wind profile for this RAOB. The maximum wind profile consists of the wind speed and direction at the maximum wind pressure level
      Parameters:
      pressureUnit - Unit of pressure values
      pressures - Array of pressures
      speedUnit - Unit of wind speed values
      speeds - Array of wind speed values
      directionUnit - Unit of wind direction values
      directions - Array of wind direction values
      Throws:
      PropertyVetoException - couldn't set the property
      RemoteException - Java RMI problem
      VisADException - VisAD problem
    • getMaximumWindProfile

      public Field getMaximumWindProfile()
      Gets the maximum-wind-profile property.
      Returns:
      The maximum wind profile: pressure -> (speed, direction). Won't be null but may be empty.
    • setMandatoryWindProfile

      public void setMandatoryWindProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the mandatory-wind-profile property.
      Parameters:
      field - Mandatory wind profile: geopotentialAltitude -> (speed, direction). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • setMandatoryWindProfile

      public void setMandatoryWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException, PropertyVetoException
      Set the mandatory wind profile. A mandatory wind profile consists of the wind speed and direction at specific geopotential heights
      Parameters:
      geopotentialAltitudeUnit - Unit for heights
      geopotentialAltitudes - Array of height values
      speedUnit - Unit for wind speed values
      speeds - Array of wind speed values
      directionUnit - Unit of wind direction values
      directions - Array of wind direction values
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      RemoteException - Java RMI exception.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
    • getMandatoryWindProfile

      public Field getMandatoryWindProfile()
      Gets the mandatory-wind-profile property.
      Returns:
      The mandatory wind profile: geopotentialAltitude -> (speed, direction). Won't be null but may be empty.
    • setSignificantWindProfile

      public void setSignificantWindProfile(Field field) throws VisADException, RemoteException, PropertyVetoException
      Sets the significant-wind-profile property.
      Parameters:
      field - Significant wind profile: geopotentialAltitude -> (speed, direction). May be null.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • setSignificantWindProfile

      public void setSignificantWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException, PropertyVetoException
      Set the significant wind profiler for this RAOB. A significant wind profile consists of wind speed and direction at significant height levels.
      Parameters:
      geopotentialAltitudeUnit - Unit of height values
      geopotentialAltitudes - Array of height values
      speedUnit - Unit of wind speed values
      speeds - Array of wind speed values
      directionUnit - Unit of wind direction values
      directions - Array of wind direction values
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The profile remains unchanged.
      RemoteException - Java RMI exception.
    • getSignificantWindProfile

      public Field getSignificantWindProfile()
      Gets the significant-wind-profile property.
      Returns:
      The significant wind profile: geopotentialAltitude -> (speed, direction). Won't be null but may be empty.
    • setGravity

      public void setGravity(Real gravity) throws VisADException, RemoteException, PropertyVetoException
      Sets the gravity property.
      Parameters:
      gravity - The new value for gravity.
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object. The data remains unchanged.
      RemoteException - Java RMI exception.
    • getGravity

      public Real getGravity()
      Gets the gravity value.
      Returns:
      the gravity value
    • getPressureCoordinateSystem

      public CoordinateSystem getPressureCoordinateSystem()
      Gets the Pressure invalid input: '<'-> Altitude coordinate system transformation property.
      Returns:
      The Pressure invalid input: '<'-> Altitude coordinate system transformation.
    • getGeopotentialAltitudeCoordinateSystem

      public CoordinateSystem getGeopotentialAltitudeCoordinateSystem()
      Gets the GeopotentialAltitude invalid input: '<'-> Altitude coordinate system transformation property.
      Returns:
      The GeopotentialAltitude invalid input: '<'-> Altitude coordinate system transformation.
    • getTemperatureProfile

      public FlatField getTemperatureProfile()
      Gets the current temperature profile property. The MathType of the returned value is InSituAirTemperatureProfile.
      Returns:
      The temperature profile.
    • getDewPointProfile

      public FlatField getDewPointProfile()
      Gets the current dew-point profile property. The MathType of the return value is DewPointProfile.
      Returns:
      The dew-point profile.
    • getWindProfile

      public FlatField getWindProfile()
      Gets the current wind profile property.
      Returns:
      The wind profile.
    • getPossibleLinks

      public LinkSet getPossibleLinks()
      Gets the set of all possible links between input profiles and output profiles.
      Returns:
      The set of all possible links between input profiles and output profiles. Each element of the set is a Link. The set is unmodifiable.
    • getActiveLinks

      public LinkSet getActiveLinks()
      Gets the active links between input profiles and output profiles.
      Returns:
      The active links between input profiles and output profiles. Each element of the set is a Link. The set is unmodifiable.
    • setActiveLinks

      public void setActiveLinks(LinkSet links) throws VisADException, RemoteException, PropertyVetoException
      Sets the active links between input profiles and output profiles.
      Parameters:
      links - The active links between input profiles and output profiles. Each element of the set shall also be an element of getPossibleLinks().
      Throws:
      PropertyVetoException - A registered listener objected to the change, which was not committed.
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • adjustData

      protected static void adjustData(float[][] domainValues, float[][] rangeValues, boolean increasing)
      Adjusts outside data.
      Parameters:
      domainValues - The domain values. The array needn't be sorted and may contain NaN-s, infinities, and duplicates.
      rangeValues - The range values.
      increasing - If true, then sort by increasing domain value; otherwise, sort by decreasing domain value.
    • newMandatoryPressureProfile

      public static RAOB.MandatoryPressureProfile newMandatoryPressureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions, Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes) throws SetException, RemoteException, VisADException
      Creates an instance of a MandatoryPressureProfile.
      Parameters:
      pressureUnit - The unit of the pressure values.
      pressures - The pressure values in units of pressureUnit. The array needn't be sorted and may contain NaN-s and infinities. The array is unmodified.
      temperatureUnit - The unit for the in situ temperature values.
      temperatures - The in situ temperature values in units of temperatureUnit corresponding to the pressure values. The array is unmodified.
      dewPointUnit - The unit for the dew point temperature values.
      dewPoints - The dew point temperature values in units of dewPointUnit corresponding to the pressure values. The array is unmodified.
      speedUnit - The unit of wind speed.
      speeds - The speeds of the wind in units of speedUnit corresponding to the pressure values. The array is unmodified.
      directionUnit - The unit of meteorological direction.
      directions - The directions of the wind in units of directionUnit corresponding to the pressure values. The array is unmodified.
      geopotentialAltitudeUnit - The unit of the geopotential altitude values.
      geopotentialAltitudes - The geopotential altitude values in units of geopotentialAltitudeUnit corresponding to the pressure values. The array is unmodified.
      Returns:
      The mandatory pressure profile
      Throws:
      SetException - The pressure array has no valid data.
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newSignificantTemperatureProfile

      public static RAOB.SignificantTemperatureProfile newSignificantTemperatureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints) throws VisADException, RemoteException
      Creates an instance of a SignificantTemperatureProfile.
      Parameters:
      pressureUnit - The unit of the pressure values.
      pressures - The pressure values in units of pressureUnit. The array needn't be sorted and may contain NaN-s and infinities.
      temperatureUnit - The unit for the in situ temperature values.
      temperatures - The in situ temperature values in units of temperatureUnit corresponding to the pressure values.
      dewPointUnit - The unit for the dew point temperature values.
      dewPoints - The dew point temperature values in units of dewPointUnit corresponding to the pressure values.
      Returns:
      A significant temperature profile
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newTropopauseProfile

      public static RAOB.TropopauseProfile newTropopauseProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException
      Creates an instance of a TropopauseProfile.
      Parameters:
      pressureUnit - The unit of the pressure values.
      pressures - The pressure values in units of pressureUnit. The array needn't be sorted and may contain NaN-s and infinities.
      temperatureUnit - The unit for the in situ temperature values.
      temperatures - The in situ temperature values in units of temperatureUnit corresponding to the pressure values.
      dewPointUnit - The unit for the dew point temperature values.
      dewPoints - The dew point temperature values in units of dewPointUnit corresponding to the pressure values.
      speedUnit - The unit of wind speed.
      speeds - The speeds of the wind in units of speedUnit corresponding to the pressure values.
      directionUnit - The unit of meteorological direction.
      directions - The directions of the wind in units of directionUnit corresponding to the pressure values.
      Returns:
      A tropopause profile based on the input
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newMaximumWindProfile

      public static RAOB.MaximumWindProfile newMaximumWindProfile(Unit pressureUnit, float[] pressures, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException
      Creates an instance of a MaximumWindProfile.
      Parameters:
      pressureUnit - The unit of the pressure values.
      pressures - The pressure values in units of pressureUnit. The array needn't be sorted and may contain NaN-s and infinities.
      speedUnit - The unit of wind speed.
      speeds - The speeds of the wind in units of speedUnit corresponding to the pressure values.
      directionUnit - The unit of meteorological direction.
      directions - The directions of the wind in units of directionUnit corresponding to the pressure values.
      Returns:
      A maximum wind profile based on the input
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newMandatoryWindProfile

      public static RAOB.MandatoryWindProfile newMandatoryWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException
      Creates an instance of a MandatoryWindProfile.
      Parameters:
      geopotentialAltitudeUnit - The unit of the geopotential altitude values.
      geopotentialAltitudes - The geopotential altitude values in units of geopotentialAltitudeUnit. The array needn't be sorted and may contain NaN-s and infinities.
      speedUnit - The unit of wind speed.
      speeds - The speeds of the wind in units of speedUnit corresponding to the geopotential altitude values.
      directionUnit - The unit of meteorological direction.
      directions - The directions of the wind in units of directionUnit corresponding to the geopotential altitude values.
      Returns:
      A MandatoryWindProfile based on the input
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newSignificantWindProfile

      public static RAOB.SignificantWindProfile newSignificantWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions) throws VisADException, RemoteException
      Creates an instance of a SignificantWindProfile.
      Parameters:
      geopotentialAltitudeUnit - The unit of the geopotential altitude values.
      geopotentialAltitudes - The geopotential altitude values in units of geopotentialAltitudeUnit. The array needn't be sorted and may contain NaN-s and infinities.
      speedUnit - The unit of wind speed.
      speeds - The speeds of the wind in units of speedUnit corresponding to the geopotential altitude values.
      directionUnit - The unit of meteorological direction.
      directions - The directions of the wind in units of directionUnit corresponding to the geopotential altitude values.
      Returns:
      A SignificantWindProfile based on the input
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.
    • newSet

      protected static Set newSet(RealTupleType type, float[] values, Unit unit) throws SetException, RemoteException, VisADException
      Creates a domain set.
      Parameters:
      type - The MathType of the set.
      values - The values of the set. Must have positive length.
      unit - The unit of the values.
      Returns:
      The VisAD Set corresponding to the input.
      Throws:
      SetException - The value array has non-positive length.
      VisADException - VisAD failure.
      RemoteException - Java RMI failure.
    • adjustCoordinateSystem

      protected boolean adjustCoordinateSystem(CoordinateSystem cs, Field oldField, Property property) throws VisADException, RemoteException
      Handles a change to a coordinate system transformation.
      Parameters:
      cs - new CoordinateSystem
      oldField - old field
      property - property to change
      Returns:
      true if successful
      Throws:
      RemoteException - Java RMI problem
      VisADException - VisAD problem
    • ensureDomain1D

      protected static FlatField ensureDomain1D(FlatField field, RealTupleType newDomainType, CoordinateSystem coordinateSystem) throws VisADException, RemoteException
      Ensures that a FlatField has a particular 1-D domain. Clones the FlatField only if necessary.
      Parameters:
      field - The FlatField to have the particular domain.
      newDomainType - The MathType of the particular domain for the FlatField to have. Coordinate conversions are done if and when necessary and possible.
      coordinateSystem - The CoordinateSystem which, together with newDomainType, form the basis for the desired domain.
      Returns:
      The FlatField with the particular domain.
      Throws:
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI failure.
    • ensureValidRange

      protected static FlatField ensureValidRange(FlatField flatField) throws FieldException, SetException, VisADException, RemoteException
      Ensures that the range of a 1-D FlatField is maximally valid by removing points with invalid data if necessary. The FlatField will be cloned only if necessary.
      Parameters:
      flatField - The FlatField to be validated. Its domain shall be a Gridded1DSet.
      Returns:
      The original FlatField if no modification was necessary; otherwise, if the original FlatField has some valid data, then a new FlatField with points with NaN-s or infinities in the range removed; otherwise, null if the FlatField contains no valid range data.
      Throws:
      FieldException - The domain of the FlatField isn't 1-D or the domain isn't a Gridded1DSet.
      SetException - A valid domain Set can't be created.
      VisADException - Couldn't create necessary VisAD object.
      RemoteException - Java RMI exception.