Inheritance diagram for vol::MultiDopplerVolumeCreator:
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.
Public Types | |
typedef std::vector< Observation > | ObsList |
typedef std::vector< const Observation * > | ObservationList |
Public Member Functions | |
MultiDopplerVolumeCreator (const code::TimeInterval &blendingInterval) | |
virtual void | init (const GridSpecification &gridSpec, const std::string &cacheDir, const std::string &outputDir, code::SmartPtr< code::IndexRecordNotifier > lb) |
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 | setToWriteWeightedObservations (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) |
void | updateGridWithData (const RawObservationStruct &) |
void | updateGridWithData (const WeightedObservationStruct &) |
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. | |
virtual void | computeWeightedValues (const BlendMap &dataValues, WeightedObservationStruct &allobs) |
Subclasses can optionally implement this method to provide a multi-stage tiled merger. | |
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. | |
void | process (RawObservationStruct &rawobs) |
Update grid based on raw observations. | |
void | process (WeightedObservationStruct &rawobs) |
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. | |
virtual bool | isExpired (const code::Time &dataTime) const |
Is data at this time expired already? | |
virtual void | init (const GridSpecification &gridSpec, const std::string &cacheDir, const std::string &outputDir, code::SmartPtr< code::IndexRecordNotifier > lb) |
the real constructor | |
float | getDegreesPerKmLat () const |
float | getDegreesPerKmLon () const |
float | getKmPerPixelLat () const |
float | getKmPerPixelLon () const |
Static Public Member Functions | |
static void | setReflectivityType (const std::string &refType) |
Change the reflectivity type from "MergedReflectivityComposite". | |
static short | estimate_valid_time (int vcp_no) |
static void | setWindFieldProductName (const std::string &s) |
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) |
virtual 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 |
std::string | myOutputDir |
code::SmartPtr< code::IndexRecordNotifier > | myLB |
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... |
typedef std::vector< const Observation* > vol::BlendedVolumeCreator::ObservationList [inherited] |
typedef std::vector< Observation > vol::BlendedVolumeCreator::ObsList [inherited] |
vol::MultiDopplerVolumeCreator::MultiDopplerVolumeCreator | ( | const code::TimeInterval & | blendingInterval | ) |
virtual vol::MultiDopplerVolumeCreator::~MultiDopplerVolumeCreator | ( | ) | [inline, virtual] |
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::computeWeightedValues | ( | const BlendMap & | dataValues, | |
WeightedObservationStruct & | allobs | |||
) | [virtual, inherited] |
Subclasses can optionally implement this method to provide a multi-stage tiled merger.
static short vol::BlendedVolumeCreator::estimate_valid_time | ( | int | vcp_no | ) | [static, inherited] |
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] |
const code::LatLonHeightGrid& vol::VolumeCreator::getCurrentGrid | ( | ) | [inherited] |
returns the result, computing it if necessary.
virtual code::TimeInterval vol::BlendedVolumeCreator::getDataExpiryInterval | ( | ) | const [inline, virtual, inherited] |
float vol::VolumeCreator::getDegreesPerKmLat | ( | ) | const [inline, inherited] |
float vol::VolumeCreator::getDegreesPerKmLon | ( | ) | const [inline, inherited] |
virtual code::LatLonHeightGrid vol::VolumeCreator::getDimensionedGrid | ( | const GridSpecification & | ) | [protected, virtual, 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, inherited] |
float vol::VolumeCreator::getKmPerPixelLon | ( | ) | const [inline, 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.
virtual void vol::VolumeCreator::init | ( | const GridSpecification & | gridSpec, | |
const std::string & | cacheDir, | |||
const std::string & | outputDir, | |||
code::SmartPtr< code::IndexRecordNotifier > | lb | |||
) | [virtual, inherited] |
the real constructor
virtual void vol::MultiDopplerVolumeCreator::init | ( | const GridSpecification & | gridSpec, | |
const std::string & | cacheDir, | |||
const std::string & | outputDir, | |||
code::SmartPtr< code::IndexRecordNotifier > | lb | |||
) | [virtual] |
Reimplemented in vol::MultiDopplerUVWVolumeCreator.
virtual bool vol::VolumeCreator::isExpired | ( | const code::Time & | dataTime | ) | const [virtual, inherited] |
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 | ( | WeightedObservationStruct & | rawobs | ) | [inherited] |
void vol::VolumeCreator::process | ( | RawObservationStruct & | rawobs | ) | [inherited] |
Update grid based on raw observations.
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] |
void vol::BlendedVolumeCreator::setToWriteWeightedObservations | ( | bool | flag | ) | [inline, inherited] |
static void vol::BlendedVolumeCreator::setWindFieldProductName | ( | const std::string & | s | ) | [static, inherited] |
virtual code::RadialSet vol::VolumeCreator::smoothAlongRadials | ( | const code::RadialSet & | rs, | |
int | half_size | |||
) | [protected, virtual, inherited] |
void vol::BlendedVolumeCreator::updateGridWithData | ( | const WeightedObservationStruct & | ) | [virtual, inherited] |
Reimplemented from vol::VolumeCreator.
void vol::BlendedVolumeCreator::updateGridWithData | ( | const RawObservationStruct & | ) | [virtual, inherited] |
Reimplemented from vol::VolumeCreator.
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] |
friend class BlendedVolumeCreator::BlendMap [friend, inherited] |
std::vector<float> vol::MultiDopplerVolumeCreator::height [protected] |
TimeUpdater vol::VolumeCreator::myAgeOffTime [protected, inherited] |
code::LatLonHeightGrid vol::VolumeCreator::myCurrentGrid [protected, inherited] |
code::SmartPtr<code::IndexRecordNotifier> vol::VolumeCreator::myLB [protected, inherited] |
std::string vol::VolumeCreator::myOutputDir [protected, inherited] |
std::vector<std::string> vol::MultiDopplerVolumeCreator::myReflectivityType [static, protected] |
code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::refGrid [protected] |
code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::u [protected] |
code::LatLonHeightGrid vol::MultiDopplerVolumeCreator::v [protected] |