Checks tracks of mobile weather stations, rejecting observations inconsistent with the rest of the track.
More...
|
| TrackCheck (ioda::ObsSpace &obsdb, const Parameters_ ¶meters, std::shared_ptr< ioda::ObsDataVector< int > > flags, std::shared_ptr< ioda::ObsDataVector< float > > obserr) |
|
| ~TrackCheck () override |
|
| FilterBase (ioda::ObsSpace &, const FilterParametersBaseWithAbstractAction ¶meters, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >) |
|
| FilterBase (ioda::ObsSpace &, const eckit::Configuration &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >) |
|
| ~FilterBase () |
|
| ObsProcessorBase (ioda::ObsSpace &, bool deferToPost, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >) |
|
| ~ObsProcessorBase () |
|
void | preProcess () override |
|
void | priorFilter (const GeoVaLs &) override |
|
void | postFilter (const ioda::ObsVector &, const ioda::ObsVector &, const ObsDiagnostics &) override |
|
oops::Variables | requiredVars () const override |
|
oops::Variables | requiredHdiagnostics () const override |
|
|
ObsGroupPressureLocationTime | collectObsPressuresLocationsTimes (const ObsAccessor &obsAccessor) const |
|
void | flagRejectedTrackObservations (std::vector< size_t >::const_iterator trackObsIndicesBegin, std::vector< size_t >::const_iterator trackObsIndicesEnd, const std::vector< size_t > &validObsIds, const std::vector< TrackObservation > &trackObservations, std::vector< bool > &isRejected) const |
|
void | print (std::ostream &) const override |
|
void | applyFilter (const std::vector< bool > &, const Variables &, std::vector< std::vector< bool >> &) const override |
|
int | qcFlag () const override |
|
ObsAccessor | createObsAccessor () const |
|
PiecewiseLinearInterpolation | makeMaxSpeedByPressureInterpolation () const |
| Returns an interpolator mapping pressures (in Pa) to maximum accepted speeds (in km/s). More...
|
|
void | identifyRejectedObservationsInTrack (std::vector< size_t >::const_iterator trackObsIndicesBegin, std::vector< size_t >::const_iterator trackObsIndicesEnd, const std::vector< size_t > &validObsIds, const ObsGroupPressureLocationTime &obsPressureLoc, const PiecewiseLinearInterpolation &maxSpeedByPressure, std::vector< bool > &isRejected) const |
|
std::vector< TrackObservation > | collectTrackObservations (std::vector< size_t >::const_iterator trackObsIndicesBegin, std::vector< size_t >::const_iterator trackObsIndicesEnd, const std::vector< size_t > &validObsIds, const ObsGroupPressureLocationTime &obsPressureLoc) const |
|
TrackCheckUtils::SweepResult | sweepOverObservations (std::vector< TrackObservation > &trackObservations, const PiecewiseLinearInterpolation &maxValidSpeedAtPressure, std::vector< float > &workspace) const |
|
Checks tracks of mobile weather stations, rejecting observations inconsistent with the rest of the track.
Each track is checked separately. The algorithm performs a series of sweeps over the observations from each track. For each observation, multiple estimates of the instantaneous speed and ascent/descent rate are obtained by comparing the reported position with the positions reported during a number a nearby (earlier and later) observations that haven't been rejected in previous sweeps. An observation is rejected if a certain fraction of these estimates lie outside the valid range. Sweeps continue until one of them fails to reject any observations, i.e. the set of retained observations is self-consistent.
See TrackCheckParameters for the documentation of this filter's parameters.
Note: this filter was originally written with aircraft observations in mind. However, it can potentially be useful also for other observation types.
Definition at line 54 of file src/ufo/filters/TrackCheck.h.