Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java @ 1957:3b08b8aacfb0
Fix flys/issue423, do not interpolate main values at gauge.
flys-artifacts/trunk@3357 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 06 Dec 2011 08:26:24 +0000 |
parents | 7e7522c9e663 |
children | 024d986b4f5b |
comparison
equal
deleted
inserted
replaced
1956:a5f87f8dbe57 | 1957:3b08b8aacfb0 |
---|---|
81 Facet qfacet1 = new MainValuesQFacet( | 81 Facet qfacet1 = new MainValuesQFacet( |
82 COMPUTED_DISCHARGE_MAINVALUES_Q, | 82 COMPUTED_DISCHARGE_MAINVALUES_Q, |
83 Resources.getMsg( | 83 Resources.getMsg( |
84 callMeta, | 84 callMeta, |
85 "facet.discharge_curves.mainvalues.q", | 85 "facet.discharge_curves.mainvalues.q", |
86 "facet.discharge_curves.mainvalues.q")); | 86 "facet.discharge_curves.mainvalues.q"), |
87 false); | |
87 Facet qfacet2 = new MainValuesQFacet( | 88 Facet qfacet2 = new MainValuesQFacet( |
88 MAINVALUES_Q, | 89 MAINVALUES_Q, |
89 Resources.getMsg( | 90 Resources.getMsg( |
90 callMeta, | 91 callMeta, |
91 "facet.discharge_curves.mainvalues.q", | 92 "facet.discharge_curves.mainvalues.q", |
92 "facet.discharge_curves.mainvalues.q")); | 93 "facet.discharge_curves.mainvalues.q"), |
94 true); | |
93 Facet wfacet1 = new MainValuesWFacet( | 95 Facet wfacet1 = new MainValuesWFacet( |
94 COMPUTED_DISCHARGE_MAINVALUES_W, | 96 COMPUTED_DISCHARGE_MAINVALUES_W, |
95 Resources.getMsg( | 97 Resources.getMsg( |
96 callMeta, | 98 callMeta, |
97 "facet.discharge_curves.mainvalues.w", | 99 "facet.discharge_curves.mainvalues.w", |
98 "facet.discharge_curves.mainvalues.w")); | 100 "facet.discharge_curves.mainvalues.w"), |
101 false); | |
99 Facet wfacet2 = new MainValuesWFacet( | 102 Facet wfacet2 = new MainValuesWFacet( |
100 MAINVALUES_W, | 103 MAINVALUES_W, |
101 Resources.getMsg( | 104 Resources.getMsg( |
102 callMeta, | 105 callMeta, |
103 "facet.discharge_curves.mainvalues.w", | 106 "facet.discharge_curves.mainvalues.w", |
104 "facet.discharge_curves.mainvalues.w")); | 107 "facet.discharge_curves.mainvalues.w"), |
108 true); | |
105 | 109 |
106 List<Facet> fs = new ArrayList<Facet>(); | 110 List<Facet> fs = new ArrayList<Facet>(); |
107 fs.add(qfacet1); | 111 fs.add(qfacet1); |
108 fs.add(qfacet2); | 112 fs.add(qfacet2); |
109 fs.add(wfacet1); | 113 fs.add(wfacet1); |
231 | 235 |
232 /** | 236 /** |
233 * Get a list of "Q" main values. | 237 * Get a list of "Q" main values. |
234 * @return list of Q main values. | 238 * @return list of Q main values. |
235 */ | 239 */ |
236 public List<NamedDouble> getMainValuesQ() { | 240 public List<NamedDouble> getMainValuesQ(boolean atGauge) { |
237 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); | 241 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); |
238 Gauge gauge = getGauge(); | 242 Gauge gauge = getGauge(); |
239 WstValueTable interpolator = WstValueTableFactory.getTable(FLYSUtils.getRiver(this)); | 243 WstValueTable interpolator = WstValueTableFactory.getTable(FLYSUtils.getRiver(this)); |
240 Calculation c = new Calculation(); | 244 Calculation c = new Calculation(); |
241 double w_out[] = {0.0f}; | 245 double w_out[] = {0.0f}; |
244 double gaugeStation = gauge.getStation().doubleValue(); | 248 double gaugeStation = gauge.getStation().doubleValue(); |
245 if (gauge != null) { | 249 if (gauge != null) { |
246 List<MainValue> orig = gauge.getMainValues(); | 250 List<MainValue> orig = gauge.getMainValues(); |
247 for (MainValue mv : orig) { | 251 for (MainValue mv : orig) { |
248 if (mv.getMainValue().getType().getName().equals("Q")) { | 252 if (mv.getMainValue().getType().getName().equals("Q")) { |
249 interpolator.interpolate(mv.getValue().doubleValue(), | 253 if (atGauge) { |
254 q_out[0] = mv.getValue().doubleValue(); | |
255 } | |
256 else { | |
257 interpolator.interpolate(mv.getValue().doubleValue(), | |
250 gaugeStation, kms, w_out, q_out, c); | 258 gaugeStation, kms, w_out, q_out, c); |
259 } | |
251 filteredList.add(new NamedDouble( | 260 filteredList.add(new NamedDouble( |
252 mv.getMainValue().getName(), | 261 mv.getMainValue().getName(), |
253 q_out[0] | 262 q_out[0] |
254 )); | 263 )); |
255 } | 264 } |
259 } | 268 } |
260 | 269 |
261 | 270 |
262 /** | 271 /** |
263 * Get a list of "W" main values. | 272 * Get a list of "W" main values. |
273 * @param atGauge if true, do not interpolate | |
264 * @return list of W main values. | 274 * @return list of W main values. |
265 */ | 275 */ |
266 public List<NamedDouble> getMainValuesW() { | 276 public List<NamedDouble> getMainValuesW(boolean atGauge) { |
267 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); | 277 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); |
268 Gauge gauge = getGauge(); | 278 Gauge gauge = getGauge(); |
269 WstValueTable interpolator = WstValueTableFactory.getTable(FLYSUtils.getRiver(this)); | 279 WstValueTable interpolator = WstValueTableFactory.getTable(FLYSUtils.getRiver(this)); |
270 Calculation c = new Calculation(); | 280 Calculation c = new Calculation(); |
271 | 281 |
274 double q_out[] = {0.0f}; | 284 double q_out[] = {0.0f}; |
275 double kms[] = {getLocation()}; | 285 double kms[] = {getLocation()}; |
276 if (gauge != null) { | 286 if (gauge != null) { |
277 List<MainValue> orig = gauge.getMainValues(); | 287 List<MainValue> orig = gauge.getMainValues(); |
278 for (MainValue mv : orig) { | 288 for (MainValue mv : orig) { |
289 if (atGauge) { | |
290 if (mv.getMainValue().getType().getName().equals("W")) { | |
291 filteredList.add(new NamedDouble(mv.getMainValue().getName(), | |
292 mv.getValue().doubleValue())); | |
293 | |
294 } | |
295 } else | |
279 // We cannot interpolate the W values, so derive them | 296 // We cannot interpolate the W values, so derive them |
280 // from given Q values. | 297 // from given Q values. |
281 if (mv.getMainValue().getType().getName().equals("Q")) { | 298 if (mv.getMainValue().getType().getName().equals("Q")) { |
282 interpolator.interpolate(mv.getValue().doubleValue(), | 299 interpolator.interpolate(mv.getValue().doubleValue(), |
283 gaugeStation, kms, w_out, q_out, c); | 300 gaugeStation, kms, w_out, q_out, c); |