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
raingageassignment.h
Go to the documentation of this file.
1
33#ifndef OPENSWMMVIS_ASSIGNMENT_RAINGAGEASSIGNMENT_H
34#define OPENSWMMVIS_ASSIGNMENT_RAINGAGEASSIGNMENT_H
35
36#include "core/gageblend.h"
37
38#include <QMap>
39#include <QPointF>
40#include <QSet>
41#include <QString>
42#include <QStringList>
43#include <QVector>
44
45#include <atomic>
46
47class MapCanvas;
48class QUndoCommand;
49class SWMMModelLayer;
50
52{
53
54enum class Method { Nearest, Interpolated };
55
56struct Options {
58 bool laplace = false;
59 double tolerance = 0.01;
60 bool subcatchments = true;
61 bool rdii = false;
62 bool selectedOnly = false;
64 QStringList selectedNodes;
65};
66
68struct GageSite {
69 int index = -1;
70 QString name;
71 QPointF pos;
72};
73
75 QString name;
76 QString oldGage;
77 QVector<QPointF> ring;
78};
79
81struct RdiiInput {
82 QString node;
83 QString group;
84 double area = 0.0;
85 QPointF pos;
86 bool inScope = true;
87};
88
90struct UhGroup {
91 struct Row {
92 int month = -1, response = 0;
93 double r = 0, t = 0, k = 0, dmax = 0, drecov = 0, dinit = 0;
94 };
95 struct Decay {
96 int response = 0;
97 double kDep = 0, k0 = 0, kT = 0, tRef = 0, thetaRec = 0, tFreeze = 0;
98 int snowOn = 0;
99 double snowT = 0, snowDdf = 0;
100 };
101 QString gage;
102 QVector<Row> rows;
103 QVector<Decay> decay;
104};
105
106struct Input {
108 QVector<GageSite> gages;
109 QStringList unlocated;
110 QStringList coincident;
111 QVector<SubcatchInput> subcatchments;
112 QVector<RdiiInput> rdii;
113 QMap<QString, UhGroup> groups;
114 QVector<GageBlend::SourceGage> sources;
115 double scfMin = 1.0, scfMax = 1.0;
118 QMap<QString, QStringList> existingClaims;
119 QSet<QString> gageNames;
120 QString error;
121};
122
123struct RowPlan {
124 enum class Kind { Subcatchment, Rdii };
126 QString object;
127 QString oldGage;
128 QString newGage;
129 QString oldGroup;
130 QString newGroup;
131 QString detail;
132 bool changed = false;
133};
134
136 QString gageName;
137 QString seriesName;
138 QString key;
139 QVector<GageBlend::SeriesPoint> points;
140 qint64 intervalSec = 0;
141 double snowFactor = 1.0;
142 double relError = 0.0;
143 QStringList members;
144 bool isNew = false;
145 bool isUpdate = false;
146};
147
149struct NewGroup {
150 QString name;
151 QString source;
152 QString gage;
153};
154
155struct Plan {
156 QVector<RowPlan> rows;
157 QVector<GeneratedGage> generated;
158 QStringList staleGages;
159 QMap<QString, QString> groupGages;
160 QVector<NewGroup> newGroups;
161 QStringList warnings;
162 QString error;
163 QPointF parkAt;
164 int scanned = 0;
165 int skipped = 0;
166 int changed = 0;
167 int splitGroups = 0;
168};
169
171struct Progress {
172 std::atomic<int> done{0};
173 std::atomic<int> total{0};
174 std::atomic<bool> cancel{false};
175};
176
182[[nodiscard]] QVector<GageSite> eligibleGages(SWMMModelLayer *layer, QStringList *unlocated,
183 QStringList *coincident);
184
190[[nodiscard]] Input gatherInput(SWMMModelLayer *layer, const Options &options);
191
198[[nodiscard]] Plan computePlan(const Input &input, Progress *progress = nullptr);
199
209[[nodiscard]] QUndoCommand *makeApplyCommand(SWMMModelLayer *layer, MapCanvas *canvas,
210 const Plan &plan, const QString &text);
211
212} // namespace openswmmvis::assignment::raingage
213
214#endif // OPENSWMMVIS_ASSIGNMENT_RAINGAGEASSIGNMENT_H
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:70
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:137
Volume-conserving weighted blend of rain-gage time series.
Definition raingageassignment.h:52
Method
Definition raingageassignment.h:54
QUndoCommand * makeApplyCommand(SWMMModelLayer *layer, MapCanvas *canvas, const Plan &plan, const QString &text)
Step 3 (GUI thread). The returned command has NOT been run: push it onto an undo stack (which runs it...
Definition raingageassignment.cpp:1169
Input gatherInput(SWMMModelLayer *layer, const Options &options)
Step 1 (GUI thread). Also refreshes rain files, as before. *.
Definition raingageassignment.cpp:494
Plan computePlan(const Input &input, Progress *progress=nullptr)
Step 2 (any thread). progress may be null. A cancelled run returns a plan whose error says so....
Definition raingageassignment.cpp:1106
QVector< GageSite > eligibleGages(SWMMModelLayer *layer, QStringList *unlocated, QStringList *coincident)
Located, distinct gages; fills unlocated / coincident. *.
Definition raingageassignment.cpp:453
const ConstraintAuditOptions & options
Definition constraintaudit.cpp:34
QString text
Definition queryparser.cpp:54
std::ifstream input
Definition smsio.cpp:21
A located, distinct rain gage usable as a site.
Definition raingageassignment.h:68
QPointF pos
Engine coordinate, never the display cache.
Definition raingageassignment.h:71
int index
Engine gage index.
Definition raingageassignment.h:69
QString name
Definition raingageassignment.h:70
Definition raingageassignment.h:135
bool isUpdate
Definition raingageassignment.h:145
qint64 intervalSec
Definition raingageassignment.h:140
QString gageName
Definition raingageassignment.h:136
double relError
Definition raingageassignment.h:142
QVector< GageBlend::SeriesPoint > points
Definition raingageassignment.h:139
bool isNew
Definition raingageassignment.h:144
QString seriesName
Definition raingageassignment.h:137
QStringList members
Sorted claim members.
Definition raingageassignment.h:143
QString key
Canonical weight key.
Definition raingageassignment.h:138
double snowFactor
Definition raingageassignment.h:141
Definition raingageassignment.h:106
QMap< QString, QStringList > existingClaims
Definition raingageassignment.h:118
QVector< SubcatchInput > subcatchments
Definition raingageassignment.h:111
QVector< GageSite > gages
Definition raingageassignment.h:108
QMap< QString, UhGroup > groups
Every group in the model.
Definition raingageassignment.h:113
QString error
Non-empty aborts the run.
Definition raingageassignment.h:120
QVector< RdiiInput > rdii
Definition raingageassignment.h:112
QStringList coincident
Duplicates — excluded.
Definition raingageassignment.h:110
QVector< GageBlend::SourceGage > sources
Interpolated only; per gage.
Definition raingageassignment.h:114
QSet< QString > gageNames
Every gage in the model.
Definition raingageassignment.h:119
QStringList unlocated
Gages at (0,0) — excluded.
Definition raingageassignment.h:109
double scfMax
Definition raingageassignment.h:115
double scfMin
Definition raingageassignment.h:115
Options options
Definition raingageassignment.h:107
A unit-hydrograph group to create as a copy of source.
Definition raingageassignment.h:149
QString name
Definition raingageassignment.h:150
QString gage
Definition raingageassignment.h:152
QString source
Definition raingageassignment.h:151
Definition raingageassignment.h:56
double tolerance
Interpolated: cluster agreement (fraction).
Definition raingageassignment.h:59
bool rdii
Assign RDII unit-hydrograph group gages.
Definition raingageassignment.h:61
QStringList selectedNodes
RDII scope when selectedOnly.
Definition raingageassignment.h:64
QStringList selectedSubcatchments
Definition raingageassignment.h:63
bool subcatchments
Assign subcatchment gages.
Definition raingageassignment.h:60
Method method
Definition raingageassignment.h:57
bool selectedOnly
Restrict to the names below.
Definition raingageassignment.h:62
bool laplace
Interpolated: Laplace instead of Sibson.
Definition raingageassignment.h:58
Definition raingageassignment.h:155
QStringList staleGages
Generated gages now unused.
Definition raingageassignment.h:158
int changed
Definition raingageassignment.h:166
QStringList warnings
Definition raingageassignment.h:161
QVector< GeneratedGage > generated
Definition raingageassignment.h:157
int splitGroups
Definition raingageassignment.h:167
QVector< RowPlan > rows
Definition raingageassignment.h:156
QMap< QString, QString > groupGages
Existing group -> new gage (changes only).
Definition raingageassignment.h:159
QString error
Non-empty aborts everything.
Definition raingageassignment.h:162
int scanned
Definition raingageassignment.h:164
QPointF parkAt
Where generated gages are placed.
Definition raingageassignment.h:163
QVector< NewGroup > newGroups
Definition raingageassignment.h:160
int skipped
Definition raingageassignment.h:165
Shared progress / cancellation for computePlan().
Definition raingageassignment.h:171
std::atomic< bool > cancel
Definition raingageassignment.h:174
std::atomic< int > total
Definition raingageassignment.h:173
std::atomic< int > done
Definition raingageassignment.h:172
One [RDII] entry.
Definition raingageassignment.h:81
double area
Definition raingageassignment.h:84
QString node
Definition raingageassignment.h:82
bool inScope
False: kept on its group's current gage.
Definition raingageassignment.h:86
QString group
Definition raingageassignment.h:83
QPointF pos
Definition raingageassignment.h:85
Definition raingageassignment.h:123
QString newGroup
RDII only.
Definition raingageassignment.h:130
QString oldGroup
RDII only.
Definition raingageassignment.h:129
QString oldGage
Definition raingageassignment.h:127
Kind
Definition raingageassignment.h:124
bool changed
Definition raingageassignment.h:132
QString object
Subcatchment or node name.
Definition raingageassignment.h:126
QString newGage
Definition raingageassignment.h:128
Kind kind
Definition raingageassignment.h:125
QString detail
Definition raingageassignment.h:131
Definition raingageassignment.h:74
QString name
Definition raingageassignment.h:75
QVector< QPointF > ring
Empty when the subcatchment has no polygon.
Definition raingageassignment.h:77
QString oldGage
Definition raingageassignment.h:76
Definition raingageassignment.h:95
double kT
Definition raingageassignment.h:97
double kDep
Definition raingageassignment.h:97
int snowOn
Definition raingageassignment.h:98
double tRef
Definition raingageassignment.h:97
double snowDdf
Definition raingageassignment.h:99
double k0
Definition raingageassignment.h:97
double tFreeze
Definition raingageassignment.h:97
double snowT
Definition raingageassignment.h:99
double thetaRec
Definition raingageassignment.h:97
int response
Definition raingageassignment.h:96
Definition raingageassignment.h:91
double t
Definition raingageassignment.h:93
int month
Definition raingageassignment.h:92
double k
Definition raingageassignment.h:93
double dmax
Definition raingageassignment.h:93
double dinit
Definition raingageassignment.h:93
double r
Definition raingageassignment.h:93
int response
Definition raingageassignment.h:92
double drecov
Definition raingageassignment.h:93
A unit-hydrograph group: its gage and every row a copy needs.
Definition raingageassignment.h:90
QString gage
Definition raingageassignment.h:101
QVector< Decay > decay
Definition raingageassignment.h:103
QVector< Row > rows
Definition raingageassignment.h:102
TraceAnalysisLayer * layer
Definition traceanalysislayer.cpp:162
const ExportProgress * progress
Definition vectorexport.cpp:211