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();

http://dive4elements.wald.intevation.org