Mercurial > dive4elements > river
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. |