vol::MultiDopplerVolumeCreator Class Reference

Inheritance diagram for vol::MultiDopplerVolumeCreator:

vol::BlendedVolumeCreator vol::VolumeCreator vol::MultiDopplerUVWVolumeCreator List of all members.

Detailed Description

This is a volume creator specially created for blending velocity data.

It does a multi-radar analysis that is a variation of the iterative method described in Kessinger, Ray and Hane,1987: The Oklahoma Squall Line of 19 May 1977. Part I: A Multiple Doppler Analysis of Convective and Stratiform Structure

Because the terminal velocity is required, this volume creator needs to be attached to an index that provides some reflectivity variance.

Author:
Lakshman
Version:
Id
vol_MultiDopplerVolumeCreator.h,v 1.5 2005/01/26 22:20:33 lakshman Exp


Public Types

typedef std::vector< Observation > ObsList
typedef std::vector< const
Observation * > 
ObservationList

Public Member Functions

 MultiDopplerVolumeCreator (const GridSpecification &gridSpec, const std::string &cacheDir, const code::TimeInterval &blendingInterval)
virtual ~MultiDopplerVolumeCreator ()
virtual void actionPerformed (const code::ActionEvent *e)
virtual std::vector< code::LatLonHeightGrid > getOtherOutputs () const
 Make sure to call this method after calling getCurrentGrid.
virtual std::vector< code::SmartPtr<
code::DataType > > 
getNonLatLonGridOutputs () const
 VolumeCreators like the VADVolumeCreator may not return LatLonGrid.
virtual code::TimeInterval getDataExpiryInterval () const
 How long should data be kept?
void setToUseConstantWindField (bool flag)
void setToIgnoreClearAir (bool flag)
void setCalibrationDir (const std::string &dir)
 An empty string indicates that no calibration need be done.
short getBestRange (size_t x, size_t y, size_t z) const
void updateGridWithData (const RadialSetLookup &, const code::DataConverter::RadialSetLookup &, const code::RadialSet &, const code::Time &timeOfNewData)
 subclasses should provide implementation of this method.
void updateGridWithData (const code::LatLonGrid &, const code::Time &timeOfNewData, int ht)
virtual void finalizeGrid ()
 If any subclass data stores need to do an age off or some such thing to clean out the grid, they can do it here.
virtual void setGridValueToBlendedValue (const BlendMap &dataValues, code::LatLonHeightGrid &output)=0
 subclasses should implement this method to do their blending.
const code::LatLonHeightGrid & getCurrentGrid ()
 returns the result, computing it if necessary.
void process (code::RadialSet &rs)
 Update grid based on radial set data.
void process (code::LatLonGrid &llg)
 Update grid based on lat-lon data.
void process (code::LatLonHeightGrid &llh)
 Update grid based on lat-lon data.
int getNumLat () const
int getNumLon () const
int getNumHt () const
const GridSpecification & getGridSpec () const
void setScaleCorrectionOn (bool flag)
 If this is turned on, we will correct for difference in scale between radar data and the output grid by averaging radar gates.
void setPrecision (float prec)
 Pass a positive value to set a round-off precision.
float roundOff (float val)
 Subclasses should remember to call roundoff on their final values.
virtual bool isReady () const
 over-ride this to tell clients that we are incomplete, and that functions such as getCurrentGrid() should not be called.
float getFractionAvailable (size_t htno) const
 What fraction of the pixels at this height are not DataUnavailable? Values may either be MissingData or a valid value.
void setAzimuthalAccuracy (float acc)
 How accurate should the azimuths be? By default, this is 0.1.
int getStoredAzimuthToAzNo () const
 Get the scaling factor based on azimuthal accuracy.
bool isExpired (const code::Time &dataTime) const
 Is data at this time expired already?

Static Public Member Functions

static void setReflectivityType (const std::string &refType)
 Change the reflectivity type from "MergedReflectivityComposite".

Protected Member Functions

virtual void setGridValueToBlendedValue (const BlendMap &dataValues, code::LatLonHeightGrid &output)
 subclasses should implement this method to do their blending.
void blendUV (const ObservationList &points, int i, int j, int k)
int getClosestLevel (const code::Length &inht, float tolerance_meters=0.1)
float getDegreesPerKmLat () const
float getDegreesPerKmLon () const
float getKmPerPixelLat () const
float getKmPerPixelLon () const
code::LatLonHeightGrid getDimensionedGrid (const GridSpecification &)
void setTimeOfGrid (const code::Time &productTime)
virtual code::RadialSet smoothAlongRadials (const code::RadialSet &rs, int half_size)

Protected Attributes

code::LatLonHeightGrid u
code::LatLonHeightGrid v
std::vector< float > height
code::LatLonHeightGrid refGrid
TerminalVelocity terminalVelocity
code::LatLonHeightGrid myCurrentGrid
TimeUpdater myAgeOffTime

Static Protected Attributes

static std::vector< std::string > myReflectivityType

Friends

class BlendedVolumeCreator::BlendMap

Classes

struct  MultiDopplerData
class  TerminalVelocity
 Class that precomputes terminal velocity for a range of reflectivities. More...


Member Typedef Documentation

typedef std::vector< const Observation* > vol::BlendedVolumeCreator::ObservationList [inherited]

typedef std::vector< Observation > vol::BlendedVolumeCreator::ObsList [inherited]


Constructor & Destructor Documentation

vol::MultiDopplerVolumeCreator::MultiDopplerVolumeCreator ( const GridSpecification &  gridSpec,
const std::string &  cacheDir,
const code::TimeInterval &  blendingInterval 
)

virtual vol::MultiDopplerVolumeCreator::~MultiDopplerVolumeCreator (  )  [inline, virtual]


Member Function Documentation

virtual void vol::MultiDopplerVolumeCreator::actionPerformed ( const code::ActionEvent *  e  )  [virtual]

Reimplemented from vol::BlendedVolumeCreator.

void vol::MultiDopplerVolumeCreator::blendUV ( const ObservationList points,
int  i,
int  j,
int  k 
) [protected]

Reimplemented in vol::MultiDopplerUVWVolumeCreator.

virtual void vol::BlendedVolumeCreator::finalizeGrid (  )  [virtual, inherited]

If any subclass data stores need to do an age off or some such thing to clean out the grid, they can do it here.

Implements vol::VolumeCreator.

short vol::BlendedVolumeCreator::getBestRange ( size_t  x,
size_t  y,
size_t  z 
) const [inline, inherited]

int vol::VolumeCreator::getClosestLevel ( const code::Length &  inht,
float  tolerance_meters = 0.1 
) [protected, inherited]

Returns:
closest level, -1 if nothing within tolerance

const code::LatLonHeightGrid& vol::VolumeCreator::getCurrentGrid (  )  [inherited]

returns the result, computing it if necessary.

virtual code::TimeInterval vol::BlendedVolumeCreator::getDataExpiryInterval (  )  const [inline, virtual, inherited]

How long should data be kept?

Implements vol::VolumeCreator.

float vol::VolumeCreator::getDegreesPerKmLat (  )  const [inline, protected, inherited]

float vol::VolumeCreator::getDegreesPerKmLon (  )  const [inline, protected, inherited]

code::LatLonHeightGrid vol::VolumeCreator::getDimensionedGrid ( const GridSpecification  )  [protected, inherited]

float vol::VolumeCreator::getFractionAvailable ( size_t  htno  )  const [inherited]

What fraction of the pixels at this height are not DataUnavailable? Values may either be MissingData or a valid value.

const GridSpecification& vol::VolumeCreator::getGridSpec (  )  const [inline, inherited]

float vol::VolumeCreator::getKmPerPixelLat (  )  const [inline, protected, inherited]

float vol::VolumeCreator::getKmPerPixelLon (  )  const [inline, protected, inherited]

virtual std::vector< code::SmartPtr<code::DataType> > vol::MultiDopplerVolumeCreator::getNonLatLonGridOutputs (  )  const [virtual]

VolumeCreators like the VADVolumeCreator may not return LatLonGrid.

Call this method, but there is no need to invokve VolumeGridAlgorithm on these outputs.

Reimplemented from vol::BlendedVolumeCreator.

int vol::VolumeCreator::getNumHt (  )  const [inline, inherited]

int vol::VolumeCreator::getNumLat (  )  const [inline, inherited]

int vol::VolumeCreator::getNumLon (  )  const [inline, inherited]

virtual std::vector<code::LatLonHeightGrid> vol::MultiDopplerVolumeCreator::getOtherOutputs (  )  const [virtual]

Make sure to call this method after calling getCurrentGrid.

Reimplemented from vol::VolumeCreator.

Reimplemented in vol::MultiDopplerUVWVolumeCreator.

int vol::VolumeCreator::getStoredAzimuthToAzNo (  )  const [inline, inherited]

Get the scaling factor based on azimuthal accuracy.

bool vol::VolumeCreator::isExpired ( const code::Time &  dataTime  )  const [inherited]

Is data at this time expired already?

virtual bool vol::VolumeCreator::isReady (  )  const [inline, virtual, inherited]

over-ride this to tell clients that we are incomplete, and that functions such as getCurrentGrid() should not be called.

Reimplemented in vol::AlreadyMergedVolumeCreator.

void vol::VolumeCreator::process ( code::LatLonHeightGrid &  llh  )  [inherited]

Update grid based on lat-lon data.

Does not change the lat-lon.

void vol::VolumeCreator::process ( code::LatLonGrid &  llg  )  [inherited]

Update grid based on lat-lon data.

Does not change the lat-lon.

Reimplemented in vol::AlreadyMergedVolumeCreator.

void vol::VolumeCreator::process ( code::RadialSet &  rs  )  [inherited]

Update grid based on radial set data.

Does not change the radial set.

float vol::VolumeCreator::roundOff ( float  val  )  [inline, inherited]

Subclasses should remember to call roundoff on their final values.

The value passed in should not be missing, dataunavailable, etc.

void vol::VolumeCreator::setAzimuthalAccuracy ( float  acc  )  [inherited]

How accurate should the azimuths be? By default, this is 0.1.

Using lower values, such as 0.05 will result in thin fine lines where the beams are spaced further apart than 0.05 degrees.

void vol::BlendedVolumeCreator::setCalibrationDir ( const std::string &  dir  )  [inline, inherited]

An empty string indicates that no calibration need be done.

virtual void vol::BlendedVolumeCreator::setGridValueToBlendedValue ( const BlendMap dataValues,
code::LatLonHeightGrid &  output 
) [pure virtual, inherited]

subclasses should implement this method to do their blending.

They should use the dataValues variable to get the Blend points and put their results into the output CurrentGrid.

virtual void vol::MultiDopplerVolumeCreator::setGridValueToBlendedValue ( const BlendMap &  dataValues,
code::LatLonHeightGrid &  output 
) [protected, virtual]

subclasses should implement this method to do their blending.

They should use the dataValues variable to get the Blend points and put their results into the output CurrentGrid.

Reimplemented in vol::MultiDopplerUVWVolumeCreator.

void vol::VolumeCreator::setPrecision ( float  prec  )  [inline, inherited]

Pass a positive value to set a round-off precision.

For example, setting a precision of 0.5 means that output values in the merger grid (not derived quantities) will be rounded off to the nearest 0.5.

By default, precision is negative i.e. no rounding off is done.

static void vol::MultiDopplerVolumeCreator::setReflectivityType ( const std::string &  refType  )  [static]

Change the reflectivity type from "MergedReflectivityComposite".

void vol::VolumeCreator::setScaleCorrectionOn ( bool  flag  )  [inline, inherited]

If this is turned on, we will correct for difference in scale between radar data and the output grid by averaging radar gates.

void vol::VolumeCreator::setTimeOfGrid ( const code::Time &  productTime  )  [protected, inherited]

void vol::BlendedVolumeCreator::setToIgnoreClearAir ( bool  flag  )  [inline, inherited]

void vol::BlendedVolumeCreator::setToUseConstantWindField ( bool  flag  )  [inline, inherited]

virtual code::RadialSet vol::VolumeCreator::smoothAlongRadials ( const code::RadialSet &  rs,
int  half_size 
) [protected, virtual, inherited]

void vol::BlendedVolumeCreator::updateGridWithData ( const code::LatLonGrid &  ,
const code::Time &  timeOfNewData,
int  ht 
) [virtual, inherited]

Reimplemented from vol::VolumeCreator.

void vol::BlendedVolumeCreator::updateGridWithData ( const RadialSetLookup ,
const code::DataConverter::RadialSetLookup &  ,
const code::RadialSet &  ,
const code::Time &  timeOfNewData 
) [virtual, inherited]

subclasses should provide implementation of this method.

Implements vol::VolumeCreator.


Friends And Related Function Documentation

friend class BlendedVolumeCreator::BlendMap [friend, inherited]


Member Data Documentation

std::vector<float> vol::MultiDopplerVolumeCreator::height [protected]

TimeUpdater vol::VolumeCreator::myAgeOffTime [protected, inherited]

code::LatLonHeightGrid vol::VolumeCreator::myCurrentGrid [protected, inherited]

std::vector<std::string> vol::MultiDopplerVolumeCreator::myReflectivityType [static, protected]

code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::refGrid [protected]

TerminalVelocity vol::MultiDopplerVolumeCreator::terminalVelocity [protected]

code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::u [protected]

code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::v [protected]


Generated on Fri Jan 9 15:22:44 2009 for WDSS-IIw2algs by  doxygen 1.4.7