SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
intervalbinner.h
Go to the documentation of this file.
1
21#ifndef OPENSWMM_RENDER_INTERVALBINNER_H
22#define OPENSWMM_RENDER_INTERVALBINNER_H
23
24#include <QJsonObject>
25#include <QVector>
26
27namespace OpenSWMM::Render
28{
29
32enum class BinMethod : int
33{
34 EqualInterval = 0,
35 Quantile = 1,
36 Manual = 2,
37 // VS.3 — additional standard classification methods. Each still yields
38 // exactly (binCount-1) interior breaks so the GraduatedRenderer / legend
39 // contract is unchanged.
40 NaturalBreaks = 3,
41 StdDev = 4,
42 Logarithmic = 5,
43 Exponential = 6,
44};
45
49{
50public:
51 IntervalBinner() = default;
52
53 [[nodiscard]] BinMethod method() const { return m_method; }
54 void setMethod(BinMethod m) { m_method = m; }
55
56 [[nodiscard]] int binCount() const { return m_nBins; }
57 void setBinCount(int n) { m_nBins = (n < 1) ? 1 : n; }
58
59 [[nodiscard]] const QVector<double> &manualBreaks() const { return m_manualBreaks; }
60 void setManualBreaks(QVector<double> breaks);
61
74 [[nodiscard]] QVector<double> computeBreaks(const QVector<double> &samples) const;
75
81 [[nodiscard]] int binFor(double value, const QVector<double> &breaks) const;
82
83 [[nodiscard]] QJsonObject toJson() const;
84 static IntervalBinner fromJson(const QJsonObject &j);
85
86private:
88 int m_nBins = 5;
89 QVector<double> m_manualBreaks;
90};
91
92} // namespace OpenSWMM::Render
93
94#endif // OPENSWMM_RENDER_INTERVALBINNER_H
Computes break values + maps a value to a bin index.
Definition intervalbinner.h:49
QVector< double > computeBreaks(const QVector< double > &samples) const
Computes (binCount-1) interior break values from a sample of finite numeric values,...
Definition intervalbinner.cpp:204
void setBinCount(int n)
Definition intervalbinner.h:57
int binFor(double value, const QVector< double > &breaks) const
Maps one value to its 0-based bin index, given the interior breaks previously returned by computeBrea...
Definition intervalbinner.cpp:256
int binCount() const
Definition intervalbinner.h:56
static IntervalBinner fromJson(const QJsonObject &j)
Definition intervalbinner.cpp:282
QJsonObject toJson() const
Definition intervalbinner.cpp:271
const QVector< double > & manualBreaks() const
Definition intervalbinner.h:59
void setMethod(BinMethod m)
Definition intervalbinner.h:54
BinMethod method() const
Definition intervalbinner.h:53
void setManualBreaks(QVector< double > breaks)
Definition intervalbinner.cpp:198
MaskMode m
Definition maskspec.cpp:18
std::size_t n
Definition mesh2dresultsexport.cpp:426
Definition gisrasterlayer.h:40
BinMethod
How break values are computed from a sample set.
Definition intervalbinner.h:33