Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java @ 6533:30c6da3bfc86
In analogy to w values allow q values to be calculated at the
correct km in fix settings (bug spotted while working on issue1370).
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 03 Jul 2013 09:34:02 +0200 |
parents | cf3065a17057 |
children | ed61ffc0687e |
comparison
equal
deleted
inserted
replaced
6532:cf3065a17057 | 6533:30c6da3bfc86 |
---|---|
371 | 371 |
372 /** | 372 /** |
373 * Get a list of "Q" main values. | 373 * Get a list of "Q" main values. |
374 * @return list of Q main values. | 374 * @return list of Q main values. |
375 */ | 375 */ |
376 public List<NamedDouble> getMainValuesQ(double[] kms) { | |
377 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); | |
378 boolean atGauge = false; | |
379 Gauge gauge = getGauge(kms[0]); | |
380 WstValueTable interpolator = WstValueTableFactory.getTable(RiverUtils.getRiver(this)); | |
381 Calculation c = new Calculation(); | |
382 double w_out[] = {0.0f}; | |
383 double q_out[] = {0.0f}; | |
384 if (gauge != null) { | |
385 double gaugeStation = gauge.getStation().doubleValue(); | |
386 atGauge = Math.abs(kms[0] - gaugeStation) < 1e-4; | |
387 List<MainValue> orig = gauge.getMainValues(); | |
388 for (MainValue mv : orig) { | |
389 if (mv.getMainValue().getType().getName().equals("Q")) { | |
390 if (atGauge) { | |
391 q_out[0] = mv.getValue().doubleValue(); | |
392 } | |
393 else { | |
394 interpolator.interpolate(mv.getValue().doubleValue(), | |
395 gaugeStation, kms, w_out, q_out, c); | |
396 } | |
397 filteredList.add(new NamedDouble( | |
398 mv.getMainValue().getName(), | |
399 q_out[0] | |
400 )); | |
401 } | |
402 } | |
403 } | |
404 return filteredList; | |
405 } | |
406 | |
407 /** | |
408 * Get a list of "Q" main values. | |
409 * @return list of Q main values. | |
410 */ | |
376 public List<NamedDouble> getMainValuesQ(boolean atGauge) { | 411 public List<NamedDouble> getMainValuesQ(boolean atGauge) { |
377 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); | 412 List<NamedDouble> filteredList = new ArrayList<NamedDouble>(); |
378 Gauge gauge = getGauge(); | 413 Gauge gauge = getGauge(); |
379 WstValueTable interpolator = WstValueTableFactory.getTable(RiverUtils.getRiver(this)); | 414 WstValueTable interpolator = WstValueTableFactory.getTable(RiverUtils.getRiver(this)); |
380 Calculation c = new Calculation(); | 415 Calculation c = new Calculation(); |
381 double w_out[] = {0.0f}; | 416 double w_out[] = {0.0f}; |
382 double q_out[] = {0.0f}; | 417 double q_out[] = {0.0f}; |
383 double kms[] = {getLocation()}; | 418 double kms[] = {getLocation()}; |
384 double gaugeStation = gauge.getStation().doubleValue(); | |
385 if (gauge != null) { | 419 if (gauge != null) { |
420 double gaugeStation = gauge.getStation().doubleValue(); | |
386 List<MainValue> orig = gauge.getMainValues(); | 421 List<MainValue> orig = gauge.getMainValues(); |
387 for (MainValue mv : orig) { | 422 for (MainValue mv : orig) { |
388 if (mv.getMainValue().getType().getName().equals("Q")) { | 423 if (mv.getMainValue().getType().getName().equals("Q")) { |
389 if (atGauge) { | 424 if (atGauge) { |
390 q_out[0] = mv.getValue().doubleValue(); | 425 q_out[0] = mv.getValue().doubleValue(); |