ucar.unidata.data.sounding
Class RAOB

java.lang.Object
  extended by ucar.unidata.beans.InvisiblePropertiedBean
      extended by ucar.unidata.data.sounding.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:
Serialized Form

Nested Class Summary
protected static class RAOB.Contribution
          Class Contribution.
static class RAOB.MandatoryPressureProfile
          Provides support for mandatory pressure data.
static class RAOB.MandatoryWindProfile
          Provides support for mandatory wind data.
static class RAOB.MaximumWindProfile
          Provides support for maximum wind data.
static class RAOB.SignificantTemperatureProfile
          Provides support for significant temperature data.
static class RAOB.SignificantWindProfile
          Provides support for significant wind data.
static class RAOB.TropopauseProfile
          Provides support for tropopause data.
protected static class RAOB.ValidSegmentSet
          Provides support for run-length encoded sets of valid-data segments.
 
Constructor Summary
RAOB()
          Constructs from nothing.
 
Method Summary
protected  boolean adjustCoordinateSystem(CoordinateSystem cs, Field oldField, Property property)
          Handles a change to a coordinate system transformation.
protected static void adjustData(float[][] domainValues, float[][] rangeValues, boolean increasing)
          Adjusts outside data.
protected static FlatField ensureDomain1D(FlatField field, RealTupleType newDomainType, CoordinateSystem coordinateSystem)
          Ensures that a FlatField has a particular 1-D domain.
protected static FlatField ensureValidRange(FlatField flatField)
          Ensures that the range of a 1-D FlatField is maximally valid by removing points with invalid data if necessary.
 LinkSet getActiveLinks()
          Gets the active links between input profiles and output profiles.
 FlatField getDewPointProfile()
          Gets the current dew-point profile property.
 CoordinateSystem getGeopotentialAltitudeCoordinateSystem()
          Gets the GeopotentialAltitude <-> Altitude coordinate system transformation property.
 Real getGravity()
          Gets the gravity value.
 Field getMandatoryPressureProfile()
          Gets the mandatory-pressure-profile property.
 Field getMandatoryWindProfile()
          Gets the mandatory-wind-profile property.
 Field getMaximumWindProfile()
          Gets the maximum-wind-profile property.
 LinkSet getPossibleLinks()
          Gets the set of all possible links between input profiles and output profiles.
 CoordinateSystem getPressureCoordinateSystem()
          Gets the Pressure <-> Altitude coordinate system transformation property.
 Field getSignificantTemperatureProfile()
          Gets the significant-temperature-profile property.
 Field getSignificantWindProfile()
          Gets the significant-wind-profile property.
 FlatField getTemperatureProfile()
          Gets the current temperature profile property.
 Field getTropopauseProfile()
          Gets the tropopause-profile property.
 FlatField getWindProfile()
          Gets the current wind profile property.
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)
          Creates an instance of a MandatoryPressureProfile.
static RAOB.MandatoryWindProfile newMandatoryWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Creates an instance of a MandatoryWindProfile.
static RAOB.MaximumWindProfile newMaximumWindProfile(Unit pressureUnit, float[] pressures, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Creates an instance of a MaximumWindProfile.
protected static Set newSet(RealTupleType type, float[] values, Unit unit)
          Creates a domain set.
static RAOB.SignificantTemperatureProfile newSignificantTemperatureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints)
          Creates an instance of a SignificantTemperatureProfile.
static RAOB.SignificantWindProfile newSignificantWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Creates an instance of a SignificantWindProfile.
static RAOB.TropopauseProfile newTropopauseProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Creates an instance of a TropopauseProfile.
 void setActiveLinks(LinkSet links)
          Sets the active links between input profiles and output profiles.
 void setGravity(Real gravity)
          Sets the gravity property.
 void setMandatoryPressureProfile(Field field)
          Sets the mandatory-pressure-profile property.
 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)
          Set the mandatory pressure profile for this RAOB.
 void setMandatoryWindProfile(Field field)
          Sets the mandatory-wind-profile property.
 void setMandatoryWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Set the mandatory wind profile.
 void setMaximumWindProfile(Field field)
          Sets the maximum-wind-profile property.
 void setMaximumWindProfile(Unit pressureUnit, float[] pressures, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Set the maximum wind profile for this RAOB.
 void setSignificantTemperatureProfile(Field field)
          Sets the significant-temperature-profile property.
 void setSignificantTemperatureProfile(Unit pressureUnit, float[] pressures, Unit temperatureUnit, float[] temperatures, Unit dewPointUnit, float[] dewPoints)
          Set the significant temperature profile for this RAOB.
 void setSignificantWindProfile(Field field)
          Sets the significant-wind-profile property.
 void setSignificantWindProfile(Unit geopotentialAltitudeUnit, float[] geopotentialAltitudes, Unit speedUnit, float[] speeds, Unit directionUnit, float[] directions)
          Set the significant wind profiler for this RAOB.
 void setTropopauseProfile(Field field)
          Sets the tropopause-profile property.
 
Methods inherited from class ucar.unidata.beans.InvisiblePropertiedBean
addProperty, addPropertyChangeListener, addPropertyChangeListener, disablePropertyChangeEvents, enablePropertyChangeEvents, getTitle, removePropertyChangeListener, removePropertyChangeListener, setTitle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RAOB

public RAOB()
     throws VisADException
Constructs from nothing.

Throws:
VisADException - Couldn't create necessary VisAD object.
Method Detail

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 <-> Altitude coordinate system transformation property.

Returns:
The Pressure <-> Altitude coordinate system transformation.

getGeopotentialAltitudeCoordinateSystem

public CoordinateSystem getGeopotentialAltitudeCoordinateSystem()
Gets the GeopotentialAltitude <-> Altitude coordinate system transformation property.

Returns:
The GeopotentialAltitude <-> 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.