comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 721:7298d58a1f5a

Generate facets for "Abflusskurven am Pegel". Not working by now. :-/ flys-artifacts/trunk@2198 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 22 Jun 2011 09:19:16 +0000
parents 2f25ca828efd
children 8900966ad945
comparison
equal deleted inserted replaced
720:d60cc6453d45 721:7298d58a1f5a
1 package de.intevation.flys.artifacts; 1 package de.intevation.flys.artifacts;
2 2
3 import java.util.Arrays;
3 import java.util.ArrayList; 4 import java.util.ArrayList;
4 import java.util.HashSet; 5 import java.util.HashSet;
5 import java.util.List; 6 import java.util.List;
6 import java.util.Map; 7 import java.util.Map;
7 import java.util.Set; 8 import java.util.Set;
445 446
446 447
447 /** 448 /**
448 * Returns the data that is used to create discharge curves. 449 * Returns the data that is used to create discharge curves.
449 * 450 *
450 * @return a map where the key is the name of the gauge and a double[][] 451 */
451 * which are the values. 452 public CalculationResult getDischargeCurveData() {
452 */ 453
453 public Map<String, double[][]> getDischargeCurveData() { 454 River river = getRiver();
454 River river = getRiver(); 455 if (river == null) {
455 List<Gauge> gauges = getGauges(); 456 return error(new WQKms[0], "no river found");
456 457 }
457 if (gauges == null) { 458
458 logger.warn("No gauges found for the current kilometer range."); 459 double [] distance = getDistance();
459 return null; 460
460 } 461 if (distance == null) {
461 462 return error(new WQKms[0], "no range found");
462 int num = gauges.size(); 463 }
463 464
464 logger.debug("Found " + num + " gauges."); 465 List<Gauge> gauges = river.determineGauges(distance[0], distance[1]);
465 466
466 String[] gaugeNames = new String[num]; 467 if (gauges.isEmpty()) {
467 468 return error(new WQKms[0], "no gauges found");
468 for (int i = 0; i < num; i++) { 469 }
469 gaugeNames[i] = gauges.get(i).getName(); 470
470 } 471 String [] names = new String[gauges.size()];
471 472
472 DischargeTables dt = new DischargeTables(river.getName(), gaugeNames); 473 for (int i = 0; i < names.length; ++i) {
473 474 names[i] = gauges.get(i).getName();
474 return dt.getValues(100d); 475 }
476
477 DischargeTables dt = new DischargeTables(river.getName(), names);
478
479 Map<String, double [][]> map = dt.getValues(100d);
480
481 ArrayList<WQKms> res = new ArrayList<WQKms>();
482
483 for (Gauge gauge: gauges) {
484 String name = gauge.getName();
485 double [][] values = map.get(name);
486 if (values == null) {
487 continue;
488 }
489 double [] kms = new double[values[0].length];
490 Arrays.fill(kms, gauge.getStation().doubleValue());
491 res.add(new WQKms(values[1], values[0], kms, name));
492 }
493
494 return new CalculationResult(
495 res.toArray(new WQKms[res.size()]),
496 new Calculation());
475 } 497 }
476 498
477 499
478 /** 500 /**
479 * Returns the data that is computed by a discharge curve computation. 501 * Returns the data that is computed by a discharge curve computation.

http://dive4elements.wald.intevation.org