37#include <drain/image/AccumulationConverter.h>
40#include "QuantityMap.h"
63 dataODIM(defaultDataODIM), qualityODIM(defaultQualityODIM) {
69 dataODIM(dataODIM), qualityODIM(defaultQualityODIM) {
76 dataODIM(dataODIM), qualityODIM(qualityODIM) {
81 dataODIM(defaultDataODIM), qualityODIM(defaultQualityODIM) {
82 defaultDataODIM = converter.dataODIM;
83 defaultQualityODIM = converter.qualityODIM;
92 bool isDataEncodingSet()
const override {
93 return dataODIM.isSet();
97 bool isQualityEncodingSet()
const override {
98 return qualityODIM.isSet();
104 return dataODIM.undetect;
110 return dataODIM.nodata;
116 return qualityODIM.nodata;
121 bool decode(
double & value)
const override;
125 bool decode(
double & value,
double & weight)
const override;
132 void encode(
double & value,
double & weight)
const override;
138 void encodeDiff(
double & diff)
const override;
180 const ODIM & dataODIM;
181 const ODIM & qualityODIM;
183 ODIM defaultDataODIM;
184 ODIM defaultQualityODIM;
214std::ostream & operator<<(std::ostream & ostr,
const DataCoder & coder) {
215 ostr << coder.
getName() <<
':' << coder.getParameters() <<
'\n';
217 ostr <<
"\t data: " <<
EncodingODIM(coder.dataODIM) <<
'\n';
218 ostr <<
"\t q: " <<
EncodingODIM(coder.qualityODIM) <<
'\n';
Something which has a name, a description and possibly some parameters of varying type.
Definition BeanLike.h:58
virtual const std::string & getName() const
Return the name of an instance.
Definition BeanLike.h:80
Converts ODIM encoded data (with markers) to natural values and backwards.
Definition DataCoder.h:58
void init()
Creates a naive quality field: data=1.0, undetect/nodata=0.0.
Definition DataCoder.cpp:48
static double undetectQualityCoeff
Quality, relative to data quality, applied in locations marked with undetect .
Definition DataCoder.h:178
DataCoder(const ODIM &dataODIM)
Without quality (with impicit quality)
Definition DataCoder.h:68
virtual bool decode(double &value) const override
Converts storage data containing marker codes etc to natural scale.
Definition DataCoder.cpp:93
virtual void encode(double &value, double &weight) const override
Converts natural-scale data to storage data containing marker codes etc.
Definition DataCoder.cpp:134
double undetectValue
Physical value applied in locations marked with undetect . This should be compatible with the quantit...
Definition DataCoder.h:173
virtual double getNoDataMarker() const override
NEW, untested...
Definition DataCoder.h:109
virtual void encodeWeight(double &weight) const override
Converts natural-scale data to storage data, applying marker codes if needed.
Definition DataCoder.cpp:151
double minCodeValue
In extraction (encoding), values lower than this value will be marked undetect .
Definition DataCoder.h:201
virtual void encodeDiff(double &diff) const override
When using unsigned types, encoding typically requires adding a positive bias and scaling the data.
Definition DataCoder.cpp:156
double detectionThreshold
A physical value greater than undetectValue. In \i encoding, lower values will be marked undetect ....
Definition DataCoder.h:208
virtual double getWeightNoDataMarker() const override
NEW, untested...
Definition DataCoder.h:115
virtual double getNoReadingMarker() const override
Returns a marker value which indicates that although data has been measured, it is not within require...
Definition DataCoder.h:103
double defaultQuality
If source data has no quality field, this value is applied for (detected) data.
Definition DataCoder.h:165
Structure for data storage type, scaling and marker codes. Does not contain quantity.
Definition EncodingODIM.h:70
ODIM metadata (quantity, gain, offset, undetect, nodata, date, time)
Definition ODIM.h:79
Registry for regular quantities appearing in weather radar.
Definition QuantityMap.h:67
bool setQuantityDefaults(EncodingODIM &dst, const std::string &quantity, const std::string &values="") const
Sets default values of given quantity without assigning the quantity. Optionally overrides with user ...
Definition QuantityMap.cpp:207
Namespace for images and image processing tools.
Definition AccumulationArray.cpp:45
Definition DataSelector.cpp:44
QuantityMap & getQuantityMap()
Definition QuantityMap.cpp:279
Converts raw data to values appropriate for accumulation.
Definition AccumulationConverter.h:50